SIGN IN SIGN UP

Abstract SbqNode in preparation for adding a labeled variant (#203)

This is a pure refactoring change to introduce a layer of abstraction
around SBQ nodes so that we can introduce a labeled variant in a coming
PR.

The basic idea is for `SbqNode` to become an enum wrapper class around
the concrete implementations, currently just `ClassicSbqNode`. Since
`SbqNode` has a bunch of derived classes and traits, I had to introduce
wrappers for those too, in addition to tweaking some abstractions. (It
gets a little ugly, and I'm open to suggestions to find ways to
simplify. I did experiment with an alternate approach, which was to add
the SBQ node type as a parameter in `SbqSpeedupStorage`, but this turned
out to be equally messy, due to the same plethora of derived traits and
classes associated with `SbqNode`.)

Test strategy: existing unit tests.  No new functionality added.
T
tjgreen42 committed
0763824ed37bbb9f53262388ef15ec622a16512b
Parent: 8972433
Committed by GitHub <noreply@github.com> on 3/7/2025, 1:18:14 AM