DevTools named hook parsing logic currently matches AST nodes using the original line number:
https://github.com/facebook/react/blob/ed6c091fe961a3b95e956ebcefe8f152177b1fb7/packages/react-devtools-extensions/src/parseHookNames.js#L341-L346

But this may not be sufficient, as mentioned in comment https://github.com/facebook/react/pull/21641#discussion_r662951987:
> Are we assuming that a line number is sufficient to identify a hook call? Seems like that assumption breaks down in edge cases:
>
> 1. Minified code (either without a source map, or a bundle *built* from pre-minified inputs) can have multiple hooks on one line.
> 2. Some code might be authored with quirky formatting, i.e. not with a typical Prettier / ESLint setup.
type HookSourceData = {|
  
  hookSource: HookSource,
  
  originalSourceAST: AST | null,
  
  
  originalSourceCode: string | null,
  
  originalSourceURL: string | null,
  
  runtimeSourceCode: string | null,
  
  runtimeSourceURL: string,
  
  sourceConsumer: SourceConsumer | null,
  
  
  sourceMapURL: string | null,
|};
type CachedRuntimeCodeMetadata = {|
  sourceConsumer: SourceConsumer | null,
|};
const runtimeURLToMetadataCache: LRUCache<
  string,
  CachedRuntimeCodeMetadata,
> = new LRU({
  max: 50,
  dispose: (runtimeSourceURL: string, metadata: CachedRuntimeCodeMetadata) => {
    if (__DEBUG__) {