code: func (lcs *lcs) IndexPairsContext(ctx context.Context) (pairs []IndexPair, err error) {
  	if lcs.indexPairs != nil {
  		return lcs.indexPairs, nil
  	}
  
  	table, err := lcs.TableContext(ctx)
  	if err != nil {
  		return nil, err
  	}
  
  	pairs = make([]IndexPair, table[len(table)-1][len(table[0])-1])
  
  	for x, y := len(lcs.left), len(lcs.right); x > 0 && y > 0; {
  		if reflect.DeepEqual(lcs.left[x-1], lcs.right[y-1]) {
  			pairs[table[x][y]-1] = IndexPair{Left: x - 1, Right: y - 1}
  			x--
  			y--
  		} else {
  			if table[x-1][y] >= table[x][y-1] {
  				x--
  			} else {
  				y--
  			}
  		}
  	}
  
  	lcs.indexPairs = pairs
  
  	return pairs, nil
  }
docs: // Table implements Lcs.IndexPairsContext()