private unsafe SharedHeapWalker(
     SharedHeap.AllocationOwnerId allocId,
     SharedHeap.AllocationOwnerId endpointId)
 {
     doWalkEvent       = new AutoResetEvent(false);
     allocationOwnerId = allocId;
     endpointOwnerId   = endpointId;
     match             = new SharedHeap.AllocationMatches(Matches);
     allocationVisitor = new SharedHeap.AllocationVisitor(AllocationVisit);
     endpointVisitor   = new SharedHeap.AllocationVisitor(EndpointVisit);
     Thread.CreateThread(Thread.CurrentProcess,
                         new ThreadStart(Loop)).Start();
 }
 internal static unsafe void Initialize(
     SharedHeap.AllocationOwnerId allocId,
     SharedHeap.AllocationOwnerId endpointId)
 {
     walker = new SharedHeapWalker(allocId, endpointId);
 }