anchor.diff:            end
             else
             begin
  +            // When the smallest node is the one on the immediate right, we will
  +            // connect the parent of the node being removed to the one on the immediate
  +            // right, connect this one to the whole left branch of the one being removed
  +            // and then dealloc the node being removed.
  +            // We can do this connection to the left pointer of the node to the right
  +            // because we know this node doesn't have any tree on its left by definition
               ParentNodePtr^ := Node^.Right;
  +            Assert(Node^.Right^.Left = nil, 'Node^.Right^.Left must be nil');
               Node^.Right^.Left := Node^.Left;
               trieAllocators.DeAlloc(Node);
             end;
  
positive.code:     begin
        ParentNodePtr := @Node^.Next;
        Node := Node^.Next;
      end;
    end;
  end;
  
negative.code:   begin
      ChildIndex := Node^.Base.ChildrenCount;
      inc(Node^.Base.ChildrenCount);
      Assert(Node^.Base.ChildrenCount <= ChildrenPerBucket, 'Node^.Base.ChildrenCount must be equal or lesser then ChildrenPerBucket');
      SetChildIndex(PTrieBranchNode(Node), GetBitFieldIndex(Hash, TrieDepth - 1), ChildIndex);
      ReallocMem(Node^.Children, Node^.Base.ChildrenCount * sizeof(Pointer));
      PHashTrieNodeArray(Node^.Children)^[ChildIndex] := nil;
  