@NotNull
  @Override
  default List<Pair<TextRange, String>> getDecodedFragments() {
    final ArrayList<Pair<TextRange, String>> result = new ArrayList<>();
    final PyStringLiteralDecoder decoder = new PyStringLiteralDecoder(this);
    for (PsiElement child = getFirstChild(); child != null; child = child.getNextSibling()) {
      final IElementType childType = child.getNode().getElementType();
      final TextRange relChildRange = child.getTextRangeInParent();
      if (PyTokenTypes.FSTRING_TEXT_TOKENS.contains(childType)) {
        result.addAll(decoder.decodeRange(relChildRange));
      }
      else if (childType == PyElementTypes.FSTRING_FRAGMENT) {
        // There shouldn't be any escaping inside interpolated parts
        result.add(Pair.create(relChildRange, child.getText()));
      }
    }
    return result;
  }
@NotNull
  @Override
  default List<Pair<TextRange, String>> getDecodedFragments()