Both Segment types share the same interface, based on `SegmentInterface`, External callers only need to care about the behavior of the following interface as function declarations and corresponding constructor:
In principle, the reusable code logic of growing / sealed is written into the 'SegmentInternalInterface' as far as possible. The different parts of the two classes contain more different parts