docs: def expected_distorted_boundaries(islitlet, csu_bar_slit_center,
                                    borderlist, params, parmodel,
                                    numpts, deg, debugplot=0):
      """Return expected SpectrumTrail instances associated to a given slitlet.
  
      Several SpectrumTrail objects can be computed for the considered
      slitlet. The parameter borderlist is a list of floats, ranging
      from 0 to 1, indicating the spatial location of the spectrum trail
      within the slitlet: 0 means the lower boundary and 1 corresponds
      to the upper bounday. Any value in (0,1) will provide the
      spectrum trail located in between accordingly.
  
      Parameters
      ----------
      islitlet : int
          Number of slitlet.
      csu_bar_slit_center : float
          CSU bar slit center, in mm.
      borderlist : list of floats
          Each float provides the fractional vertical location of the
          spectrum trail relative to the lower boundary. In other words,
          0.0 corresponds to the lower boundary, 1.0 to the upper
          boundary, and any number in the interval (0,1) will be a
          spectral trail in between.
      params : :class:`~lmfit.parameter.Parameters`
          Parameters to be employed in the prediction of the distorted
          boundaries.
      parmodel : str
          Model to be assumed. Allowed values are 'longslit' and
          'multislit'.
      numpts : int
          Number of points in which the X-range interval is subdivided
          before fitting the returned polynomial(s).
      deg : int
          Degree of the fitted polynomial.
      debugplot : int
          Debugging level for messages and plots. For details see
          'numina.array.display.pause_debugplot.py'.
  
      Returns
      -------
      list_spectrails : list of SpectrumTrail objects
          List containing the fitted spectrum trails.
  
      """
  
      c2, c4, ff, slit_gap, slit_height, theta0, x0, y0, y_baseline = \
          return_params(islitlet, csu_bar_slit_center, params, parmodel)
  
      xp = np.linspace(1, EMIR_NAXIS1, numpts)
      slit_dist = (slit_height * 10) + slit_gap
  
      # undistorted (constant) y-coordinate of the lower and upper boundaries
      ybottom = y_baseline * 100 + (islitlet - 1) * slit_dist
      ytop = ybottom + (slit_height * 10)
  
      list_spectrails = []
      for borderval in borderlist:
          yvalue = ybottom + borderval * (ytop - ybottom)
          # undistorted boundary
          yp_value = np.ones(numpts) * yvalue
          # distorted boundary
          xdist, ydist = exvp(xp, yp_value, x0=x0, y0=y0,
                              c2=c2, c4=c4, theta0=theta0, ff=ff)
          spectrail = SpectrumTrail()  # declare SpectrumTrail instance
          spectrail.fit(x=xdist, y=ydist, deg=deg, debugplot=debugplot)
          list_spectrails.append(spectrail)
  
      return list_spectrails