anchor.diff:    Result := nil;
     if ModuleHandle = 0 then
       ModuleHandle := GetModuleHandle(nil);
  -  TMonitor.Enter(GlobalLock);
  -  try
  -    NeedGlobalModules;
  -    Module := GlobalModules.GetModuleFromModuleHandle(ModuleHandle, True);
  -    if Assigned(Module) then
  -      Result := Module.DebugInfo.GetSymbolAddress(UnitName, SymbolName);
  -  finally
  -    TMonitor.Exit(GlobalLock);
  -  end;
  +
  +  NeedGlobalModules;
  +  Module := GlobalModules.GetModuleFromModuleHandle(ModuleHandle, True);
  +  if Assigned(Module) then
  +    Result := Module.DebugInfo.GetSymbolAddress(UnitName, SymbolName);
   end;
   
   function GetNextSymbolAddress(Address: Pointer): Pointer;
  
positive.code:   GlobalModules: TModules = nil;
  
    GlobalLock: TObject = nil;
  
    RegularExpressionsCompiled: Boolean = False;
  
    { Hint Regular expressions for TCustomTxtMapParser parser. }
  
negative.code: end;
  
  function TModules.GetModuleFromModuleHandle(ModuleHandle: THandle; RegisterNoExists: Boolean): TModule;
    function GetModule: TModule;
    var
      I: Integer;
    begin
      for I := 0 to FModulesList.Count - 1 do
      begin
        Result := FModulesList[I];
        if Result.ModuleHandle = ModuleHandle then
          Exit;
      end;
      Result := nil;
    end;
  
  begin
    if ModuleHandle = 0 then
      Exit(nil);
  
    Result := GetModule;
    if Assigned(Result) then
      Exit;
  
    TMonitor.Enter(GlobalLock);
    try
      { Try again => Maybe another thread had already registered the current module. }
      Result := GetModule;
      if Assigned(Result) then
        Exit;
      if RegisterNoExists then
        Result := AddModule(ModuleHandle)
      else
        Result := nil;
    finally
      TMonitor.Exit(GlobalLock);
    end;
  end;
  
  {$ENDREGION 'DebugInfo'}
  