docs: private BlockStatement createFinallyBlockForNewTryCatchStatement(String primaryExcName, String firstResourceIdentifierName) {
          BlockStatement finallyBlock = new BlockStatement();
  
          // primaryExc != null
          BooleanExpression conditionExpression =
                  new BooleanExpression(
                          new BinaryExpression(
                                  new VariableExpression(primaryExcName),
                                  newSymbol(Types.COMPARE_NOT_EQUAL, -1, -1),
                                  new ConstantExpression(null)));
  
          // try-catch statement
          TryCatchStatement newTryCatchStatement =
                  new TryCatchStatement(
                          astBuilder.createBlockStatement(this.createCloseResourceStatement(firstResourceIdentifierName)), // { Identifier?.close(); }
                          EmptyStatement.INSTANCE);
  
  
          String suppressedExcName = this.genSuppressedExcName();
          newTryCatchStatement.addCatch(
                  // catch (Throwable #suppressedExc) { .. }
                  new CatchStatement(
                          new Parameter(ClassHelper.make(Throwable.class), suppressedExcName),
                          astBuilder.createBlockStatement(this.createAddSuppressedStatement(primaryExcName, suppressedExcName)) // #primaryExc.addSuppressed(#suppressedExc);
                  )
          );
  
          // if (#primaryExc != null) { ... }
          IfStatement ifStatement =
                  new IfStatement(
                          conditionExpression,
                          newTryCatchStatement,
                          this.createCloseResourceStatement(firstResourceIdentifierName) // Identifier?.close();
                  );
          astBuilder.appendStatementsToBlockStatement(finallyBlock, ifStatement);
  
          return astBuilder.createBlockStatement(finallyBlock);
      }