/**
   * Return true this ActionLogic implementation is valid for the given scope. Used by {@link
   * AbstractActionLogic#getPriority(liquibase.action.Action, liquibase.Scope)}
   */
  protected boolean supportsScope(Scope scope) {
    Class<? extends Database> requiredDatabase = getRequiredDatabase();
    if (requiredDatabase != null) {
      Database database = scope.getDatabase();
      boolean databaseCorrect =
          database != null && requiredDatabase.isAssignableFrom(database.getClass());

      if (databaseCorrect) {
        Class<? extends DatabaseConnection> requiredConnection = getRequiredConnection();

        if (requiredConnection != null) {
          DatabaseConnection connection = database.getConnection();
          databaseCorrect =
              connection != null && requiredConnection.isAssignableFrom(connection.getClass());
        }
      }
      return databaseCorrect;
    }

    return true;
  }