code: func (a *addr2LinerNM) addrInfo(addr uint64) ([]plugin.Frame, error) {
  	if len(a.m) == 0 || addr < a.m[0].address || addr > a.m[len(a.m)-1].address {
  		return nil, nil
  	}
  
  	// Binary search. Search until low, high are separated by 1.
  	low, high := 0, len(a.m)
  	for low+1 < high {
  		mid := (low + high) / 2
  		v := a.m[mid].address
  		if addr == v {
  			low = mid
  			break
  		} else if addr > v {
  			low = mid
  		} else {
  			high = mid
  		}
  	}
  
  	// Address is between a.m[low] and a.m[high].
  	// Pick low, as it represents [low, high).
  	f := []plugin.Frame{
  		{
  			Func: a.m[low].name,
  		},
  	}
  	return f, nil
  }
docs: // addrInfo returns the stack frame information for a specific program
  // address. It returns nil if the address could not be identified.