The question here is, when does the ```IBoard* board``` get deallocated? What piece code is responsible for deallocating that pointer, the ```BoardDetector``` class? How does the ```BoardDetector``` class ensure that this pointer is not prematurely deallocated?