InterpolationValue CSSImageSliceInterpolationType::maybeConvertNeutral(const InterpolationValue& underlying, ConversionCheckers& conversionCheckers) const
{
    SliceTypes underlyingTypes = UnderlyingSliceTypesChecker::getUnderlyingSliceTypes(underlying);
    conversionCheckers.append(UnderlyingSliceTypesChecker::create(underlyingTypes));
    LengthBox zeroBox(
        Length(0, underlyingTypes.isNumber[SideTop] ? Fixed : Percent),
        Length(0, underlyingTypes.isNumber[SideRight] ? Fixed : Percent),
        Length(0, underlyingTypes.isNumber[SideBottom] ? Fixed : Percent),
        Length(0, underlyingTypes.isNumber[SideLeft] ? Fixed : Percent));
    return convertImageSlice(ImageSlice(zeroBox, underlyingTypes.fill), 1);
}
InterpolationValue
CSSBorderImageLengthBoxInterpolationType::maybeConvertNeutral(
    const InterpolationValue& underlying,
    ConversionCheckers& conversionCheckers) const {
  SideNumbers underlyingSideNumbers =
      UnderlyingSideNumbersChecker::getUnderlyingSideNumbers(underlying);
  conversionCheckers.append(
      UnderlyingSideNumbersChecker::create(underlyingSideNumbers));
  const auto& zero = [&underlyingSideNumbers](size_t index) {
    return underlyingSideNumbers.isNumber[index]
               ? BorderImageLength(0)
               : BorderImageLength(Length(0, Fixed));
  };
  BorderImageLengthBox zeroBox(zero(SideTop), zero(SideRight), zero(SideBottom),
                               zero(SideLeft));
  return convertBorderImageLengthBox(zeroBox, 1);
}