def METHOD_NAME(self, data: list[Datapoint]):
    data_len = len(data)
    if data_len <= 1:
        return []
    unwrapped = np.degrees(np.unwrap([d.phase for d in data]))
    delay_data = []
    for i, d in enumerate(data):
        # TODO: Replace with call to RFTools.groupDelay
        if i == 0:
            phase_change = unwrapped[1] - unwrapped[i]
            freq_change = data[1].freq - d.freq
        elif i == data_len - 1:
            phase_change = unwrapped[-1] - unwrapped[-2]
            freq_change = d.freq - data[-2].freq
        else:
            phase_change = unwrapped[i + 1] - unwrapped[i - 1]
            freq_change = data[i + 1].freq - data[i - 1].freq
        delay = (-phase_change / (freq_change * 360)) * 10e8
        if not self.reflective:
            delay /= 2
        delay_data.append(delay)
    return delay_data