docs: def build(self, limit_states, discretization, steps_per_interval):
          """
          :param limit_states: a sequence of limit states
          :param discretization: continouos fragility discretization parameter
          :param steps_per_interval: steps_per_interval parameter
          :returns: a populated FragilityFunctionList instance
          """
          new = copy.copy(self)
          add_zero = (self.format == 'discrete' and
                      self.nodamage and self.nodamage <= self.imls[0])
          new.imls = build_imls(new, discretization)
          if steps_per_interval > 1:
              new.interp_imls = build_imls(  # passed to classical_damage
                  new, discretization, steps_per_interval)
          for i, ls in enumerate(limit_states):
              data = self.array[i]
              if self.format == 'discrete':
                  if add_zero:
                      new.append(FragilityFunctionDiscrete(
                          ls, [self.nodamage] + self.imls,
                          numpy.concatenate([[0.], data]),
                          self.nodamage))
                  else:
                      new.append(FragilityFunctionDiscrete(
                          ls, self.imls, data, self.nodamage))
              else:  # continuous
                  new.append(FragilityFunctionContinuous(
                      ls, data['mean'], data['stddev']))
          return new