void assign(void ** destiny, void ** source) { HeapNode<void*>* resultDestiny = garbageCollector.findNode(destiny); if(resultDestiny) { garbageCollector.decreaseKey(destiny, resultDestiny->pointedBy - 1); if(resultDestiny->pointedBy == 0) { garbageCollector.extractMin(); } } HeapNode<void*>* resultSource = garbageCollector.findNode(source); if(resultSource) { garbageCollector.increaseKey(resultSource, 1); } destiny = source; }