class RawSQLChange extends AbstractSQLChange {

    private String comment;

    private Boolean rerunnable;
    
    public RawSQLChange() {
    }

    public RawSQLChange(String sql) {
        setSql(sql);
    }

    @Override
    @DatabaseChangeProperty(serializationType = SerializationType.DIRECT_VALUE, exampleValue = "insert into person (name) values ('Bob')", requiredForDatabase = "all")
    public String getSql() {
        return super.getSql();
    }

    @DatabaseChangeProperty(serializationType = SerializationType.NESTED_OBJECT, description = "A brief descriptive inline comment. Not stored in the database",
        exampleValue = "What about Bob?")
    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    @Override
    public String getConfirmationMessage() {
        return "Custom SQL executed";
    }

    @Override
    public String getSerializedObjectNamespace() {
        return STANDARD_CHANGELOG_NAMESPACE;
    }

    @Override
    public void customLoadLogic(ParsedNode parsedNode, ResourceAccessor resourceAccessor) throws ParsedNodeException {
        String nestedSql = StringUtil.trimToNull(parsedNode.getValue(String.class));
        if (nestedSql != null) {
            setSql(nestedSql);
        }
    }

    public boolean isRerunnable() {
        if (rerunnable == null) {
            return false;
        }
        return rerunnable;
    }

    public void setRerunnable(Boolean rerunnable) {<FILL_FUNCTION_BODY>}
}

        if (rerunnable == null) {
            this.rerunnable = false;
        }
        this.rerunnable = rerunnable;
    
<methods>public liquibase.change.ChangeStatus checkStatus(liquibase.database.Database) ,public liquibase.change.CheckSum generateCheckSum() ,public boolean generateRollbackStatementsVolatile(liquibase.database.Database) ,public liquibase.statement.SqlStatement[] generateStatements(liquibase.database.Database) ,public boolean generateStatementsVolatile(liquibase.database.Database) ,public java.lang.String getDbms() ,public java.lang.String getEndDelimiter() ,public java.lang.String getSql() ,public java.lang.Boolean isIgnoreOriginalSplitStatements() ,public java.lang.Boolean isSplitStatements() ,public boolean isSplitStatementsSet() ,public java.lang.Boolean isStripComments() ,public java.io.InputStream openSqlStream() throws java.io.IOException,public void setDbms(java.lang.String) ,public void setEndDelimiter(java.lang.String) ,public void setIgnoreOriginalSplitStatements(java.lang.Boolean) ,public void setOriginalSplitStatements(java.lang.Boolean) ,public void setSplitStatements(java.lang.Boolean) ,public void setSql(java.lang.String) ,public void setStripComments(java.lang.Boolean) ,public boolean supports(liquibase.database.Database) ,public liquibase.exception.ValidationErrors validate(liquibase.database.Database) ,public liquibase.exception.Warnings warn(liquibase.database.Database) <variables>private java.lang.String dbms,protected java.lang.String encoding,private java.lang.String endDelimiter,private java.lang.Boolean ignoreOriginalSplitStatements,private java.lang.Boolean originalSplitStatements,private boolean splitStatements,private boolean splitStatementsSet,private java.lang.String sql,private boolean stripComments