<!--- This environment context section helps us quickly review your PR. 
      Please take a minute to fill-out this information. -->

## Environment
**Liquibase Version**: `4.1.1`

**Liquibase Integration & Version**: Spring Boot

**Database Vendor & Version**: Postgres 12.3

**Operating System Type & Version**: Ubuntu 20.04

## Description
There's a regression after upgrading from `4.1.0` to `4.1.1` that is causing `StackOverflowError` while generating Postgres statement during processing a large SQL file-based changeset.  It seems to be a regression
introduced in #912  while trying to fix [CORE-3379](https://liquibase.jira.com/browse/CORE-3379).

## Steps To Reproduce
Create a changeset:

```xml
<changeSet id="StackOverflowError" author="goostleek">
    <sqlFile path="large.sql" relativeToChangelogFile="true"/>
</changeSet>
```

The `sqlFile` is ~200kb. It's been included in [the file](https://github.com/liquibase/liquibase/blob/2bb6acad174723e770f43411fbeae2a68e2af691/liquibase-core/src/test/resources/liquibase/change/long-statement.sql) in the PR #1508 which introduces a failing unit test presenting the error.

## Actual Behavior
`StackOverflowError` is thrown during SpringBoot application startup while applying the changest.

## Expected/Desired Behavior
The changeset is executed successfully like it was before upgrading to Liquibase 4.1.1.

## Additional Context
See #912, #1508


}
    /**
     * Generates one or more SqlStatements depending on how the SQL should be parsed.
     * If split statements is set to true then the SQL is split and each command is made into a separate SqlStatement.
     * <p></p>
     * If stripping comments is true then any comments are removed before the splitting is executed.
     * The set SQL is passed through the {@link java.sql.Connection#nativeSQL} method if a connection is available.
     */
    @Override
    public SqlStatement[] generateStatements(Database database) {
        List<SqlStatement> returnStatements = new ArrayList<>();
        String sql = StringUtil.trimToNull(getSql());
        if (sql == null) {
            return new SqlStatement[0];
        }
        String processedSQL = normalizeLineEndings(sql);
        if (this instanceof RawSQLChange && ((RawSQLChange) this).isRerunnable()) {
            returnStatements.add(new RawSqlStatement(processedSQL, getEndDelimiter()));
            return returnStatements.toArray(new SqlStatement[returnStatements.size()]);
        }
        for (String statement : StringUtil.processMultiLineSQL(processedSQL, isStripComments(), isSplitStatements(), getEndDelimiter())) {
            if (database instanceof MSSQLDatabase) {
                statement = statement.replaceAll("\\n", "\r\n");
            }
            if (database instanceof PostgresDatabase) {
                statement = statement.replaceAll("(^|[^\\?])\\?(?!\\?)(?=([^']*'[^']*')*[^']*$)", "$1??");
            }
            String escapedStatement = statement;
            try {
                if (database.getConnection() != null) {