Full Code of felipebz/zpa for AI

main 5681ce11ba0e cached
5068 files
3.2 MB
1.2M tokens
474 symbols
1 requests
Download .txt
Showing preview only (4,725K chars total). Download the full file or copy to clipboard to get everything.
Repository: felipebz/zpa
Branch: main
Commit: 5681ce11ba0e
Files: 5068
Total size: 3.2 MB

Directory structure:
gitextract_qvtk4j1w/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── renovate.json
│   └── workflows/
│       └── build.yml
├── .gitignore
├── .gitmodules
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE_HEADER
├── README.md
├── build-logic/
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               └── com/
│                   └── felipebz/
│                       └── zpa/
│                           ├── build-conventions.gradle.kts
│                           ├── jreleaser-conventions.gradle.kts
│                           ├── kotlin-conventions.gradle.kts
│                           ├── license-conventions.gradle.kts
│                           ├── publishing-conventions.gradle.kts
│                           ├── sonarqube-conventions.gradle.kts
│                           └── testing-conventions.gradle.kts
├── build.gradle.kts
├── gradle/
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── plsql-custom-rules/
│   ├── README.md
│   ├── build.gradle.kts
│   ├── gradle/
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── pom.xml
│   ├── settings.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── company/
│       │   │           └── plsql/
│       │   │               ├── ForbiddenDmlCheck.java
│       │   │               ├── PlSqlCustomRulesDefinition.java
│       │   │               └── PlSqlCustomRulesPlugin.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── extensions.idx
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── company/
│           │           └── plsql/
│           │               ├── ForbiddenDmlCheckTest.java
│           │               ├── PlSqlCustomRulesDefinitionTest.java
│           │               └── PlSqlCustomRulesPluginTest.java
│           └── resources/
│               └── forbidden-dml.sql
├── settings.gradle.kts
├── sonar-zpa-plugin/
│   ├── build.gradle.kts
│   └── src/
│       ├── integrationTest/
│       │   ├── kotlin/
│       │   │   └── com/
│       │   │       └── felipebz/
│       │   │           └── zpa/
│       │   │               └── it/
│       │   │                   ├── IssueTest.kt
│       │   │                   ├── MetricsTest.kt
│       │   │                   └── Tests.kt
│       │   └── resources/
│       │       ├── com/
│       │       │   └── felipebz/
│       │       │       └── zpa/
│       │       │           └── it/
│       │       │               ├── empty-profile.xml
│       │       │               └── it-profile.xml
│       │       └── projects/
│       │           └── metrics/
│       │               ├── coverage.xml
│       │               ├── src/
│       │               │   ├── betwnstr.sql
│       │               │   ├── custom_rule.sql
│       │               │   ├── source1.sql
│       │               │   └── source2.sql
│       │               ├── test/
│       │               │   └── test_betwnstr.sql
│       │               └── test_results.xml
│       ├── main/
│       │   └── kotlin/
│       │       └── com/
│       │           └── felipebz/
│       │               └── zpa/
│       │                   ├── PlSql.kt
│       │                   ├── PlSqlPlugin.kt
│       │                   ├── PlSqlProfile.kt
│       │                   ├── PlSqlRuleRepository.kt
│       │                   ├── PlSqlSquidSensor.kt
│       │                   ├── SonarQubeUtils.kt
│       │                   ├── api/
│       │                   │   └── CustomPlSqlRulesDefinition.kt
│       │                   ├── highlight/
│       │                   │   └── PlSqlHighlighterVisitor.kt
│       │                   ├── log/
│       │                   │   ├── SonarQubeLogger.kt
│       │                   │   └── SonarQubeLoggers.kt
│       │                   ├── metrics/
│       │                   │   └── CpdVisitor.kt
│       │                   ├── rules/
│       │                   │   ├── SonarQubeActiveRuleAdapter.kt
│       │                   │   ├── SonarQubeActiveRulesAdapter.kt
│       │                   │   ├── SonarQubeRepositoryAdapter.kt
│       │                   │   ├── SonarQubeRuleAdapter.kt
│       │                   │   ├── SonarQubeRuleKeyAdapter.kt
│       │                   │   ├── SonarQubeRuleMetadataLoader.kt
│       │                   │   └── SonarQubeRuleParamAdapter.kt
│       │                   ├── squid/
│       │                   │   ├── PlSqlAstScanner.kt
│       │                   │   └── SonarQubePlSqlFile.kt
│       │                   ├── symbols/
│       │                   │   ├── MappedObject.kt
│       │                   │   ├── ObjectLocator.kt
│       │                   │   └── SonarQubeSymbolTable.kt
│       │                   └── utplsql/
│       │                       ├── AbstractReportImporter.kt
│       │                       ├── CoverageReport.kt
│       │                       ├── CoverageResultImporter.kt
│       │                       ├── TestExecutionReport.kt
│       │                       ├── TestResultImporter.kt
│       │                       └── UtPlSqlSensor.kt
│       └── test/
│           ├── kotlin/
│           │   └── com/
│           │       └── felipebz/
│           │           └── zpa/
│           │               ├── CustomAnnotationBasedRulesDefinitionTest.kt
│           │               ├── PlSqlChecksTest.kt
│           │               ├── PlSqlPluginTest.kt
│           │               ├── PlSqlProfileTest.kt
│           │               ├── PlSqlSquidSensorTest.kt
│           │               ├── PlSqlTest.kt
│           │               ├── api/
│           │               │   └── CustomPlSqlRulesDefinitionTest.kt
│           │               ├── highlight/
│           │               │   └── PlSqlHighlighterVisitorTest.kt
│           │               ├── metrics/
│           │               │   └── CpdVisitorTest.kt
│           │               ├── symbols/
│           │               │   └── SonarQubeSymbolTableTest.kt
│           │               └── utplsql/
│           │                   └── UtPlSqlSensorTest.kt
│           └── resources/
│               ├── com/
│               │   └── felipebz/
│               │       └── zpa/
│               │           ├── code.sql
│               │           ├── test.sql
│               │           └── utplsql/
│               │               ├── award_bonus.sql
│               │               ├── betwnstr.sql
│               │               ├── coverage-report-all-uncovered.xml
│               │               ├── coverage-report-with-paths.xml
│               │               ├── coverage-report-without-paths.xml
│               │               ├── test-report-with-paths.xml
│               │               └── test-report-without-paths.xml
│               ├── highlight/
│               │   └── highlight.sql
│               ├── metrics/
│               │   └── cpd.sql
│               └── org/
│                   └── sonar/
│                       └── l10n/
│                           ├── languageKey/
│                           │   └── rules/
│                           │       ├── plsql/
│                           │       │   └── ruleWithExternalInfo.html
│                           │       └── repoKey/
│                           │           └── ruleWithExternalInfo.html
│                           ├── languageKey.properties
│                           └── languageWithoutBundle/
│                               └── empty.txt
├── template/
│   └── changelog.tpl
├── zpa-checks/
│   ├── build.gradle.kts
│   └── src/
│       ├── integrationTest/
│       │   ├── kotlin/
│       │   │   └── com/
│       │   │       └── felipebz/
│       │   │           └── zpa/
│       │   │               └── it/
│       │   │                   ├── InputFile.kt
│       │   │                   ├── OracleDocsExtractor.kt
│       │   │                   └── PlSqlRulingTest.kt
│       │   └── resources/
│       │       ├── expected/
│       │       │   ├── alexandria-plsql-utils/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── ConcatenationWithNullCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── NvlWithNullParameterCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryNullStatementCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── UselessParenthesisCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── antlr-grammars-v4/
│       │       │   │   ├── AddParenthesesInNestedExpressionCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── IdenticalExpressionCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryLikeCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── UselessParenthesisCheck.json
│       │       │   ├── demo0001/
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0002/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0002_2/
│       │       │   │   └── EmptyBlockCheck.json
│       │       │   ├── demo0003/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0004/
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── ReturnOfBooleanExpressionCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0005/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   └── InvalidReferenceToObjectCheck.json
│       │       │   ├── demo0006/
│       │       │   │   └── QueryWithoutExceptionHandlingCheck.json
│       │       │   ├── demo0007/
│       │       │   │   └── InequalityUsageCheck.json
│       │       │   ├── demo0008/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   └── UnusedVariableCheck.json
│       │       │   ├── demo0009/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0010/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0011/
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0012/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0013/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   ├── VariableInitializationWithNullCheck.json
│       │       │   │   └── VariableNameCheck.json
│       │       │   ├── demo0014/
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0016/
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0017/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── DuplicatedValueInInCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   └── UnusedVariableCheck.json
│       │       │   ├── demo0018/
│       │       │   │   └── InvalidReferenceToObjectCheck.json
│       │       │   ├── oracle-database_23/
│       │       │   │   ├── AddParenthesesInNestedExpressionCheck.json
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── ConcatenationWithNullCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IdenticalExpressionCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SameConditionCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── SelectWithRownumAndOrderByCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnhandledUserDefinedExceptionCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryLikeCheck.json
│       │       │   │   ├── UnusedCursorCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   ├── VariableInitializationWithNullCheck.json
│       │       │   │   └── VariableNameCheck.json
│       │       │   ├── pljson/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── ReturnOfBooleanExpressionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── utPLSQL2/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── UnhandledUserDefinedExceptionCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryNullStatementCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   └── utPLSQL3/
│       │       │       ├── AddParenthesesInNestedExpressionCheck.json
│       │       │       ├── CharacterDatatypeUsageCheck.json
│       │       │       ├── CommitRollbackCheck.json
│       │       │       ├── ComparisonWithBooleanCheck.json
│       │       │       ├── ComparisonWithNullCheck.json
│       │       │       ├── ConcatenationWithNullCheck.json
│       │       │       ├── DbmsOutputPutCheck.json
│       │       │       ├── EmptyBlockCheck.json
│       │       │       ├── ExplicitInParameterCheck.json
│       │       │       ├── FunctionWithOutParameterCheck.json
│       │       │       ├── IdenticalExpressionCheck.json
│       │       │       ├── InequalityUsageCheck.json
│       │       │       ├── InsertWithoutColumnsCheck.json
│       │       │       ├── ParsingErrorCheck.json
│       │       │       ├── QueryWithoutExceptionHandlingCheck.json
│       │       │       ├── RaiseStandardExceptionCheck.json
│       │       │       ├── SameBranchCheck.json
│       │       │       ├── SelectAllColumnsCheck.json
│       │       │       ├── ToDateWithoutFormatCheck.json
│       │       │       ├── UnhandledUserDefinedExceptionCheck.json
│       │       │       ├── UnnecessaryAliasInQueryCheck.json
│       │       │       ├── UnnecessaryElseCheck.json
│       │       │       ├── UnnecessaryLikeCheck.json
│       │       │       ├── UnnecessaryNullStatementCheck.json
│       │       │       ├── UnusedParameterCheck.json
│       │       │       ├── UnusedVariableCheck.json
│       │       │       ├── VariableHidingCheck.json
│       │       │       ├── VariableInitializationWithFunctionCallCheck.json
│       │       │       └── VariableInitializationWithNullCheck.json
│       │       └── sources/
│       │           ├── Doag-Forms-extracted/
│       │           │   ├── README.md
│       │           │   ├── demo0001/
│       │           │   │   └── WEBUTIL_DEMO/
│       │           │   │       ├── ABOUT/
│       │           │   │       │   └── ABOUT__ABOUT_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BROWSER/
│       │           │   │       │   ├── BROWSER__APPLET_PARAMS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BROWSER__BROWSER_MESSAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BROWSER__SEPARATE_FRAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BUILTINS/
│       │           │   │       │   ├── BUILTINS__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__GET_TOOL_ENV__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__READ_IMAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BUILTINS__TEXT_IO_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENTINFO/
│       │           │   │       │   └── CLIENTINFO__ACTION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENT_GETENV.pcd
│       │           │   │       ├── CLIENT_READIMAGE.pcd
│       │           │   │       ├── CLIENT_TEXTIO.pcd
│       │           │   │       ├── CTL/
│       │           │   │       │   ├── CTL__ACKNOWLEDGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT10__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT8__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL__EXIT9__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── C_API/
│       │           │   │       │   ├── C_API__CALL_C_API__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── C_API__LOCKSTATION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD/
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DOWNLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD_AS.pcd
│       │           │   │       ├── DOWNLOAD_DB.pcd
│       │           │   │       ├── FILES/
│       │           │   │       │   ├── FILES__COPY_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__DELETE_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_OPEN__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_SAVE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__LIST_DIRS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── FILES__LIST_FILES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FILES_WBP.pcd
│       │           │   │       ├── F_GET_TIMER_VALUE.fun
│       │           │   │       ├── GET_APPLET_PARAMETERS.pcd
│       │           │   │       ├── GET_CLIENTINFO.pcd
│       │           │   │       ├── GET_CLIENT_FILENAME.pcd
│       │           │   │       ├── HOST/
│       │           │   │       │   ├── HOST__HOST_CALLBACK.tgg
│       │           │   │       │   └── HOST__RUN_HOST__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── SEPARATE_FRAME_OPTIONS.pcd
│       │           │   │       ├── SET_BROWSER_MESSAGE.pcd
│       │           │   │       ├── UPLOAD/
│       │           │   │       │   ├── UPLOAD__CREATE_TABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__UPLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── UPLOAD__UPLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UPLOAD_AS.pcd
│       │           │   │       ├── UPLOAD_DB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_DEMO/
│       │           │   │       │   ├── PRE-FORM.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TAB-PAGE-CHANGED.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0002/
│       │           │   │   ├── DEMO0002/
│       │           │   │   │   ├── BL_EMPLOYEES.pkb
│       │           │   │   │   ├── BL_EMPLOYEES.pks
│       │           │   │   │   ├── BL_MAINBLOCK.pkb
│       │           │   │   │   ├── BL_MAINBLOCK.pks
│       │           │   │   │   ├── CONST_LOCAL.pks
│       │           │   │   │   ├── CONTROL/
│       │           │   │   │   │   ├── CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── CONTROL__BT_WIKI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   ├── DEMO0002/
│       │           │   │   │   │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │   │   ├── EMPLOYEES/
│       │           │   │   │   │   └── EMPLOYEES__PRE-QUERY.tgg
│       │           │   │   │   ├── FILTER/
│       │           │   │   │   │   ├── FILTER__BT_QUERY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── FILTER__WHEN-VALIDATE-ITEM.tgg
│       │           │   │   │   ├── VERSION_FRW_FORMS.fun
│       │           │   │   │   ├── WHEN_TIMER_EXPIRED.pcd
│       │           │   │   │   ├── WNB.pcd
│       │           │   │   │   ├── WNF.pcd
│       │           │   │   │   ├── WNI.pcd
│       │           │   │   │   ├── WNR.pcd
│       │           │   │   │   └── metadata.json
│       │           │   │   └── FRW_REF/
│       │           │   │       ├── FRW_REF/
│       │           │   │       │   ├── ON-ERROR.tgg
│       │           │   │       │   ├── WHEN-NEW-BLOCK-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │       ├── WNB.pcd
│       │           │   │       ├── WNF.pcd
│       │           │   │       ├── WNI.pcd
│       │           │   │       ├── WNR.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0003/
│       │           │   │   └── DEMO0003/
│       │           │   │       ├── BL_MAINBLOCK.pkb
│       │           │   │       ├── BL_MAINBLOCK.pks
│       │           │   │       ├── CONST_LOCAL.pks
│       │           │   │       ├── CONTROL/
│       │           │   │       │   ├── CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_ONE_TIME_TIMER__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_UNDO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_WIKI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CONTROL__BT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DEMO0003/
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── EMPLOYEES_CONTROL/
│       │           │   │       │   ├── EMPLOYEES_CONTROL__BT_UNDO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── EMPLOYEES_CONTROL__ITEM47__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── EMPLOYEES_LI/
│       │           │   │       │   └── EMPLOYEES_LI__PRE-QUERY.tgg
│       │           │   │       ├── EMPLOYEES_LI_CONTROL/
│       │           │   │       │   └── EMPLOYEES_LI_CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UNDO.pcd
│       │           │   │       ├── VERSION_FRW_FORMS.fun
│       │           │   │       ├── WHEN_TIMER_EXPIRED.pcd
│       │           │   │       ├── WNB.pcd
│       │           │   │       ├── WNF.pcd
│       │           │   │       ├── WNI.pcd
│       │           │   │       ├── WNR.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0004/
│       │           │   │   └── RELEASE_LOCKS/
│       │           │   │       ├── ERRORMESSAGE.pcd
│       │           │   │       ├── IS_DBA.fun
│       │           │   │       ├── KILL_SESSION.pcd
│       │           │   │       ├── LOG_SYSTEM_SCHLIESSEN.pcd
│       │           │   │       ├── REFRESH.pcd
│       │           │   │       ├── RELEASE_LOCKS/
│       │           │   │       │   ├── POST-FORM.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── STEUERBLOCK/
│       │           │   │       │   ├── STEUERBLOCK__PB_CANCEL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── STEUERBLOCK__PB_CONNECT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── STEUERBLOCK__PB_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── STEUERBLOCK__PB_REFRESH__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── V$LOCK/
│       │           │   │       │   └── V$LOCK__POST-QUERY.tgg
│       │           │   │       ├── V$SESSION/
│       │           │   │       │   └── V$SESSION__PB_KILL_SESSION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0005/
│       │           │   │   └── TIMEOUTPJC_TEST/
│       │           │   │       ├── PL_RESET_FORMSTIMER_ITEMS.pcd
│       │           │   │       ├── PL_START.pcd
│       │           │   │       ├── PL_WHEN_CUSTOM_ITEM_EVENT.pcd
│       │           │   │       ├── TEST/
│       │           │   │       │   ├── TEST__DEBUG__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │       │   ├── TEST__FORMSTIMER500__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMSTIMER60000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMS_TIMER1000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMS_TIMER5000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__ITEM28__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── TEST__STARTTIMER__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── TIMEOUTPJC_TEST/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_TIMER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0006/
│       │           │   │   └── TIMEOUT_SYS_CLIENT_IDL/
│       │           │   │       ├── DEMOBLOCK/
│       │           │   │       │   ├── DEMOBLOCK__BUT_CLOSE_FORM__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DEMOBLOCK__DEMO_1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DEMOBLOCK__DEMO_2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DEMOBLOCK__DEMO_3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── F_GET_TIMER_VALUE.fun
│       │           │   │       ├── P_CLEAR_DIAGNOSTIC_ITEMS.pcd
│       │           │   │       ├── TIMEOUT_SYS_CLIENT_IDL/
│       │           │   │       │   └── PRE-FORM.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0007/
│       │           │   │   └── CD_DEMO_EXCEL/
│       │           │   │       ├── ALL_OBJECTS/
│       │           │   │       │   ├── ALL_OBJECTS__BT_ALL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── ALL_OBJECTS__BT_PACKAGES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── ALL_OBJECTS__BT_TABLES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── ALL_OBJECTS__CALL_EXCEL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CD_DEMO_EXCEL/
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── P_GET_BLOB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0008/
│       │           │   │   └── LATENCY_TEST/
│       │           │   │       ├── F_GET_CURRENT_TIME_MS.fun
│       │           │   │       ├── LATENCY_TEST/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── P_DOWNLOAD_DOKUMENT_AS.pcd
│       │           │   │       ├── P_WAIT_AND_EXIT.pcd
│       │           │   │       ├── P_WHEN_NEW_FORM_INSTANCE.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_GET_AS_TMP_DIR.fun
│       │           │   │       ├── WEBUTIL_GET_LATENCY.fun
│       │           │   │       ├── WEBUTIL_PREPARE_TESTFILE.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0009/
│       │           │   │   └── FORMSAPI_WIZARD_2905/
│       │           │   │       ├── BLK_HANDLG/
│       │           │   │       │   ├── BLK_HANDLG__BT_CHECK_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_COMPILE_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_MIGRATE_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_SELECT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_CHECK__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_COMPILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_MIGRATE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__CBOX_FAM_ACTION__WHEN-LIST-CHANGED.tgg
│       │           │   │       │   ├── BLK_HANDLG__CB__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │       │   └── BLK_HANDLG__POST-QUERY.tgg
│       │           │   │       ├── CTL_BASIC/
│       │           │   │       │   ├── CTL_BASIC__BT_ALL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_CHECK__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_COMPILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_CONFIGURE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL_BASIC__BT_MIGRATE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CTL_INIT/
│       │           │   │       │   └── CTL_INIT__BT_CLOSE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FNC_FILE_EXISTS_HOST.fun
│       │           │   │       ├── FNC_GET_FILE_SEPARATOR.fun
│       │           │   │       ├── FNC_GET_TIMER_VALUE.fun
│       │           │   │       ├── FORMSAPI_WIZARD_2905/
│       │           │   │       │   ├── MODULE_FEATURES.tgg
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── G.pkb
│       │           │   │       ├── G.pks
│       │           │   │       ├── PKG_BLK_DATA.pkb
│       │           │   │       ├── PKG_BLK_DATA.pks
│       │           │   │       ├── PKG_CONFIG.pkb
│       │           │   │       ├── PKG_CONFIG.pks
│       │           │   │       ├── PKG_FAM_RUN_SCRIPT.pkb
│       │           │   │       ├── PKG_FAM_RUN_SCRIPT.pks
│       │           │   │       ├── PRC_ABORT.pcd
│       │           │   │       ├── PRC_CHECK_FAM.pcd
│       │           │   │       ├── PRC_CMD_HOST_CLIENT.pcd
│       │           │   │       ├── PRC_CNG_MONTH_TIME.pcd
│       │           │   │       ├── PRC_COMPILATION.pcd
│       │           │   │       ├── PRC_CONFIGURATION.pcd
│       │           │   │       ├── PRC_COPY_FILE.pcd
│       │           │   │       ├── PRC_COPY_FILE_HOST.pcd
│       │           │   │       ├── PRC_ERROR.pcd
│       │           │   │       ├── PRC_EXCEPTION.pcd
│       │           │   │       ├── PRC_FILE_MERGE.pcd
│       │           │   │       ├── PRC_FILE_MERGE_HOST.pcd
│       │           │   │       ├── PRC_FLOG.pcd
│       │           │   │       ├── PRC_GET_CHK_REF_INFO.pcd
│       │           │   │       ├── PRC_GET_CONNECT_INFO.pcd
│       │           │   │       ├── PRC_INFO.pcd
│       │           │   │       ├── PRC_MIGRATION.pcd
│       │           │   │       ├── PRC_MSG.pcd
│       │           │   │       ├── PRC_SET_COMPILE_RESULT.pcd
│       │           │   │       ├── PRC_SET_INFOS.pcd
│       │           │   │       ├── PRC_SET_MIGRATE_RESULT.pcd
│       │           │   │       ├── PRC_SET_STATISTIK.pcd
│       │           │   │       ├── PRC_SET_STATISTIK_SINGLE.pcd
│       │           │   │       ├── PRC_SET_USERHOME.pcd
│       │           │   │       ├── PRC_SHOW_DURATION.pcd
│       │           │   │       ├── PRC_SHOW_INIT.pcd
│       │           │   │       ├── PRC_VIEW_FILE.pcd
│       │           │   │       ├── PRC_WRITE_SCRIPT.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0010/
│       │           │   │   └── CHK_MYFFI_SAMPLE5/
│       │           │   │       ├── BLK/
│       │           │   │       │   ├── BLK__PB_WEB_FFI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BLK__URL__WHEN-MOUSE-CLICK.tgg
│       │           │   │       ├── CHK_MYFFI_SAMPLE5/
│       │           │   │       │   └── ON-LOGON.tgg
│       │           │   │       ├── FNC_BOOL.fun
│       │           │   │       ├── PRC_SHOW.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0011/
│       │           │   │   └── WEBUTIL_DEMO/
│       │           │   │       ├── ABOUT/
│       │           │   │       │   └── ABOUT__ABOUT_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BROWSER/
│       │           │   │       │   ├── BROWSER__APPLET_PARAMS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BROWSER__BROWSER_MESSAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BROWSER__SEPARATE_FRAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BUILTINS/
│       │           │   │       │   ├── BUILTINS__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__GET_TOOL_ENV__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__READ_IMAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BUILTINS__TEXT_IO_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENTINFO/
│       │           │   │       │   └── CLIENTINFO__ACTION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENT_GETENV.pcd
│       │           │   │       ├── CLIENT_READIMAGE.pcd
│       │           │   │       ├── CLIENT_TEXTIO.pcd
│       │           │   │       ├── CTL/
│       │           │   │       │   ├── CTL__ACKNOWLEDGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT10__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT8__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL__EXIT9__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── C_API/
│       │           │   │       │   ├── C_API__CALL_C_API__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── C_API__LOCKSTATION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD/
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DOWNLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD_AS.pcd
│       │           │   │       ├── DOWNLOAD_DB.pcd
│       │           │   │       ├── FILES/
│       │           │   │       │   ├── FILES__COPY_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__DELETE_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_OPEN__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_SAVE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__LIST_DIRS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── FILES__LIST_FILES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FILES_WBP.pcd
│       │           │   │       ├── GET_APPLET_PARAMETERS.pcd
│       │           │   │       ├── GET_CLIENTINFO.pcd
│       │           │   │       ├── GET_CLIENT_FILENAME.pcd
│       │           │   │       ├── HOST/
│       │           │   │       │   ├── HOST__HOST_CALLBACK.tgg
│       │           │   │       │   └── HOST__RUN_HOST__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── OLE/
│       │           │   │       │   ├── OLE__SAVEFILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── OLE__WRITE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── OLE_WRITE.pcd
│       │           │   │       ├── SEPARATE_FRAME_OPTIONS.pcd
│       │           │   │       ├── SET_BROWSER_MESSAGE.pcd
│       │           │   │       ├── UPLOAD/
│       │           │   │       │   ├── UPLOAD__CREATE_TABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__UPLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── UPLOAD__UPLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UPLOAD_AS.pcd
│       │           │   │       ├── UPLOAD_DB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_OLE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_DEMO/
│       │           │   │       │   ├── KEY-EXIT.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TAB-PAGE-CHANGED.tgg
│       │           │   │       │   ├── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0012/
│       │           │   │   └── PDFVIEWER/
│       │           │   │       ├── PDFVIEWER/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0013/
│       │           │   │   └── COLOR_SLIDER/
│       │           │   │       ├── BL1/
│       │           │   │       │   ├── BL1__B__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__G__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__R__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__VB__POST-TEXT-ITEM.tgg
│       │           │   │       │   ├── BL1__VG__POST-TEXT-ITEM.tgg
│       │           │   │       │   └── BL1__VR__POST-TEXT-ITEM.tgg
│       │           │   │       ├── COLOR_SLIDER/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── PKG_SLIDER.pkb
│       │           │   │       ├── PKG_SLIDER.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0014/
│       │           │   │   ├── ACCORDION/
│       │           │   │   │   ├── ACCORDION/
│       │           │   │   │   │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │   │   ├── B/
│       │           │   │   │   │   ├── B__B2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   ├── B__B3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   ├── B__B4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── B__B__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   ├── BL_TREE/
│       │           │   │   │   │   ├── BL_TREE__IT_TREE__WHEN-TREE-NODE-EXPANDED.tgg
│       │           │   │   │   │   └── BL_TREE__IT_TREE__WHEN-TREE-NODE-SELECTED.tgg
│       │           │   │   │   ├── DEPARTMENTS/
│       │           │   │   │   │   └── DEPARTMENTS__WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │   │   ├── OTHRS/
│       │           │   │   │   │   └── OTHRS__EMAIL__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │   │   ├── PK_ACCORDION.pkb
│       │           │   │   │   ├── PK_ACCORDION.pks
│       │           │   │   │   ├── PK_TREE.pkb
│       │           │   │   │   ├── PK_TREE.pks
│       │           │   │   │   ├── PR_INIT_BY_DEPT.pcd
│       │           │   │   │   ├── PR_INIT_BY_OTHERS.pcd
│       │           │   │   │   ├── PR_INIT_BY_SAL.pcd
│       │           │   │   │   ├── PR_INIT_BY_TREE.pcd
│       │           │   │   │   ├── SAL/
│       │           │   │   │   │   └── SAL__SAL__WHEN-RADIO-CHANGED.tgg
│       │           │   │   │   └── metadata.json
│       │           │   │   └── ACCORDION2/
│       │           │   │       ├── ACCORDION2/
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── PK_ACCORDION.pkb
│       │           │   │       ├── PK_ACCORDION.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0015/
│       │           │   │   └── MODERNIZE/
│       │           │   │       ├── CONTROL/
│       │           │   │       │   ├── CONTROL__CHECK_BOX_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__ERROR_STACK__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── CONTROL__RADIO_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_ERROR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_WARNING__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__TEXT_FIELD_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__TEXT_FIELD_ENABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CONTROL__WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │       ├── MODERNIZE/
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── RecordGroups/
│       │           │   │       │   └── LOV9.sql
│       │           │   │       └── metadata.json
│       │           │   ├── demo0016/
│       │           │   │   └── CHK_CBOX3/
│       │           │   │       ├── C/
│       │           │   │       │   ├── C__CBOX__KEY-NEXT-ITEM.tgg
│       │           │   │       │   ├── C__CBOX__POST-CHANGE.tgg
│       │           │   │       │   ├── C__CBOX__WHEN-LIST-CHANGED.tgg
│       │           │   │       │   ├── C__DUMMY__KEY-NEXT-ITEM.tgg
│       │           │   │       │   └── C__DUMMY__KEY-PREV-ITEM.tgg
│       │           │   │       ├── CBX/
│       │           │   │       │   ├── CBX__LABEL__KEY-NEXT-ITEM.tgg
│       │           │   │       │   ├── CBX__LABEL__KEY-PREV-ITEM.tgg
│       │           │   │       │   ├── CBX__LABEL__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   └── CBX__ON-ERROR.tgg
│       │           │   │       ├── CHK_CBOX3/
│       │           │   │       │   ├── WHEN-NEW-BLOCK-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── PKG_CBOX.pkb
│       │           │   │       ├── PKG_CBOX.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0017/
│       │           │   │   └── POC_ACCOUNT/
│       │           │   │       ├── BLK_ACCOUNT/
│       │           │   │       │   ├── BLK_ACCOUNT__ANSWER__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__ANSWER__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__BT_COMMIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__CLOSE__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL2__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL2__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__FULLNAME__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__FULLNAME__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD_RETRY__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD_RETRY__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__QUERY__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__QUERY__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__START_DEMO__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__USERNAME__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── BLK_ACCOUNT__USERNAME__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       ├── FNC_MSG_QUERY.fun
│       │           │   │       ├── FNC_VALIDATE.fun
│       │           │   │       ├── PKG_ITEM.pkb
│       │           │   │       ├── PKG_ITEM.pks
│       │           │   │       ├── POC_ACCOUNT/
│       │           │   │       │   ├── KEY-EXIT.tgg
│       │           │   │       │   ├── ON-ERROR.tgg
│       │           │   │       │   ├── ON-MESSAGE.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── POP_CHECK/
│       │           │   │       │   └── CHECK_ALL/
│       │           │   │       │       └── POP_CHECK__CHECK_ALL.sql
│       │           │   │       ├── PRC_CHK_ITEM_SEQUENCE.pcd
│       │           │   │       ├── PRC_INFO.pcd
│       │           │   │       ├── PRC_SET_ITEMS.pcd
│       │           │   │       ├── V#R#FY_PW$001.fun
│       │           │   │       └── metadata.json
│       │           │   └── demo0018/
│       │           │       └── TEST/
│       │           │           ├── TEST/
│       │           │           │   ├── TEST__BUTTON1__WHEN-BUTTON-PRESSED.tgg
│       │           │           │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │           └── metadata.json
│       │           ├── antlr-grammars-v4/
│       │           │   ├── README.md
│       │           │   ├── examples/
│       │           │   │   ├── administer_key_management.sql
│       │           │   │   ├── aggregate_functions.sql
│       │           │   │   ├── alter_analytic_view.sql
│       │           │   │   ├── alter_attribute_dimension.sql
│       │           │   │   ├── alter_audit_policy.sql
│       │           │   │   ├── alter_database.sql
│       │           │   │   ├── alter_dimension.sql
│       │           │   │   ├── alter_diskgroup.sql
│       │           │   │   ├── alter_flashback_archive.sql
│       │           │   │   ├── alter_function.sql
│       │           │   │   ├── alter_hierarchy.sql
│       │           │   │   ├── alter_inmemory_join_group.sql
│       │           │   │   ├── alter_java.sql
│       │           │   │   ├── alter_library.sql
│       │           │   │   ├── alter_lockdown_profile.sql
│       │           │   │   ├── alter_materialized_zonemap.sql
│       │           │   │   ├── alter_mv.sql
│       │           │   │   ├── alter_mv_log.sql
│       │           │   │   ├── alter_operator.sql
│       │           │   │   ├── alter_outline.sql
│       │           │   │   ├── alter_pmem_filestore.sql
│       │           │   │   ├── alter_resource_cost.sql
│       │           │   │   ├── alter_role.sql
│       │           │   │   ├── alter_rollback_segment.sql
│       │           │   │   ├── alter_session.sql
│       │           │   │   ├── alter_synonym01.sql
│       │           │   │   ├── alter_table.sql
│       │           │   │   ├── alter_table_inmemory.sql
│       │           │   │   ├── alter_table_modify_partition_by_range.sql
│       │           │   │   ├── alter_table_modify_partition_shrink.sql
│       │           │   │   ├── alter_tablespace_set.sql
│       │           │   │   ├── alter_tablespaces.sql
│       │           │   │   ├── alter_view.sql
│       │           │   │   ├── analytic_query.sql
│       │           │   │   ├── analyze.sql
│       │           │   │   ├── associate_statistics.sql
│       │           │   │   ├── audit.sql
│       │           │   │   ├── bindvar01.sql
│       │           │   │   ├── bindvar02.sql
│       │           │   │   ├── bindvar03.sql
│       │           │   │   ├── bindvar04.sql
│       │           │   │   ├── bindvar05.sql
│       │           │   │   ├── block01.sql
│       │           │   │   ├── block02.sql
│       │           │   │   ├── bulk_collect_fetch_clause01.sql
│       │           │   │   ├── call.sql
│       │           │   │   ├── case_when01.sql
│       │           │   │   ├── case_when02.sql
│       │           │   │   ├── case_when03.sql
│       │           │   │   ├── case_when04.sql
│       │           │   │   ├── case_when05.sql
│       │           │   │   ├── case_when06.sql
│       │           │   │   ├── case_when07.sql
│       │           │   │   ├── case_when08.sql
│       │           │   │   ├── cast.sql
│       │           │   │   ├── cast_multiset01.sql
│       │           │   │   ├── cast_multiset02.sql
│       │           │   │   ├── cast_multiset03.sql
│       │           │   │   ├── cast_multiset04.sql
│       │           │   │   ├── cast_multiset05.sql
│       │           │   │   ├── cast_multiset06.sql
│       │           │   │   ├── cast_multiset08.sql
│       │           │   │   ├── cluster.sql
│       │           │   │   ├── collection_method_invocation.sql
│       │           │   │   ├── columns01.sql
│       │           │   │   ├── comment_on.sql
│       │           │   │   ├── comments.sql
│       │           │   │   ├── commit.sql
│       │           │   │   ├── concatenation-double_asterisk.sql
│       │           │   │   ├── concatenation-mod.sql
│       │           │   │   ├── condition01.sql
│       │           │   │   ├── condition02.sql
│       │           │   │   ├── condition03.sql
│       │           │   │   ├── condition04.sql
│       │           │   │   ├── condition05.sql
│       │           │   │   ├── condition06.sql
│       │           │   │   ├── condition07.sql
│       │           │   │   ├── condition08.sql
│       │           │   │   ├── condition09.sql
│       │           │   │   ├── condition10.sql
│       │           │   │   ├── condition11.sql
│       │           │   │   ├── condition12.sql
│       │           │   │   ├── condition14.sql
│       │           │   │   ├── condition15.sql
│       │           │   │   ├── condition16.sql
│       │           │   │   ├── connect_by01.sql
│       │           │   │   ├── connect_by02.sql
│       │           │   │   ├── connect_by03.sql
│       │           │   │   ├── connect_by04.sql
│       │           │   │   ├── connect_by05.sql
│       │           │   │   ├── context.sql
│       │           │   │   ├── create_analytic_view.sql
│       │           │   │   ├── create_attribute_dimension.sql
│       │           │   │   ├── create_audit_policy.sql
│       │           │   │   ├── create_controlfile.sql
│       │           │   │   ├── create_database.sql
│       │           │   │   ├── create_dimension.sql
│       │           │   │   ├── create_directory.sql
│       │           │   │   ├── create_diskgroup.sql
│       │           │   │   ├── create_edition.sql
│       │           │   │   ├── create_flashback_archive.sql
│       │           │   │   ├── create_function01.sql
│       │           │   │   ├── create_function02.sql
│       │           │   │   ├── create_function03.sql
│       │           │   │   ├── create_function04.sql
│       │           │   │   ├── create_function05.sql
│       │           │   │   ├── create_function06.sql
│       │           │   │   ├── create_hierarchy.sql
│       │           │   │   ├── create_index.sql
│       │           │   │   ├── create_inmemory_join_group.sql
│       │           │   │   ├── create_java.sql
│       │           │   │   ├── create_library.sql
│       │           │   │   ├── create_lockdown_profile.sql
│       │           │   │   ├── create_materialized_zonemap.sql
│       │           │   │   ├── create_operator.sql
│       │           │   │   ├── create_outline.sql
│       │           │   │   ├── create_package.sql.tree
│       │           │   │   ├── create_package01.sql
│       │           │   │   ├── create_package02.sql
│       │           │   │   ├── create_package03.sql
│       │           │   │   ├── create_package04.sql
│       │           │   │   ├── create_package05.sql
│       │           │   │   ├── create_pmem_filestore.sql
│       │           │   │   ├── create_procedure01.sql
│       │           │   │   ├── create_procedure01.sql.tree
│       │           │   │   ├── create_procedure02.sql
│       │           │   │   ├── create_procedure03.sql
│       │           │   │   ├── create_profile.sql
│       │           │   │   ├── create_restore_point.sql
│       │           │   │   ├── create_role.sql
│       │           │   │   ├── create_rollback_segment.sql
│       │           │   │   ├── create_spfile.sql
│       │           │   │   ├── create_synonym01.sql
│       │           │   │   ├── create_synonym02.sql
│       │           │   │   ├── create_synonym03.sql
│       │           │   │   ├── create_table.sql
│       │           │   │   ├── create_tablespace.sql
│       │           │   │   ├── create_tablespace_set.sql
│       │           │   │   ├── create_trigger01.sql
│       │           │   │   ├── create_trigger02.sql
│       │           │   │   ├── create_type.sql
│       │           │   │   ├── create_view.sql
│       │           │   │   ├── ctas.sql
│       │           │   │   ├── datetime01.sql
│       │           │   │   ├── datetime03.sql
│       │           │   │   ├── datetime04.sql
│       │           │   │   ├── datetime05.sql
│       │           │   │   ├── dblink.sql
│       │           │   │   ├── dblink01.sql
│       │           │   │   ├── directory.sql
│       │           │   │   ├── disassociate_statistics.sql
│       │           │   │   ├── drop_analytic_view.sql
│       │           │   │   ├── drop_attribute_dimension.sql
│       │           │   │   ├── drop_audit_policy.sql
│       │           │   │   ├── drop_cluster.sql
│       │           │   │   ├── drop_context.sql
│       │           │   │   ├── drop_database.sql
│       │           │   │   ├── drop_directory.sql
│       │           │   │   ├── drop_diskgroup.sql
│       │           │   │   ├── drop_edition.sql
│       │           │   │   ├── drop_flashback_archive.sql
│       │           │   │   ├── drop_hierarchy.sql
│       │           │   │   ├── drop_indextype.sql
│       │           │   │   ├── drop_inmemory_join_group.sql
│       │           │   │   ├── drop_java.sql
│       │           │   │   ├── drop_library.sql
│       │           │   │   ├── drop_lockdown_profile.sql
│       │           │   │   ├── drop_materialized_view.sql
│       │           │   │   ├── drop_materialized_view.sql.tree
│       │           │   │   ├── drop_materialized_zonemap.sql
│       │           │   │   ├── drop_operator.sql
│       │           │   │   ├── drop_outline.sql
│       │           │   │   ├── drop_pmem_filestore.sql
│       │           │   │   ├── drop_restore_point.sql
│       │           │   │   ├── drop_role.sql
│       │           │   │   ├── drop_rollback_segment.sql
│       │           │   │   ├── drop_synonym01.sql
│       │           │   │   ├── drop_table.sql
│       │           │   │   ├── drop_tablespace.sql
│       │           │   │   ├── drop_tablespace_set.sql
│       │           │   │   ├── drop_user.sql
│       │           │   │   ├── drop_view.sql
│       │           │   │   ├── editionable_function.sql
│       │           │   │   ├── editionable_packagebody_function.sql
│       │           │   │   ├── editionable_packagespec_function.sql
│       │           │   │   ├── explain01.sql
│       │           │   │   ├── fetch_clause01.sql
│       │           │   │   ├── fetch_clause02.sql
│       │           │   │   ├── fetch_clause03.sql
│       │           │   │   ├── fetch_clause04.sql
│       │           │   │   ├── fetch_statement.sql
│       │           │   │   ├── flashback01.sql
│       │           │   │   ├── flashback_table.sql
│       │           │   │   ├── for_update01.sql
│       │           │   │   ├── for_update02.sql
│       │           │   │   ├── for_update03.sql
│       │           │   │   ├── for_update04.sql
│       │           │   │   ├── for_update05.sql
│       │           │   │   ├── for_update06.sql
│       │           │   │   ├── for_update07.sql
│       │           │   │   ├── for_update08.sql
│       │           │   │   ├── forall_bulk_rowcount.sql
│       │           │   │   ├── forall_indices_of.sql
│       │           │   │   ├── forall_statement_and_exception_handling.sql
│       │           │   │   ├── function01.sql
│       │           │   │   ├── function02.sql
│       │           │   │   ├── function03.sql
│       │           │   │   ├── function04.sql
│       │           │   │   ├── function05.sql
│       │           │   │   ├── function06.sql
│       │           │   │   ├── function07.sql
│       │           │   │   ├── general_element_part.sql
│       │           │   │   ├── groupby01.sql
│       │           │   │   ├── groupby02.sql
│       │           │   │   ├── groupby03.sql
│       │           │   │   ├── groupby04.sql
│       │           │   │   ├── groupby05.sql
│       │           │   │   ├── groupby06.sql
│       │           │   │   ├── groupby07.sql
│       │           │   │   ├── index.sql
│       │           │   │   ├── insert_statement.sql
│       │           │   │   ├── interval01.sql
│       │           │   │   ├── interval02.sql
│       │           │   │   ├── interval03.sql
│       │           │   │   ├── interval04.sql
│       │           │   │   ├── join01.sql
│       │           │   │   ├── join02.sql
│       │           │   │   ├── join03.sql
│       │           │   │   ├── join04.sql
│       │           │   │   ├── join05.sql
│       │           │   │   ├── join06.sql
│       │           │   │   ├── join07.sql
│       │           │   │   ├── join08.sql
│       │           │   │   ├── join09.sql
│       │           │   │   ├── join10.sql
│       │           │   │   ├── join11.sql
│       │           │   │   ├── join12.sql
│       │           │   │   ├── join13.sql
│       │           │   │   ├── join14.sql
│       │           │   │   ├── join15.sql
│       │           │   │   ├── join16.sql
│       │           │   │   ├── join17.sql
│       │           │   │   ├── join18.sql
│       │           │   │   ├── join19.sql
│       │           │   │   ├── join20.sql
│       │           │   │   ├── join21.sql
│       │           │   │   ├── join22.sql
│       │           │   │   ├── join23.sql
│       │           │   │   ├── json_query.sql
│       │           │   │   ├── json_query.sql.tree
│       │           │   │   ├── json_sql.sql
│       │           │   │   ├── keywordasidentifier01.sql
│       │           │   │   ├── keywordasidentifier02.sql
│       │           │   │   ├── keywordasidentifier03.sql
│       │           │   │   ├── keywordasidentifier04.sql
│       │           │   │   ├── keywordasidentifier05.sql
│       │           │   │   ├── keywordasidentifier06.sql
│       │           │   │   ├── least_greatest.sql
│       │           │   │   ├── lexer01.sql
│       │           │   │   ├── lexer02.sql
│       │           │   │   ├── lexer02.sql.tree
│       │           │   │   ├── lexer03.sql
│       │           │   │   ├── lexer04.sql
│       │           │   │   ├── lexer05.sql
│       │           │   │   ├── like01.sql
│       │           │   │   ├── lob-item.sql
│       │           │   │   ├── lob-item.sql.tree
│       │           │   │   ├── materialized_views.sql
│       │           │   │   ├── max_001.sql
│       │           │   │   ├── merge01.sql
│       │           │   │   ├── merge02.sql
│       │           │   │   ├── merge03.sql
│       │           │   │   ├── merge04.sql
│       │           │   │   ├── merge05.sql
│       │           │   │   ├── model_clause01.sql
│       │           │   │   ├── model_clause02.sql
│       │           │   │   ├── model_clause03.sql
│       │           │   │   ├── model_clause04.sql
│       │           │   │   ├── model_clause05.sql
│       │           │   │   ├── multiset_operators.sql
│       │           │   │   ├── noaudit_statement.sql
│       │           │   │   ├── numbers01.sql
│       │           │   │   ├── nvl_001.sql
│       │           │   │   ├── object_access01.sql
│       │           │   │   ├── object_access_expressions.sql
│       │           │   │   ├── offset_clause.sql
│       │           │   │   ├── order_by01.sql
│       │           │   │   ├── order_by02.sql
│       │           │   │   ├── order_by03.sql
│       │           │   │   ├── order_by04.sql
│       │           │   │   ├── order_by05.sql
│       │           │   │   ├── order_by06.sql
│       │           │   │   ├── package_body.sql
│       │           │   │   ├── package_body.sql.tree
│       │           │   │   ├── packagebody_function.sql
│       │           │   │   ├── packagespec_function.sql
│       │           │   │   ├── partitioned_tables.sql
│       │           │   │   ├── pivot01.sql
│       │           │   │   ├── pivot02.sql
│       │           │   │   ├── pivot03.sql
│       │           │   │   ├── pivot04.sql
│       │           │   │   ├── pivot05.sql
│       │           │   │   ├── pivot06.sql
│       │           │   │   ├── pivot07.sql
│       │           │   │   ├── pivot08.sql
│       │           │   │   ├── pivot09.sql
│       │           │   │   ├── pivot10.sql
│       │           │   │   ├── pivot11.sql
│       │           │   │   ├── pivot12.sql
│       │           │   │   ├── pivot13.sql
│       │           │   │   ├── purge_statement.sql
│       │           │   │   ├── query_factoring01.sql
│       │           │   │   ├── query_factoring02.sql
│       │           │   │   ├── query_factoring03.sql
│       │           │   │   ├── query_factoring04.sql
│       │           │   │   ├── query_factoring05.sql
│       │           │   │   ├── query_factoring06.sql
│       │           │   │   ├── query_factoring08.sql
│       │           │   │   ├── query_factoring09.sql
│       │           │   │   ├── query_factoring10.sql
│       │           │   │   ├── query_factoring11.sql
│       │           │   │   ├── quntitative_expression.sql
│       │           │   │   ├── rename_objects.sql
│       │           │   │   ├── revoke_statement.sql
│       │           │   │   ├── round_001.sql
│       │           │   │   ├── round_decode_001.sql
│       │           │   │   ├── row_number_001.sql
│       │           │   │   ├── sample01.sql
│       │           │   │   ├── select_all_some_any.sql
│       │           │   │   ├── select_analytic_view.sql
│       │           │   │   ├── select_cte.sql
│       │           │   │   ├── select_dense_rank.sql
│       │           │   │   ├── select_flashback_query.sql
│       │           │   │   ├── select_hierarchical_query.sql
│       │           │   │   ├── select_package_function.sql
│       │           │   │   ├── select_time.sql
│       │           │   │   ├── select_without_from.sql
│       │           │   │   ├── seq_token_error.sql
│       │           │   │   ├── simple02.sql
│       │           │   │   ├── simple03.sql
│       │           │   │   ├── simple04.sql
│       │           │   │   ├── simple05.sql
│       │           │   │   ├── simple06.sql
│       │           │   │   ├── simple07.sql
│       │           │   │   ├── simple08.sql
│       │           │   │   ├── simple09.sql
│       │           │   │   ├── simple10.sql
│       │           │   │   ├── simple11.sql
│       │           │   │   ├── simple12.sql
│       │           │   │   ├── simple13.sql
│       │           │   │   ├── single_statement.sql
│       │           │   │   ├── string01.sql
│       │           │   │   ├── timing.sql
│       │           │   │   ├── timing.sql.tree
│       │           │   │   ├── to_binary_double.sql
│       │           │   │   ├── to_binary_float.sql
│       │           │   │   ├── to_char.sql
│       │           │   │   ├── to_char_001.sql
│       │           │   │   ├── to_char_002.sql
│       │           │   │   ├── to_date.sql
│       │           │   │   ├── to_dsinterval.sql
│       │           │   │   ├── to_number.sql
│       │           │   │   ├── to_timestamp.sql
│       │           │   │   ├── to_timestamp_tz.sql
│       │           │   │   ├── to_yminterval.sql
│       │           │   │   ├── truncate_cluster.sql
│       │           │   │   ├── truncate_table.sql
│       │           │   │   ├── unified.sql
│       │           │   │   ├── union01.sql
│       │           │   │   ├── union02.sql
│       │           │   │   ├── union03.sql
│       │           │   │   ├── union04.sql
│       │           │   │   ├── union05.sql
│       │           │   │   ├── union06.sql
│       │           │   │   ├── union07.sql
│       │           │   │   ├── union08.sql
│       │           │   │   ├── union09.sql
│       │           │   │   ├── union10.sql
│       │           │   │   ├── validate_conversion.sql
│       │           │   │   ├── values_clause.sql
│       │           │   │   ├── varray_type_def.sql
│       │           │   │   ├── views.sql
│       │           │   │   ├── whenever_sqlerror.sql
│       │           │   │   ├── whenever_sqlerror.sql.tree
│       │           │   │   ├── xml_function.sql
│       │           │   │   ├── xmltable01.sql
│       │           │   │   ├── xmltable02.sql
│       │           │   │   └── xmltable03.sql
│       │           │   ├── examples-sql-script/
│       │           │   │   ├── anonymous_block.sql
│       │           │   │   ├── cursor-attributes-with-spaces.sql
│       │           │   │   ├── declare_procedure_no_args.sql
│       │           │   │   ├── delete_as_regular_id.pkb
│       │           │   │   ├── deterministic_function.pks
│       │           │   │   ├── e_in_out_parameters.pks
│       │           │   │   ├── grants.sql
│       │           │   │   ├── green_run.sql
│       │           │   │   ├── green_table.sql
│       │           │   │   ├── green_tools.pkb
│       │           │   │   ├── green_tools.pks
│       │           │   │   ├── green_tools_review.sql
│       │           │   │   ├── in_out_parameters.pks
│       │           │   │   ├── key_word_as_param.pkb
│       │           │   │   ├── logical_expressions.sql
│       │           │   │   ├── package_body_null.pkb
│       │           │   │   ├── package_with_cursor.sql
│       │           │   │   ├── package_with_schema.pkb
│       │           │   │   ├── package_with_schema.pks
│       │           │   │   ├── package_with_simple_init_block.pkb
│       │           │   │   ├── pipe_row.pkb
│       │           │   │   ├── pltables.sql
│       │           │   │   ├── pragma_autonomous_transaction.sql
│       │           │   │   ├── pragma_exception_init.pkb
│       │           │   │   ├── pragma_exception_init.pks
│       │           │   │   ├── proc_over_dblink_as_nvl_param.pkb
│       │           │   │   ├── procedure_with_cursor_and_limit.sql
│       │           │   │   ├── result_cache_function.pks
│       │           │   │   ├── select_into.sql
│       │           │   │   ├── show_errors.pks
│       │           │   │   ├── substr_as_regular_id.pkb
│       │           │   │   ├── synonym_with_database_link.sql
│       │           │   │   ├── trigger_examples.sql
│       │           │   │   ├── type_body_elements.sql
│       │           │   │   ├── user.sql
│       │           │   │   └── with_clause_in_exists_block_in_procedure.sql
│       │           │   ├── hw-examples/
│       │           │   │   ├── alter_operator.sql
│       │           │   │   ├── alter_outline.sql
│       │           │   │   ├── drop_operator.sql
│       │           │   │   ├── keywordasidentifier02.sql
│       │           │   │   ├── lexer01.sql
│       │           │   │   ├── lexer02.sql
│       │           │   │   ├── lexer03.sql
│       │           │   │   ├── lexer04.sql
│       │           │   │   ├── lexer05.sql
│       │           │   │   ├── simple11.sql
│       │           │   │   └── truncate_table.sql
│       │           │   └── long-running/
│       │           │       ├── aggregate01.sql
│       │           │       ├── cast_multiset07.sql
│       │           │       ├── datetime02.sql
│       │           │       ├── order_by07.sql
│       │           │       └── query_factoring07.sql
│       │           └── oracle-database_23/
│       │               ├── adjsn/
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-0.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-1.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-2.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-3.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-4.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-5.sql
│       │               │   ├── change-triggers-data-guide-enabled-search-index-0.sql
│       │               │   ├── change-triggers-data-guide-enabled-search-index-1.sql
│       │               │   ├── columns-clause-sql-json-function-json_table-3.sql
│       │               │   ├── creating-b-tree-indexes-json_value-0.sql
│       │               │   ├── creating-b-tree-indexes-json_value-1.sql
│       │               │   ├── creating-b-tree-indexes-json_value-2.sql
│       │               │   ├── creating-b-tree-indexes-json_value-3.sql
│       │               │   ├── creating-bitmap-indexes-json_value-0.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-0.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-1.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-2.sql
│       │               │   ├── creating-view-json-data-based-data-guide-information-2.sql
│       │               │   ├── creating-view-json-data-based-data-guide-information-3.sql
│       │               │   ├── creating-view-json-data-using-json_table-0.sql
│       │               │   ├── creating-view-json-data-using-json_table-1.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-0.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-1.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-2.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-0.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-1.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-3.sql
│       │               │   ├── handling-dependent-objects-0.sql
│       │               │   ├── handling-dependent-objects-1.sql
│       │               │   ├── handling-dependent-objects-2.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-0.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-1.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-2.sql
│       │               │   ├── indexing-multiple-json-fields-using-composite-b-tree-index-1.sql
│       │               │   ├── json-collections-2.sql
│       │               │   ├── json-collections-3.sql
│       │               │   ├── json-collections-4.sql
│       │               │   ├── json-data-type-2.sql
│       │               │   ├── json-data-type-3.sql
│       │               │   ├── json-data-type-4.sql
│       │               │   ├── json-data-type-5.sql
│       │               │   ├── json-data-type-6.sql
│       │               │   ├── json-data-type-7.sql
│       │               │   ├── json-data-type-8.sql
│       │               │   ├── json-data-type-9.sql
│       │               │   ├── json-query-rewrite-use-materialized-view-json_table-0.sql
│       │               │   ├── json-query-rewrite-use-materialized-view-json_table-2.sql
│       │               │   ├── json-schema-1.sql
│       │               │   ├── json-schema-10.sql
│       │               │   ├── json-schema-11.sql
│       │               │   ├── json-schema-13.sql
│       │               │   ├── json-schema-14.sql
│       │               │   ├── json-schema-16.sql
│       │               │   ├── json-schema-18.sql
│       │               │   ├── json-schema-2.sql
│       │               │   ├── json-schema-22.sql
│       │               │   ├── json-schema-24.sql
│       │               │   ├── json-schema-25.sql
│       │               │   ├── json-schema-3.sql
│       │               │   ├── json-schema-4.sql
│       │               │   ├── json-schema-5.sql
│       │               │   ├── json-schema-7.sql
│       │               │   ├── json-schema-9.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-0.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-1.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-10.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-2.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-3.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-5.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-6.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-7.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-8.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-9.sql
│       │               │   ├── json_table-generalizes-sql-json-query-functions-and-conditions-0.sql
│       │               │   ├── json_table-generalizes-sql-json-query-functions-and-conditions-1.sql
│       │               │   ├── json_transform-operation-handlers-0.sql
│       │               │   ├── json_transform-operation-handlers-1.sql
│       │               │   ├── json_transform-operation-handlers-2.sql
│       │               │   ├── json_transform-operation-handlers-3.sql
│       │               │   ├── json_transform-operation-handlers-4.sql
│       │               │   ├── json_transform-operation-handlers-5.sql
│       │               │   ├── json_transform-operation-handlers-6.sql
│       │               │   ├── json_transform-operator-0.sql
│       │               │   ├── json_transform-operator-append-0.sql
│       │               │   ├── json_transform-operator-append-2.sql
│       │               │   ├── json_transform-operator-append-3.sql
│       │               │   ├── json_transform-operator-append-5.sql
│       │               │   ├── json_transform-operator-copy-0.sql
│       │               │   ├── json_transform-operator-insert-0.sql
│       │               │   ├── json_transform-operator-insert-1.sql
│       │               │   ├── json_transform-operator-insert-2.sql
│       │               │   ├── json_transform-operator-intersect-0.sql
│       │               │   ├── json_transform-operator-intersect-1.sql
│       │               │   ├── json_transform-operator-keep-0.sql
│       │               │   ├── json_transform-operator-keep-1.sql
│       │               │   ├── json_transform-operator-merge-0.sql
│       │               │   ├── json_transform-operator-nested-path-3.sql
│       │               │   ├── json_transform-operator-prepend-0.sql
│       │               │   ├── json_transform-operator-prepend-1.sql
│       │               │   ├── json_transform-operator-prepend-3.sql
│       │               │   ├── json_transform-operator-remove-0.sql
│       │               │   ├── json_transform-operator-rename-0.sql
│       │               │   ├── json_transform-operator-replace-0.sql
│       │               │   ├── json_transform-operator-set-0.sql
│       │               │   ├── json_transform-operator-set-1.sql
│       │               │   ├── json_transform-operator-set-2.sql
│       │               │   ├── json_transform-operator-set-4.sql
│       │               │   ├── json_transform-operator-set-5.sql
│       │               │   ├── json_transform-operator-set-6.sql
│       │               │   ├── json_transform-operator-set-7.sql
│       │               │   ├── json_transform-operator-sort-0.sql
│       │               │   ├── json_transform-operator-sort-3.sql
│       │               │   ├── json_transform-operator-union-0.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-0.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-1.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-2.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-4.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-5.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-9.sql
│       │               │   ├── loading-external-json-data-0.sql
│       │               │   ├── loading-external-json-data-1.sql
│       │               │   ├── loading-external-json-data-2.sql
│       │               │   ├── loading-external-json-data-3.sql
│       │               │   ├── loading-external-json-data-4.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-0.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-1.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-2.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-3.sql
│       │               │   ├── multiple-data-guides-document-set-0.sql
│       │               │   ├── multiple-data-guides-document-set-1.sql
│       │               │   ├── multiple-data-guides-document-set-2.sql
│       │               │   ├── oracle-sql-condition-json_textcontains-0.sql
│       │               │   ├── oracle-sql-condition-json_textcontains-1.sql
│       │               │   ├── oracle-sql-function-json_mergepatch-2.sql
│       │               │   ├── oracle-sql-function-json_mergepatch-3.sql
│       │               │   ├── oracle-sql-function-json_transform-0.sql
│       │               │   ├── oracle-sql-function-json_transform-1.sql
│       │               │   ├── oracle-sql-function-json_transform-4.sql
│       │               │   ├── overview-json-generation-0.sql
│       │               │   ├── overview-json-generation-2.sql
│       │               │   ├── overview-json-generation-3.sql
│       │               │   ├── overview-json-oracle-database-0.sql
│       │               │   ├── overview-memory-json-data-0.sql
│       │               │   ├── partitioning-json-data-0.sql
│       │               │   ├── partitioning-json-data-1.sql
│       │               │   ├── passing-clause-sql-functions-and-conditions-0.sql
│       │               │   ├── passing-clause-sql-functions-and-conditions-1.sql
│       │               │   ├── performing-migration-check-1.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-0.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-1.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-2.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-3.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-0.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-1.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-2.sql
│       │               │   ├── populating-json-data-memory-column-store-0.sql
│       │               │   ├── populating-json-data-memory-column-store-1.sql
│       │               │   ├── querying-data-guide-0.sql
│       │               │   ├── querying-data-guide-1.sql
│       │               │   ├── read-only-views-based-json-generation-0.sql
│       │               │   ├── read-only-views-based-json-generation-1.sql
│       │               │   ├── read-only-views-based-json-generation-2.sql
│       │               │   ├── simple-dot-notation-access-json-data-0.sql
│       │               │   ├── simple-dot-notation-access-json-data-1.sql
│       │               │   ├── simple-dot-notation-access-json-data-2.sql
│       │               │   ├── simple-dot-notation-access-json-data-3.sql
│       │               │   ├── simple-dot-notation-access-json-data-4.sql
│       │               │   ├── simple-dot-notation-access-json-data-5.sql
│       │               │   ├── simple-dot-notation-access-json-data-6.sql
│       │               │   ├── simple-dot-notation-access-json-data-7.sql
│       │               │   ├── simple-dot-notation-access-json-data-8.sql
│       │               │   ├── specifying-preferred-name-field-column-0.sql
│       │               │   ├── sql-json-condition-json_exists-0.sql
│       │               │   ├── sql-json-condition-json_exists-1.sql
│       │               │   ├── sql-json-conditions-is-json-and-is-not-json-6.sql
│       │               │   ├── sql-json-function-json_array-0.sql
│       │               │   ├── sql-json-function-json_array-1.sql
│       │               │   ├── sql-json-function-json_array-3.sql
│       │               │   ├── sql-json-function-json_arrayagg-0.sql
│       │               │   ├── sql-json-function-json_arrayagg-1.sql
│       │               │   ├── sql-json-function-json_object-0.sql
│       │               │   ├── sql-json-function-json_object-10.sql
│       │               │   ├── sql-json-function-json_object-11.sql
│       │               │   ├── sql-json-function-json_object-13.sql
│       │               │   ├── sql-json-function-json_object-14.sql
│       │               │   ├── sql-json-function-json_object-16.sql
│       │               │   ├── sql-json-function-json_object-18.sql
│       │               │   ├── sql-json-function-json_object-19.sql
│       │               │   ├── sql-json-function-json_object-21.sql
│       │               │   ├── sql-json-function-json_object-7.sql
│       │               │   ├── sql-json-function-json_object-8.sql
│       │               │   ├── sql-json-function-json_objectagg-0.sql
│       │               │   ├── sql-json-function-json_query-0.sql
│       │               │   ├── sql-json-function-json_query-1.sql
│       │               │   ├── sql-json-function-json_table-2.sql
│       │               │   ├── sql-json-function-json_table-3.sql
│       │               │   ├── sql-json-path-expression-item-methods-0.sql
│       │               │   ├── sql-json-path-expression-item-methods-1.sql
│       │               │   ├── sql-json-path-expression-item-methods-2.sql
│       │               │   ├── sql-json-path-expression-item-methods-3.sql
│       │               │   ├── sql-json-path-expression-item-methods-4.sql
│       │               │   ├── sql-json-path-expression-item-methods-5.sql
│       │               │   ├── sql-json-path-expression-item-methods-6.sql
│       │               │   ├── sql-json-path-expression-syntax-2.sql
│       │               │   ├── sql-json-path-expression-syntax-4.sql
│       │               │   ├── sql-json-path-expression-syntax-7.sql
│       │               │   ├── sql-nested-clause-instead-json_table-2.sql
│       │               │   ├── sql-nested-clause-instead-json_table-4.sql
│       │               │   ├── tables-json-columns-0.sql
│       │               │   ├── tables-json-columns-1.sql
│       │               │   ├── tables-json-columns-2.sql
│       │               │   ├── tables-json-columns-3.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-0.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-1.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-2.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-3.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-4.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-5.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-6.sql
│       │               │   ├── types-filter-condition-comparisons-0.sql
│       │               │   ├── use-bind-variables-json_transform-0.sql
│       │               │   ├── use-bind-variables-json_transform-1.sql
│       │               │   ├── use-bind-variables-json_transform-2.sql
│       │               │   ├── using-filters-json_exists-0.sql
│       │               │   ├── using-filters-json_exists-1.sql
│       │               │   ├── using-filters-json_exists-2.sql
│       │               │   ├── using-filters-json_exists-3.sql
│       │               │   ├── using-filters-json_exists-4.sql
│       │               │   ├── using-geojson-geographic-data-0.sql
│       │               │   ├── using-geojson-geographic-data-1.sql
│       │               │   ├── using-geojson-geographic-data-3.sql
│       │               │   ├── using-geojson-geographic-data-5.sql
│       │               │   ├── using-geojson-geographic-data-6.sql
│       │               │   ├── using-json_table-json-arrays-0.sql
│       │               │   ├── using-json_table-json-arrays-1.sql
│       │               │   ├── using-json_table-json-arrays-2.sql
│       │               │   ├── using-json_table-json-arrays-4.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-0.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-1.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-2.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-3.sql
│       │               │   ├── using-json_value-function-based-index-json_table-queries-0.sql
│       │               │   ├── using-multivalue-function-based-index-0.sql
│       │               │   ├── using-multivalue-function-based-index-1.sql
│       │               │   ├── using-multivalue-function-based-index-2.sql
│       │               │   ├── using-multivalue-function-based-index-3.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-0.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-1.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-2.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-3.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-4.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-7.sql
│       │               │   ├── using-oracle-data-pump-migrate-json-data-type-0.sql
│       │               │   ├── using-pl-sql-object-types-json-0.sql
│       │               │   ├── using-pl-sql-object-types-json-1.sql
│       │               │   ├── using-pl-sql-object-types-json-2.sql
│       │               │   ├── using-sql-json-function-json_value-boolean-json-value-0.sql
│       │               │   ├── using-sql-json-function-json_value-boolean-json-value-1.sql
│       │               │   └── using-sql-json-function-json_value-boolean-json-value-3.sql
│       │               ├── lnpls/
│       │               │   ├── ALTER-FUNCTION-statement-0.sql
│       │               │   ├── ALTER-LIBRARY-statement-0.sql
│       │               │   ├── ALTER-PACKAGE-statement-0.sql
│       │               │   ├── ALTER-PACKAGE-statement-1.sql
│       │               │   ├── ALTER-PROCEDURE-statement-0.sql
│       │               │   ├── ALTER-TRIGGER-statement-0.sql
│       │               │   ├── ALTER-TRIGGER-statement-1.sql
│       │               │   ├── ALTER-TYPE-statement-0.sql
│       │               │   ├── ALTER-TYPE-statement-1.sql
│       │               │   ├── ALTER-TYPE-statement-10.sql
│       │               │   ├── ALTER-TYPE-statement-11.sql
│       │               │   ├── ALTER-TYPE-statement-12.sql
│       │               │   ├── ALTER-TYPE-statement-13.sql
│       │               │   ├── ALTER-TYPE-statement-14.sql
│       │               │   ├── ALTER-TYPE-statement-2.sql
│       │               │   ├── ALTER-TYPE-statement-3.sql
│       │               │   ├── ALTER-TYPE-statement-4.sql
│       │               │   ├── ALTER-TYPE-statement-5.sql
│       │               │   ├── ALTER-TYPE-statement-6.sql
│       │               │   ├── ALTER-TYPE-statement-7.sql
│       │               │   ├── ALTER-TYPE-statement-8.sql
│       │               │   ├── ALTER-TYPE-statement-9.sql
│       │               │   ├── CONTINUE-statement-0.sql
│       │               │   ├── CONTINUE-statement-2.sql
│       │               │   ├── COVERAGE-pragma-3.sql
│       │               │   ├── CREATE-FUNCTION-statement-0.sql
│       │               │   ├── CREATE-FUNCTION-statement-1.sql
│       │               │   ├── CREATE-FUNCTION-statement-2.sql
│       │               │   ├── CREATE-FUNCTION-statement-3.sql
│       │               │   ├── CREATE-FUNCTION-statement-4.sql
│       │               │   ├── CREATE-FUNCTION-statement-5.sql
│       │               │   ├── CREATE-FUNCTION-statement-6.sql
│       │               │   ├── CREATE-FUNCTION-statement-7.sql
│       │               │   ├── CREATE-FUNCTION-statement-8.sql
│       │               │   ├── CREATE-LIBRARY-statement-0.sql
│       │               │   ├── CREATE-LIBRARY-statement-1.sql
│       │               │   ├── CREATE-LIBRARY-statement-2.sql
│       │               │   ├── CREATE-LIBRARY-statement-3.sql
│       │               │   ├── CREATE-LIBRARY-statement-4.sql
│       │               │   ├── CREATE-PACKAGE-BODY-statement-0.sql
│       │               │   ├── CREATE-PACKAGE-statement-0.sql
│       │               │   ├── CREATE-PROCEDURE-statement-0.sql
│       │               │   ├── CREATE-PROCEDURE-statement-1.sql
│       │               │   ├── CREATE-PROCEDURE-statement-2.sql
│       │               │   ├── CREATE-PROCEDURE-statement-3.sql
│       │               │   ├── CREATE-PROCEDURE-statement-5.sql
│       │               │   ├── CREATE-PROCEDURE-statement-6.sql
│       │               │   ├── CREATE-TYPE-statement-0.sql
│       │               │   ├── CREATE-TYPE-statement-1.sql
│       │               │   ├── CREATE-TYPE-statement-10.sql
│       │               │   ├── CREATE-TYPE-statement-11.sql
│       │               │   ├── CREATE-TYPE-statement-12.sql
│       │               │   ├── CREATE-TYPE-statement-13.sql
│       │               │   ├── CREATE-TYPE-statement-15.sql
│       │               │   ├── CREATE-TYPE-statement-16.sql
│       │               │   ├── CREATE-TYPE-statement-17.sql
│       │               │   ├── CREATE-TYPE-statement-2.sql
│       │               │   ├── CREATE-TYPE-statement-3.sql
│       │               │   ├── CREATE-TYPE-statement-4.sql
│       │               │   ├── CREATE-TYPE-statement-6.sql
│       │               │   ├── CREATE-TYPE-statement-7.sql
│       │               │   ├── CREATE-TYPE-statement-8.sql
│       │               │   ├── CREATE-TYPE-statement-9.sql
│       │               │   ├── DEPRECATE-pragma-0.sql
│       │               │   ├── DEPRECATE-pragma-1.sql
│       │               │   ├── DEPRECATE-pragma-10.sql
│       │               │   ├── DEPRECATE-pragma-13.sql
│       │               │   ├── DEPRECATE-pragma-18.sql
│       │               │   ├── DEPRECATE-pragma-3.sql
│       │               │   ├── DEPRECATE-pragma-32.sql
│       │               │   ├── DEPRECATE-pragma-34.sql
│       │               │   ├── DEPRECATE-pragma-6.sql
│       │               │   ├── DEPRECATE-pragma-8.sql
│       │               │   ├── DROP-FUNCTION-statement-0.sql
│       │               │   ├── DROP-LIBRARY-statement-0.sql
│       │               │   ├── DROP-PACKAGE-statement-0.sql
│       │               │   ├── DROP-PROCEDURE-statement-0.sql
│       │               │   ├── DROP-TRIGGER-statement-0.sql
│       │               │   ├── DROP-TYPE-BODY-statement-0.sql
│       │               │   ├── DROP-TYPE-statement-0.sql
│       │               │   ├── EXECUTE-IMMEDIATE-statement-0.sql
│       │               │   ├── EXIT-statement-0.sql
│       │               │   ├── EXIT-statement-2.sql
│       │               │   ├── FOR-LOOP-statement-0.sql
│       │               │   ├── FOR-LOOP-statement-1.sql
│       │               │   ├── FOR-LOOP-statement-2.sql
│       │               │   ├── GOTO-statement-0.sql
│       │               │   ├── GOTO-statement-4.sql
│       │               │   ├── GOTO-statement-5.sql
│       │               │   ├── GOTO-statement-7.sql
│       │               │   ├── PIPELINED-clause-1.sql
│       │               │   ├── SQLERRM-function-1.sql
│       │               │   ├── SQLERRM-function-4.sql
│       │               │   ├── SQL_MACRO-clause-1.sql
│       │               │   ├── SQL_MACRO-clause-11.sql
│       │               │   ├── SQL_MACRO-clause-13.sql
│       │               │   ├── SQL_MACRO-clause-14.sql
│       │               │   ├── SQL_MACRO-clause-16.sql
│       │               │   ├── SQL_MACRO-clause-17.sql
│       │               │   ├── SQL_MACRO-clause-19.sql
│       │               │   ├── SQL_MACRO-clause-2.sql
│       │               │   ├── SQL_MACRO-clause-20.sql
│       │               │   ├── SQL_MACRO-clause-22.sql
│       │               │   ├── SQL_MACRO-clause-24.sql
│       │               │   ├── SQL_MACRO-clause-25.sql
│       │               │   ├── SQL_MACRO-clause-27.sql
│       │               │   ├── SQL_MACRO-clause-29.sql
│       │               │   ├── SQL_MACRO-clause-3.sql
│       │               │   ├── SQL_MACRO-clause-31.sql
│       │               │   ├── SQL_MACRO-clause-4.sql
│       │               │   ├── SQL_MACRO-clause-5.sql
│       │               │   ├── SQL_MACRO-clause-6.sql
│       │               │   ├── SQL_MACRO-clause-7.sql
│       │               │   ├── SQL_MACRO-clause-9.sql
│       │               │   ├── Supresses-warning-pragma-6009-0.sql
│       │               │   ├── Supresses-warning-pragma-6009-1.sql
│       │               │   ├── Supresses-warning-pragma-6009-10.sql
│       │               │   ├── Supresses-warning-pragma-6009-11.sql
│       │               │   ├── Supresses-warning-pragma-6009-2.sql
│       │               │   ├── Supresses-warning-pragma-6009-3.sql
│       │               │   ├── Supresses-warning-pragma-6009-4.sql
│       │               │   ├── Supresses-warning-pragma-6009-5.sql
│       │               │   ├── Supresses-warning-pragma-6009-6.sql
│       │               │   ├── Supresses-warning-pragma-6009-7.sql
│       │               │   ├── Supresses-warning-pragma-6009-8.sql
│       │               │   ├── Supresses-warning-pragma-6009-9.sql
│       │               │   ├── WHILE-LOOP-statement-0.sql
│       │               │   ├── assigning-values-collection-variables-0.sql
│       │               │   ├── assigning-values-collection-variables-2.sql
│       │               │   ├── assigning-values-collection-variables-4.sql
│       │               │   ├── assigning-values-record-variables-1.sql
│       │               │   ├── assigning-values-record-variables-10.sql
│       │               │   ├── assigning-values-record-variables-12.sql
│       │               │   ├── assigning-values-record-variables-13.sql
│       │               │   ├── assigning-values-record-variables-15.sql
│       │               │   ├── assigning-values-record-variables-17.sql
│       │               │   ├── assigning-values-record-variables-3.sql
│       │               │   ├── assigning-values-record-variables-5.sql
│       │               │   ├── assigning-values-record-variables-7.sql
│       │               │   ├── assigning-values-record-variables-9.sql
│       │               │   ├── assigning-values-variables-1.sql
│       │               │   ├── assigning-values-variables-3.sql
│       │               │   ├── assigning-values-variables-5.sql
│       │               │   ├── assigning-values-variables-7.sql
│       │               │   ├── autonomous-transactions-0.sql
│       │               │   ├── autonomous-transactions-1.sql
│       │               │   ├── autonomous-transactions-2.sql
│       │               │   ├── autonomous-transactions-3.sql
│       │               │   ├── autonomous-transactions-4.sql
│       │               │   ├── autonomous-transactions-6.sql
│       │               │   ├── autonomous-transactions-7.sql
│       │               │   ├── autonomous-transactions-9.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-0.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-10.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-2.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-3.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-4.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-5.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-6.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-7.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-8.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-9.sql
│       │               │   ├── basic-LOOP-statement-0.sql
│       │               │   ├── basic-LOOP-statement-2.sql
│       │               │   ├── bulk-sql-and-bulk-binding-0.sql
│       │               │   ├── bulk-sql-and-bulk-binding-1.sql
│       │               │   ├── bulk-sql-and-bulk-binding-10.sql
│       │               │   ├── bulk-sql-and-bulk-binding-12.sql
│       │               │   ├── bulk-sql-and-bulk-binding-14.sql
│       │               │   ├── bulk-sql-and-bulk-binding-15.sql
│       │               │   ├── bulk-sql-and-bulk-binding-17.sql
│       │               │   ├── bulk-sql-and-bulk-binding-19.sql
│       │               │   ├── bulk-sql-and-bulk-binding-2.sql
│       │               │   ├── bulk-sql-and-bulk-binding-22.sql
│       │               │   ├── bulk-sql-and-bulk-binding-24.sql
│       │               │   ├── bulk-sql-and-bulk-binding-26.sql
│       │               │   ├── bulk-sql-and-bulk-binding-28.sql
│       │               │   ├── bulk-sql-and-bulk-binding-3.sql
│       │               │   ├── bulk-sql-and-bulk-binding-30.sql
│       │               │   ├── bulk-sql-and-bulk-binding-32.sql
│       │               │   ├── bulk-sql-and-bulk-binding-34.sql
│       │               │   ├── bulk-sql-and-bulk-binding-37.sql
│       │               │   ├── bulk-sql-and-bulk-binding-38.sql
│       │               │   ├── bulk-sql-and-bulk-binding-40.sql
│       │               │   ├── bulk-sql-and-bulk-binding-42.sql
│       │               │   ├── bulk-sql-and-bulk-binding-43.sql
│       │               │   ├── bulk-sql-and-bulk-binding-45.sql
│       │               │   ├── bulk-sql-and-bulk-binding-47.sql
│       │               │   ├── bulk-sql-and-bulk-binding-48.sql
│       │               │   ├── bulk-sql-and-bulk-binding-5.sql
│       │               │   ├── bulk-sql-and-bulk-binding-50.sql
│       │               │   ├── bulk-sql-and-bulk-binding-52.sql
│       │               │   ├── bulk-sql-and-bulk-binding-53.sql
│       │               │   ├── bulk-sql-and-bulk-binding-55.sql
│       │               │   ├── bulk-sql-and-bulk-binding-57.sql
│       │               │   ├── bulk-sql-and-bulk-binding-59.sql
│       │               │   ├── bulk-sql-and-bulk-binding-6.sql
│       │               │   ├── bulk-sql-and-bulk-binding-61.sql
│       │               │   ├── bulk-sql-and-bulk-binding-63.sql
│       │               │   ├── bulk-sql-and-bulk-binding-65.sql
│       │               │   ├── bulk-sql-and-bulk-binding-67.sql
│       │               │   ├── bulk-sql-and-bulk-binding-8.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-0.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-1.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-10.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-12.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-13.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-14.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-16.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-17.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-18.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-2.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-21.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-23.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-3.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-4.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-6.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-8.sql
│       │               │   ├── collection-comparisons-0.sql
│       │               │   ├── collection-comparisons-2.sql
│       │               │   ├── collection-comparisons-4.sql
│       │               │   ├── collection-methods-1.sql
│       │               │   ├── collection-methods-11.sql
│       │               │   ├── collection-methods-13.sql
│       │               │   ├── collection-methods-15.sql
│       │               │   ├── collection-methods-17.sql
│       │               │   ├── collection-methods-19.sql
│       │               │   ├── collection-methods-21.sql
│       │               │   ├── collection-methods-23.sql
│       │               │   ├── collection-methods-25.sql
│       │               │   ├── collection-methods-27.sql
│       │               │   ├── collection-methods-29.sql
│       │               │   ├── collection-methods-3.sql
│       │               │   ├── collection-methods-5.sql
│       │               │   ├── collection-methods-7.sql
│       │               │   ├── collection-methods-9.sql
│       │               │   ├── collection-types-defined-package-specifications-0.sql
│       │               │   ├── collection-types-defined-package-specifications-2.sql
│       │               │   ├── column-name-precedence-0.sql
│       │               │   ├── column-name-precedence-2.sql
│       │               │   ├── column-name-precedence-4.sql
│       │               │   ├── column-name-precedence-6.sql
│       │               │   ├── compile-time-warnings-1.sql
│       │               │   ├── compile-time-warnings-11.sql
│       │               │   ├── compile-time-warnings-13.sql
│       │               │   ├── compile-time-warnings-2.sql
│       │               │   ├── compile-time-warnings-3.sql
│       │               │   ├── compile-time-warnings-4.sql
│       │               │   ├── compile-time-warnings-5.sql
│       │               │   ├── compile-time-warnings-6.sql
│       │               │   ├── compile-time-warnings-7.sql
│       │               │   ├── compile-time-warnings-8.sql
│       │               │   ├── compile-time-warnings-9.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-0.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-1.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-2.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-3.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-4.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-5.sql
│       │               │   ├── conditional-compilation1-10.sql
│       │               │   ├── conditional-compilation1-12.sql
│       │               │   ├── conditional-compilation1-13.sql
│       │               │   ├── conditional-compilation1-14.sql
│       │               │   ├── conditional-compilation1-18.sql
│       │               │   ├── conditional-compilation1-20.sql
│       │               │   ├── conditional-compilation1-21.sql
│       │               │   ├── conditional-compilation1-23.sql
│       │               │   ├── conditional-compilation1-25.sql
│       │               │   ├── conditional-selection-statements-10.sql
│       │               │   ├── conditional-selection-statements-14.sql
│       │               │   ├── conditional-selection-statements-16.sql
│       │               │   ├── conditional-selection-statements-19.sql
│       │               │   ├── conditional-selection-statements-21.sql
│       │               │   ├── conditional-selection-statements-24.sql
│       │               │   ├── conditional-selection-statements-26.sql
│       │               │   ├── conditional-selection-statements-5.sql
│       │               │   ├── conditional-selection-statements-8.sql
│       │               │   ├── continuing-execution-handling-exceptions-0.sql
│       │               │   ├── continuing-execution-handling-exceptions-2.sql
│       │               │   ├── correlation-names-and-pseudorecords-11.sql
│       │               │   ├── correlation-names-and-pseudorecords-13.sql
│       │               │   ├── correlation-names-and-pseudorecords-15.sql
│       │               │   ├── correlation-names-and-pseudorecords-16.sql
│       │               │   ├── correlation-names-and-pseudorecords-17.sql
│       │               │   ├── correlation-names-and-pseudorecords-19.sql
│       │               │   ├── correlation-names-and-pseudorecords-2.sql
│       │               │   ├── correlation-names-and-pseudorecords-20.sql
│       │               │   ├── correlation-names-and-pseudorecords-22.sql
│       │               │   ├── correlation-names-and-pseudorecords-3.sql
│       │               │   ├── correlation-names-and-pseudorecords-4.sql
│       │               │   ├── correlation-names-and-pseudorecords-6.sql
│       │               │   ├── correlation-names-and-pseudorecords-8.sql
│       │               │   ├── correlation-names-and-pseudorecords-9.sql
│       │               │   ├── cursor-expressions-1.sql
│       │               │   ├── cursor-variables-1.sql
│       │               │   ├── cursor-variables-10.sql
│       │               │   ├── cursor-variables-12.sql
│       │               │   ├── cursor-variables-14.sql
│       │               │   ├── cursor-variables-15.sql
│       │               │   ├── cursor-variables-16.sql
│       │               │   ├── cursor-variables-17.sql
│       │               │   ├── cursor-variables-18.sql
│       │               │   ├── cursor-variables-19.sql
│       │               │   ├── cursor-variables-2.sql
│       │               │   ├── cursor-variables-3.sql
│       │               │   ├── cursor-variables-5.sql
│       │               │   ├── cursor-variables-8.sql
│       │               │   ├── cursors-overview-0.sql
│       │               │   ├── cursors-overview-10.sql
│       │               │   ├── cursors-overview-12.sql
│       │               │   ├── cursors-overview-14.sql
│       │               │   ├── cursors-overview-16.sql
│       │               │   ├── cursors-overview-18.sql
│       │               │   ├── cursors-overview-2.sql
│       │               │   ├── cursors-overview-20.sql
│       │               │   ├── cursors-overview-22.sql
│       │               │   ├── cursors-overview-24.sql
│       │               │   ├── cursors-overview-25.sql
│       │               │   ├── cursors-overview-27.sql
│       │               │   ├── cursors-overview-29.sql
│       │               │   ├── cursors-overview-6.sql
│       │               │   ├── cursors-overview-7.sql
│       │               │   ├── cursors-overview-8.sql
│       │               │   ├── dbms_sql-package-1.sql
│       │               │   ├── dbms_sql-package-4.sql
│       │               │   ├── dbms_sql-package-6.sql
│       │               │   ├── dbms_sql-package-7.sql
│       │               │   ├── declarations-0.sql
│       │               │   ├── declarations-1.sql
│       │               │   ├── declarations-11.sql
│       │               │   ├── declarations-2.sql
│       │               │   ├── declarations-3.sql
│       │               │   ├── declarations-4.sql
│       │               │   ├── declarations-5.sql
│       │               │   ├── declarations-9.sql
│       │               │   ├── description-static-sql-0.sql
│       │               │   ├── description-static-sql-2.sql
│       │               │   ├── dml-triggers-0.sql
│       │               │   ├── dml-triggers-1.sql
│       │               │   ├── dml-triggers-10.sql
│       │               │   ├── dml-triggers-12.sql
│       │               │   ├── dml-triggers-13.sql
│       │               │   ├── dml-triggers-15.sql
│       │               │   ├── dml-triggers-17.sql
│       │               │   ├── dml-triggers-18.sql
│       │               │   ├── dml-triggers-2.sql
│       │               │   ├── dml-triggers-20.sql
│       │               │   ├── dml-triggers-23.sql
│       │               │   ├── dml-triggers-24.sql
│       │               │   ├── dml-triggers-25.sql
│       │               │   ├── dml-triggers-27.sql
│       │               │   ├── dml-triggers-28.sql
│       │               │   ├── dml-triggers-30.sql
│       │               │   ├── dml-triggers-32.sql
│       │               │   ├── dml-triggers-33.sql
│       │               │   ├── dml-triggers-34.sql
│       │               │   ├── dml-triggers-35.sql
│       │               │   ├── dml-triggers-36.sql
│       │               │   ├── dml-triggers-37.sql
│       │               │   ├── dml-triggers-38.sql
│       │               │   ├── dml-triggers-39.sql
│       │               │   ├── dml-triggers-4.sql
│       │               │   ├── dml-triggers-40.sql
│       │               │   ├── dml-triggers-41.sql
│       │               │   ├── dml-triggers-42.sql
│       │               │   ├── dml-triggers-43.sql
│       │               │   ├── dml-triggers-44.sql
│       │               │   ├── dml-triggers-45.sql
│       │               │   ├── dml-triggers-47.sql
│       │               │   ├── dml-triggers-49.sql
│       │               │   ├── dml-triggers-50.sql
│       │               │   ├── dml-triggers-51.sql
│       │               │   ├── dml-triggers-52.sql
│       │               │   ├── dml-triggers-54.sql
│       │               │   ├── dml-triggers-56.sql
│       │               │   ├── dml-triggers-6.sql
│       │               │   ├── dml-triggers-8.sql
│       │               │   ├── exception-handling-triggers-0.sql
│       │               │   ├── exception-handling-triggers-1.sql
│       │               │   ├── exception-propagation-0.sql
│       │               │   ├── exception-propagation-1.sql
│       │               │   ├── exception-propagation-11.sql
│       │               │   ├── exception-propagation-13.sql
│       │               │   ├── exception-propagation-15.sql
│       │               │   ├── exception-propagation-3.sql
│       │               │   ├── exception-propagation-5.sql
│       │               │   ├── exception-propagation-7.sql
│       │               │   ├── exception-propagation-9.sql
│       │               │   ├── expressions-0.sql
│       │               │   ├── expressions-10.sql
│       │               │   ├── expressions-12.sql
│       │               │   ├── expressions-13.sql
│       │               │   ├── expressions-15.sql
│       │               │   ├── expressions-17.sql
│       │               │   ├── expressions-19.sql
│       │               │   ├── expressions-2.sql
│       │               │   ├── expressions-21.sql
│       │               │   ├── expressions-23.sql
│       │               │   ├── expressions-24.sql
│       │               │   ├── expressions-26.sql
│       │               │   ├── expressions-28.sql
│       │               │   ├── expressions-35.sql
│       │               │   ├── expressions-37.sql
│       │               │   ├── expressions-39.sql
│       │               │   ├── expressions-4.sql
│       │               │   ├── expressions-41.sql
│       │               │   ├── expressions-43.sql
│       │               │   ├── expressions-46.sql
│       │               │   ├── expressions-48.sql
│       │               │   ├── expressions-50.sql
│       │               │   ├── expressions-52.sql
│       │               │   ├── expressions-54.sql
│       │               │   ├── expressions-57.sql
│       │               │   ├── expressions-59.sql
│       │               │   ├── expressions-6.sql
│       │               │   ├── expressions-62.sql
│       │               │   ├── expressions-8.sql
│       │               │   ├── external-subprograms-1.sql
│       │               │   ├── external-subprograms-2.sql
│       │               │   ├── external-subprograms-4.sql
│       │               │   ├── external-subprograms-5.sql
│       │               │   ├── forward-declaration-0.sql
│       │               │   ├── inserting-records-tables-0.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-0.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-2.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-3.sql
│       │               │   ├── lexical-units-0.sql
│       │               │   ├── lexical-units-10.sql
│       │               │   ├── lexical-units-12.sql
│       │               │   ├── lexical-units-15.sql
│       │               │   ├── lexical-units-17.sql
│       │               │   ├── lexical-units-20.sql
│       │               │   ├── lexical-units-23.sql
│       │               │   ├── lexical-units-25.sql
│       │               │   ├── lexical-units-4.sql
│       │               │   ├── lexical-units-6.sql
│       │               │   ├── lexical-units-8.sql
│       │               │   ├── loop-statements-0.sql
│       │               │   ├── loop-statements-10.sql
│       │               │   ├── loop-statements-13.sql
│       │               │   ├── loop-statements-15.sql
│       │               │   ├── loop-statements-17.sql
│       │               │   ├── loop-statements-19.sql
│       │               │   ├── loop-statements-2.sql
│       │               │   ├── loop-statements-25.sql
│       │               │   ├── loop-statements-27.sql
│       │               │   ├── loop-statements-31.sql
│       │               │   ├── loop-statements-33.sql
│       │               │   ├── loop-statements-37.sql
│       │               │   ├── loop-statements-39.sql
│       │               │   ├── loop-statements-4.sql
│       │               │   ├── loop-statements-6.sql
│       │               │   ├── loop-statements-8.sql
│       │               │   ├── main-features-pl-sql-1.sql
│       │               │   ├── minimizing-cpu-overhead-0.sql
│       │               │   ├── minimizing-cpu-overhead-2.sql
│       │               │   ├── multidimensional-collections-0.sql
│       │               │   ├── multidimensional-collections-2.sql
│       │               │   ├── multidimensional-collections-3.sql
│       │               │   ├── native-dynamic-sql-0.sql
│       │               │   ├── native-dynamic-sql-1.sql
│       │               │   ├── native-dynamic-sql-11.sql
│       │               │   ├── native-dynamic-sql-12.sql
│       │               │   ├── native-dynamic-sql-13.sql
│       │               │   ├── native-dynamic-sql-15.sql
│       │               │   ├── native-dynamic-sql-16.sql
│       │               │   ├── native-dynamic-sql-17.sql
│       │               │   ├── native-dynamic-sql-18.sql
│       │               │   ├── native-dynamic-sql-19.sql
│       │               │   ├── native-dynamic-sql-3.sql
│       │               │   ├── native-dynamic-sql-5.sql
│       │               │   ├── native-dynamic-sql-7.sql
│       │               │   ├── native-dynamic-sql-9.sql
│       │               │   ├── overloaded-subprograms-0.sql
│       │               │   ├── overloaded-subprograms-10.sql
│       │               │   ├── overloaded-subprograms-11.sql
│       │               │   ├── overloaded-subprograms-12.sql
│       │               │   ├── overloaded-subprograms-13.sql
│       │               │   ├── overloaded-subprograms-15.sql
│       │               │   ├── overloaded-subprograms-5.sql
│       │               │   ├── overloaded-subprograms-6.sql
│       │               │   ├── overloaded-subprograms-7.sql
│       │               │   ├── overloaded-subprograms-8.sql
│       │               │   ├── overloaded-subprograms-9.sql
│       │               │   ├── overview-exception-handling-1.sql
│       │               │   ├── overview-exception-handling-2.sql
│       │               │   ├── overview-exception-handling-4.sql
│       │               │   ├── overview-exception-handling-6.sql
│       │               │   ├── overview-polymorphic-table-functions-0.sql
│       │               │   ├── overview-polymorphic-table-functions-1.sql
│       │               │   ├── overview-polymorphic-table-functions-10.sql
│       │               │   ├── overview-polymorphic-table-functions-12.sql
│       │               │   ├── overview-polymorphic-table-functions-14.sql
│       │               │   ├── overview-polymorphic-table-functions-16.sql
│       │               │   ├── overview-polymorphic-table-functions-17.sql
│       │               │   ├── overview-polymorphic-table-functions-18.sql
│       │               │   ├── overview-polymorphic-table-functions-19.sql
│       │               │   ├── overview-polymorphic-table-functions-2.sql
│       │               │   ├── overview-polymorphic-table-functions-21.sql
│       │               │   ├── overview-polymorphic-table-functions-23.sql
│       │               │   ├── overview-polymorphic-table-functions-25.sql
│       │               │   ├── overview-polymorphic-table-functions-27.sql
│       │               │   ├── overview-polymorphic-table-functions-29.sql
│       │               │   ├── overview-polymorphic-table-functions-30.sql
│       │               │   ├── overview-polymorphic-table-functions-31.sql
│       │               │   ├── overview-polymorphic-table-functions-4.sql
│       │               │   ├── overview-polymorphic-table-functions-5.sql
│       │               │   ├── overview-polymorphic-table-functions-6.sql
│       │               │   ├── overview-polymorphic-table-functions-8.sql
│       │               │   ├── package-body-0.sql
│       │               │   ├── package-body-2.sql
│       │               │   ├── package-body-4.sql
│       │               │   ├── package-example-0.sql
│       │               │   ├── package-specification-1.sql
│       │               │   ├── package-specification-2.sql
│       │               │   ├── package-writing-guidelines-0.sql
│       │               │   ├── package-writing-guidelines-1.sql
│       │               │   ├── package-writing-guidelines-2.sql
│       │               │   ├── package-writing-guidelines-4.sql
│       │               │   ├── pl-sql-function-result-cache-0.sql
│       │               │   ├── pl-sql-function-result-cache-1.sql
│       │               │   ├── pl-sql-function-result-cache-10.sql
│       │               │   ├── pl-sql-function-result-cache-11.sql
│       │               │   ├── pl-sql-function-result-cache-12.sql
│       │               │   ├── pl-sql-function-result-cache-13.sql
│       │               │   ├── pl-sql-function-result-cache-15.sql
│       │               │   ├── pl-sql-function-result-cache-16.sql
│       │               │   ├── pl-sql-function-result-cache-17.sql
│       │               │   ├── pl-sql-function-result-cache-18.sql
│       │               │   ├── pl-sql-function-result-cache-19.sql
│       │               │   ├── pl-sql-function-result-cache-20.sql
│       │               │   ├── pl-sql-function-result-cache-4.sql
│       │               │   ├── pl-sql-function-result-cache-5.sql
│       │               │   ├── pl-sql-function-result-cache-6.sql
│       │               │   ├── pl-sql-function-result-cache-7.sql
│       │               │   ├── pl-sql-function-result-cache-9.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-0.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-2.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-4.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-6.sql
│       │               │   ├── plsql-program-limits-0.sql
│       │               │   ├── plsql-program-limits-1.sql
│       │               │   ├── plsql-program-limits-2.sql
│       │               │   ├── predefined-exceptions-0.sql
│       │               │   ├── predefined-exceptions-2.sql
│       │               │   ├── predefined-exceptions-3.sql
│       │               │   ├── predefined-exceptions-4.sql
│       │               │   ├── processing-query-result-sets-0.sql
│       │               │   ├── processing-query-result-sets-10.sql
│       │               │   ├── processing-query-result-sets-2.sql
│       │               │   ├── processing-query-result-sets-4.sql
│       │               │   ├── processing-query-result-sets-6.sql
│       │               │   ├── processing-query-result-sets-8.sql
│       │               │   ├── qualified-names-and-dot-notation-6.sql
│       │               │   ├── raising-exceptions-explicitly-0.sql
│       │               │   ├── raising-exceptions-explicitly-2.sql
│       │               │   ├── raising-exceptions-explicitly-3.sql
│       │               │   ├── raising-exceptions-explicitly-5.sql
│       │               │   ├── raising-exceptions-explicitly-9.sql
│       │               │   ├── record-variables-0.sql
│       │               │   ├── record-variables-1.sql
│       │               │   ├── record-variables-11.sql
│       │               │   ├── record-variables-14.sql
│       │               │   ├── record-variables-16.sql
│       │               │   ├── record-variables-19.sql
│       │               │   ├── record-variables-21.sql
│       │               │   ├── record-variables-22.sql
│       │               │   ├── record-variables-24.sql
│       │               │   ├── record-variables-26.sql
│       │               │   ├── record-variables-28.sql
│       │               │   ├── record-variables-3.sql
│       │               │   ├── record-variables-30.sql
│       │               │   ├── record-variables-5.sql
│       │               │   ├── record-variables-7.sql
│       │               │   ├── record-variables-9.sql
│       │               │   ├── recursive-subprograms-1.sql
│       │               │   ├── recursive-subprograms-3.sql
│       │               │   ├── redeclared-predefined-exceptions-0.sql
│       │               │   ├── redeclared-predefined-exceptions-1.sql
│       │               │   ├── redeclared-predefined-exceptions-3.sql
│       │               │   ├── redeclared-predefined-exceptions-5.sql
│       │               │   ├── references-identifiers-0.sql
│       │               │   ├── release-changes-0.sql
│       │               │   ├── release-changes-2.sql
│       │               │   ├── release-changes-3.sql
│       │               │   ├── release-changes-4.sql
│       │               │   ├── retrieving-error-code-and-error-message-0.sql
│       │               │   ├── retrying-transactions-handling-exceptions-0.sql
│       │               │   ├── scope-and-visibility-identifiers-0.sql
│       │               │   ├── scope-and-visibility-identifiers-1.sql
│       │               │   ├── scope-and-visibility-identifiers-11.sql
│       │               │   ├── scope-and-visibility-identifiers-3.sql
│       │               │   ├── scope-and-visibility-identifiers-5.sql
│       │               │   ├── scope-and-visibility-identifiers-7.sql
│       │               │   ├── scope-and-visibility-identifiers-9.sql
│       │               │   ├── sequential-control-statements-0.sql
│       │               │   ├── sequential-control-statements-1.sql
│       │               │   ├── sequential-control-statements-2.sql
│       │               │   ├── serially_reusable-packages-0.sql
│       │               │   ├── serially_reusable-packages-1.sql
│       │               │   ├── serially_reusable-packages-3.sql
│       │               │   ├── serially_reusable-packages-4.sql
│       │               │   ├── serially_reusable-packages-6.sql
│       │               │   ├── sql-data-types-1.sql
│       │               │   ├── sql-data-types-10.sql
│       │               │   ├── sql-data-types-12.sql
│       │               │   ├── sql-data-types-14.sql
│       │               │   ├── sql-data-types-16.sql
│       │               │   ├── sql-data-types-18.sql
│       │               │   ├── sql-data-types-20.sql
│       │               │   ├── sql-data-types-22.sql
│       │               │   ├── sql-data-types-24.sql
│       │               │   ├── sql-data-types-26.sql
│       │               │   ├── sql-data-types-29.sql
│       │               │   ├── sql-data-types-3.sql
│       │               │   ├── sql-data-types-31.sql
│       │               │   ├── sql-data-types-32.sql
│       │               │   ├── sql-data-types-34.sql
│       │               │   ├── sql-data-types-36.sql
│       │               │   ├── sql-data-types-38.sql
│       │               │   ├── sql-data-types-4.sql
│       │               │   ├── sql-data-types-42.sql
│       │               │   ├── sql-data-types-44.sql
│       │               │   ├── sql-data-types-46.sql
│       │               │   ├── sql-data-types-48.sql
│       │               │   ├── sql-data-types-50.sql
│       │               │   ├── sql-data-types-52.sql
│       │               │   ├── sql-data-types-6.sql
│       │               │   ├── sql-data-types-8.sql
│       │               │   ├── sql-injection-0.sql
│       │               │   ├── sql-injection-1.sql
│       │               │   ├── sql-injection-10.sql
│       │               │   ├── sql-injection-12.sql
│       │               │   ├── sql-injection-13.sql
│       │               │   ├── sql-injection-14.sql
│       │               │   ├── sql-injection-16.sql
│       │               │   ├── sql-injection-18.sql
│       │               │   ├── sql-injection-19.sql
│       │               │   ├── sql-injection-2.sql
│       │               │   ├── sql-injection-21.sql
│       │               │   ├── sql-injection-23.sql
│       │               │   ├── sql-injection-24.sql
│       │               │   ├── sql-injection-26.sql
│       │               │   ├── sql-injection-28.sql
│       │               │   ├── sql-injection-30.sql
│       │               │   ├── sql-injection-31.sql
│       │               │   ├── sql-injection-4.sql
│       │               │   ├── sql-injection-6.sql
│       │               │   ├── sql-injection-7.sql
│       │               │   ├── sql-injection-9.sql
│       │               │   ├── subprogram-invocation-resolution-0.sql
│       │               │   ├── subprogram-parameters-10.sql
│       │               │   ├── subprogram-parameters-12.sql
│       │               │   ├── subprogram-parameters-13.sql
│       │               │   ├── subprogram-parameters-15.sql
│       │               │   ├── subprogram-parameters-17.sql
│       │               │   ├── subprogram-parameters-19.sql
│       │               │   ├── subprogram-parameters-2.sql
│       │               │   ├── subprogram-parameters-21.sql
│       │               │   ├── subprogram-parameters-24.sql
│       │               │   ├── subprogram-parameters-26.sql
│       │               │   ├── subprogram-parameters-27.sql
│       │               │   ├── subprogram-parameters-29.sql
│       │               │   ├── subprogram-parameters-30.sql
│       │               │   ├── subprogram-parameters-32.sql
│       │               │   ├── subprogram-parameters-33.sql
│       │               │   ├── subprogram-parameters-36.sql
│       │               │   ├── subprogram-parameters-37.sql
│       │               │   ├── subprogram-parameters-4.sql
│       │               │   ├── subprogram-parameters-6.sql
│       │               │   ├── subprogram-parameters-8.sql
│       │               │   ├── subprogram-parts-0.sql
│       │               │   ├── subprogram-parts-11.sql
│       │               │   ├── subprogram-parts-2.sql
│       │               │   ├── subprogram-parts-4.sql
│       │               │   ├── subprogram-parts-6.sql
│       │               │   ├── subprogram-parts-7.sql
│       │               │   ├── subprogram-parts-9.sql
│       │               │   ├── subprograms-invoked-triggers-0.sql
│       │               │   ├── system-triggers-0.sql
│       │               │   ├── system-triggers-1.sql
│       │               │   ├── system-triggers-2.sql
│       │               │   ├── system-triggers-3.sql
│       │               │   ├── transaction-processing-and-control-0.sql
│       │               │   ├── transaction-processing-and-control-1.sql
│       │               │   ├── transaction-processing-and-control-11.sql
│       │               │   ├── transaction-processing-and-control-2.sql
│       │               │   ├── transaction-processing-and-control-3.sql
│       │               │   ├── transaction-processing-and-control-5.sql
│       │               │   ├── transaction-processing-and-control-6.sql
│       │               │   ├── transaction-processing-and-control-7.sql
│       │               │   ├── transaction-processing-and-control-8.sql
│       │               │   ├── transaction-processing-and-control-9.sql
│       │               │   ├── trigger-design-guidelines-0.sql
│       │               │   ├── trigger-design-guidelines-1.sql
│       │               │   ├── trigger-restrictions-0.sql
│       │               │   ├── trigger-restrictions-11.sql
│       │               │   ├── trigger-restrictions-12.sql
│       │               │   ├── trigger-restrictions-14.sql
│       │               │   ├── trigger-restrictions-2.sql
│       │               │   ├── trigger-restrictions-4.sql
│       │               │   ├── trigger-restrictions-6.sql
│       │               │   ├── trigger-restrictions-7.sql
│       │               │   ├── trigger-restrictions-9.sql
│       │               │   ├── triggers-publishing-events-0.sql
│       │               │   ├── triggers-publishing-events-10.sql
│       │               │   ├── triggers-publishing-events-12.sql
│       │               │   ├── triggers-publishing-events-14.sql
│       │               │   ├── triggers-publishing-events-16.sql
│       │               │   ├── triggers-publishing-events-18.sql
│       │               │   ├── triggers-publishing-events-2.sql
│       │               │   ├── triggers-publishing-events-20.sql
│       │               │   ├── triggers-publishing-events-24.sql
│       │               │   ├── triggers-publishing-events-28.sql
│       │               │   ├── triggers-publishing-events-30.sql
│       │               │   ├── triggers-publishing-events-34.sql
│       │               │   ├── triggers-publishing-events-36.sql
│       │               │   ├── triggers-publishing-events-38.sql
│       │               │   ├── triggers-publishing-events-4.sql
│       │               │   ├── triggers-publishing-events-42.sql
│       │               │   ├── triggers-publishing-events-48.sql
│       │               │   ├── triggers-publishing-events-50.sql
│       │               │   ├── triggers-publishing-events-52.sql
│       │               │   ├── triggers-publishing-events-6.sql
│       │               │   ├── triggers-publishing-events-8.sql
│       │               │   ├── updating-rows-records-0.sql
│       │               │   ├── user-defined-pl-sql-subtypes-2.sql
│       │               │   ├── user-defined-pl-sql-subtypes-5.sql
│       │               │   ├── user-defined-pl-sql-subtypes-7.sql
│       │               │   ├── user-defined-pl-sql-subtypes-9.sql
│       │               │   ├── views-information-triggers-0.sql
│       │               │   ├── views-information-triggers-1.sql
│       │               │   ├── views-information-triggers-2.sql
│       │               │   ├── views-information-triggers-4.sql
│       │               │   ├── views-information-triggers-5.sql
│       │               │   ├── what-is-capture-0.sql
│       │               │   ├── what-is-capture-1.sql
│       │               │   ├── what-is-capture-2.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-0.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-1.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-2.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-3.sql
│       │               │   ├── wrapping-pl-sql-source-text-pl-sql-wrapper-utility-4.sql
│       │               │   └── wrapping-pl-sql-source-text-pl-sql-wrapper-utility-7.sql
│       │               └── sqlrf/
│       │                   ├── ABS-0.sql
│       │                   ├── ACOS-0.sql
│       │                   ├── ADD_MONTHS-0.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-10.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-11.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-12.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-13.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-14.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-15.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-16.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-17.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-18.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-19.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-2.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-20.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-21.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-22.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-23.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-24.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-25.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-26.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-27.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-28.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-29.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-3.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-30.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-31.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-32.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-33.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-34.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-35.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-36.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-37.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-6.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-7.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-8.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-9.sql
│       │                   ├── ALTER-ANALYTIC-VIEW-0.sql
│       │                   ├── ALTER-ANALYTIC-VIEW-1.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-0.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-1.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-10.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-11.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-12.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-13.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-14.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-2.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-3.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-4.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-5.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-6.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-7.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-8.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-9.sql
│       │                   ├── ALTER-CLUSTER-0.sql
│       │                   ├── ALTER-CLUSTER-1.sql
│       │                   ├── ALTER-CLUSTER-2.sql
│       │                   ├── ALTER-CLUSTER-3.sql
│       │                   ├── ALTER-CLUSTER-4.sql
│       │                   ├── ALTER-CLUSTER-5.sql
│       │                   ├── ALTER-CLUSTER-6.sql
│       │                   ├── ALTER-CLUSTER-7.sql
│       │                   ├── ALTER-DATABASE-0.sql
│       │                   ├── ALTER-DATABASE-1.sql
│       │                   ├── ALTER-DATABASE-10.sql
│       │                   ├── ALTER-DATABASE-11.sql
│       │                   ├── ALTER-DATABASE-12.sql
│       │                   ├── ALTER-DATABASE-13.sql
│       │                   ├── ALTER-DATABASE-14.sql
│       │                   ├── ALTER-DATABASE-15.sql
│       │                   ├── ALTER-DATABASE-16.sql
│       │                   ├── ALTER-DATABASE-17.sql
│       │                   ├── ALTER-DATABASE-18.sql
│       │                   ├── ALTER-DATABASE-19.sql
│       │                   ├── ALTER-DATABASE-2.sql
│       │                   ├── ALTER-DATABASE-20.sql
│       │                   ├── ALTER-DATABASE-21.sql
│       │                   ├── ALTER-DATABASE-22.sql
│       │                   ├── ALTER-DATABASE-23.sql
│       │                   ├── ALTER-DATABASE-24.sql
│       │                   ├── ALTER-DATABASE-25.sql
│       │                   ├── ALTER-DATABASE-26.sql
│       │                   ├── ALTER-DATABASE-27.sql
│       │                   ├── ALTER-DATABASE-28.sql
│       │                   ├── ALTER-DATABASE-3.sql
│       │                   ├── ALTER-DATABASE-4.sql
│       │                   ├── ALTER-DATABASE-5.sql
│       │                   ├── ALTER-DATABASE-6.sql
│       │                   ├── ALTER-DATABASE-7.sql
│       │                   ├── ALTER-DATABASE-8.sql
│       │                   ├── ALTER-DATABASE-9.sql
│       │                   ├── ALTER-DATABASE-LINK-0.sql
│       │                   ├── ALTER-DIMENSION-0.sql
│       │                   ├── ALTER-DISKGROUP-1.sql
│       │                   ├── ALTER-DISKGROUP-10.sql
│       │                   ├── ALTER-DISKGROUP-11.sql
│       │                   ├── ALTER-DISKGROUP-12.sql
│       │                   ├── ALTER-DISKGROUP-13.sql
│       │                   ├── ALTER-DISKGROUP-14.sql
│       │                   ├── ALTER-DISKGROUP-15.sql
│       │                   ├── ALTER-DISKGROUP-16.sql
│       │                   ├── ALTER-DISKGROUP-2.sql
│       │                   ├── ALTER-DISKGROUP-3.sql
│       │                   ├── ALTER-DISKGROUP-4.sql
│       │                   ├── ALTER-DISKGROUP-5.sql
│       │                   ├── ALTER-DISKGROUP-6.sql
│       │                   ├── ALTER-DISKGROUP-7.sql
│       │                   ├── ALTER-DISKGROUP-8.sql
│       │                   ├── ALTER-DISKGROUP-9.sql
│       │                   ├── ALTER-HIERARCHY-0.sql
│       │                   ├── ALTER-INDEX-0.sql
│       │                   ├── ALTER-INDEX-1.sql
│       │                   ├── ALTER-INDEX-10.sql
│       │                   ├── ALTER-INDEX-11.sql
│       │                   ├── ALTER-INDEX-12.sql
│       │                   ├── ALTER-INDEX-2.sql
│       │                   ├── ALTER-INDEX-3.sql
│       │                   ├── ALTER-INDEX-4.sql
│       │                   ├── ALTER-INDEX-5.sql
│       │                   ├── ALTER-INDEX-6.sql
│       │                   ├── ALTER-INDEX-7.sql
│       │                   ├── ALTER-INDEX-8.sql
│       │                   ├── ALTER-INDEX-9.sql
│       │                   ├── ALTER-INDEXTYPE-0.sql
│       │                   ├── ALTER-INMEMORY-JOIN-GROUP-0.sql
│       │                   ├── ALTER-INMEMORY-JOIN-GROUP-1.sql
│       │                   ├── ALTER-JAVA-0.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-10.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-11.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-12.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-13.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-14.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-15.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-16.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-17.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-18.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-19.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-2.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-20.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-21.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-22.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-23.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-24.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-25.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-3.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-4.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-5.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-6.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-7.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-8.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-9.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-0.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-1.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-2.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-3.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-4.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-5.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-6.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-7.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-LOG-0.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-LOG-1.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-0.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-1.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-2.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-3.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-4.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-5.sql
│       │                   ├── ALTER-OPERATOR-0.sql
│       │                   ├── ALTER-OUTLINE-0.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-0.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-1.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-10.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-11.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-12.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-13.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-14.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-15.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-16.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-17.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-18.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-19.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-2.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-20.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-21.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-3.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-6.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-7.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-8.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-9.sql
│       │                   ├── ALTER-PROFILE-0.sql
│       │                   ├── ALTER-PROFILE-1.sql
│       │                   ├── ALTER-PROFILE-2.sql
│       │                   ├── ALTER-PROFILE-3.sql
│       │                   ├── ALTER-PROFILE-4.sql
│       │                   ├── ALTER-PROFILE-5.sql
│       │                   ├── ALTER-PROFILE-6.sql
│       │                   ├── ALTER-PROFILE-7.sql
│       │                   ├── ALTER-PROFILE-8.sql
│       │                   ├── ALTER-PROFILE-9.sql
│       │                   ├── ALTER-RESOURCE-COST-0.sql
│       │                   ├── ALTER-RESOURCE-COST-2.sql
│       │                   ├── ALTER-ROLE-0.sql
│       │                   ├── ALTER-ROLE-1.sql
│       │                   ├── ALTER-ROLE-2.sql
│       │                   ├── ALTER-ROLLBACK-SEGMENT-0.sql
│       │                   ├── ALTER-ROLLBACK-SEGMENT-1.sql
│       │                   ├── ALTER-SEQUENCE-0.sql
│       │                   ├── ALTER-SEQUENCE-1.sql
│       │                   ├── ALTER-SESSION-0.sql
│       │                   ├── ALTER-SESSION-1.sql
│       │                   ├── ALTER-SESSION-13.sql
│       │                   ├── ALTER-SESSION-14.sql
│       │                   ├── ALTER-SESSION-15.sql
│       │                   ├── ALTER-SESSION-16.sql
│       │                   ├── ALTER-SESSION-17.sql
│       │                   ├── ALTER-SESSION-18.sql
│       │                   ├── ALTER-SESSION-19.sql
│       │                   ├── ALTER-SESSION-2.sql
│       │                   ├── ALTER-SESSION-20.sql
│       │                   ├── ALTER-SESSION-21.sql
│       │                   ├── ALTER-SESSION-22.sql
│       │                   ├── ALTER-SESSION-23.sql
│       │                   ├── ALTER-SESSION-24.sql
│       │                   ├── ALTER-SESSION-25.sql
│       │                   ├── ALTER-SYNONYM-0.sql
│       │                   ├── ALTER-SYNONYM-1.sql
│       │                   ├── ALTER-SYNONYM-2.sql
│       │                   ├── ALTER-SYSTEM-0.sql
│       │                   ├── ALTER-SYSTEM-1.sql
│       │                   ├── ALTER-SYSTEM-10.sql
│       │                   ├── ALTER-SYSTEM-11.sql
│       │                   ├── ALTER-SYSTEM-12.sql
│       │                   ├── ALTER-SYSTEM-13.sql
│       │                   ├── ALTER-SYSTEM-14.sql
│       │                   ├── ALTER-SYSTEM-15.sql
│       │                   ├── ALTER-SYSTEM-16.sql
│       │                   ├── ALTER-SYSTEM-17.sql
│       │                   ├── ALTER-SYSTEM-18.sql
│       │                   ├── ALTER-SYSTEM-19.sql
│       │                   ├── ALTER-SYSTEM-20.sql
│       │                   ├── ALTER-SYSTEM-21.sql
│       │                   ├── ALTER-SYSTEM-22.sql
│       │                   ├── ALTER-SYSTEM-23.sql
│       │                   ├── ALTER-SYSTEM-24.sql
│       │                   ├── ALTER-SYSTEM-25.sql
│       │                   ├── ALTER-SYSTEM-26.sql
│       │                   ├── ALTER-SYSTEM-27.sql
│       │                   ├── ALTER-SYSTEM-28.sql
│       │                   ├── ALTER-SYSTEM-3.sql
│       │                   ├── ALTER-SYSTEM-4.sql
│       │                   ├── ALTER-SYSTEM-5.sql
│       │                   ├── ALTER-SYSTEM-7.sql
│       │                   ├── ALTER-SYSTEM-8.sql
│       │                   ├── ALTER-SYSTEM-9.sql
│       │                   ├── ALTER-TABLE-0.sql
│       │                   ├── ALTER-TABLE-10.sql
│       │                   ├── ALTER-TABLE-100.sql
│       │                   ├── ALTER-TABLE-101.sql
│       │                   ├── ALTER-TABLE-102.sql
│       │                   ├── ALTER-TABLE-103.sql
│       │                   ├── ALTER-TABLE-104.sql
│       │                   ├── ALTER-TABLE-105.sql
│       │                   ├── ALTER-TABLE-106.sql
│       │                   ├── ALTER-TABLE-107.sql
│       │                   ├── ALTER-TABLE-108.sql
│       │                   ├── ALTER-TABLE-109.sql
│       │                   ├── ALTER-TABLE-11.sql
│       │                   ├── ALTER-TABLE-110.sql
│       │                   ├── ALTER-TABLE-111.sql
│       │                   ├── ALTER-TABLE-112.sql
│       │                   ├── ALTER-TABLE-113.sql
│       │                   ├── ALTER-TABLE-114.sql
│       │                   ├── ALTER-TABLE-115.sql
│       │                   ├── ALTER-TABLE-116.sql
│       │                   ├── ALTER-TABLE-117.sql
│       │                   ├── ALTER-TABLE-118.sql
│       │                   ├── ALTER-TABLE-119.sql
│       │                   ├── ALTER-TABLE-12.sql
│       │                   ├── ALTER-TABLE-120.sql
│       │                   ├── ALTER-TABLE-121.sql
│       │                   ├── ALTER-TABLE-122.sql
│       │                   ├── ALTER-TABLE-123.sql
│       │                   ├── ALTER-TABLE-124.sql
│       │                   ├── ALTER-TABLE-125.sql
│       │                   ├── ALTER-TABLE-126.sql
│       │                   ├── ALTER-TABLE-127.sql
│       │                   ├── ALTER-TABLE-128.sql
│       │                   ├── ALTER-TABLE-129.sql
│       │                   ├── ALTER-TABLE-13.sql
│       │                   ├── ALTER-TABLE-14.sql
│       │                   ├── ALTER-TABLE-15.sql
│       │                   ├── ALTER-TABLE-16.sql
│       │                   ├── ALTER-TABLE-17.sql
│       │                   ├── ALTER-TABLE-18.sql
│       │                   ├── ALTER-TABLE-19.sql
│       │                   ├── ALTER-TABLE-20.sql
│       │                   ├── ALTER-TABLE-21.sql
│       │                   ├── ALTER-TABLE-22.sql
│       │                   ├── ALTER-TABLE-23.sql
│       │                   ├── ALTER-TABLE-24.sql
│       │                   ├── ALTER-TABLE-25.sql
│       │                   ├── ALTER-TABLE-26.sql
│       │                   ├── ALTER-TABLE-27.sql
│       │                   ├── ALTER-TABLE-28.sql
│       │                   ├── ALTER-TABLE-29.sql
│       │                   ├── ALTER-TABLE-30.sql
│       │                   ├── ALTER-TABLE-31.sql
│       │                   ├── ALTER-TABLE-32.sql
│       │                   ├── ALTER-TABLE-33.sql
│       │                   ├── ALTER-TABLE-34.sql
│       │                   ├── ALTER-TABLE-35.sql
│       │                   ├── ALTER-TABLE-36.sql
│       │                   ├── ALTER-TABLE-37.sql
│       │                   ├── ALTER-TABLE-38.sql
│       │                   ├── ALTER-TABLE-39.sql
│       │                   ├── ALTER-TABLE-4.sql
│       │                   ├── ALTER-TABLE-40.sql
│       │                   ├── ALTER-TABLE-41.sql
│       │                   ├── ALTER-TABLE-42.sql
│       │                   ├── ALTER-TABLE-43.sql
│       │                   ├── ALTER-TABLE-44.sql
│       │                   ├── ALTER-TABLE-45.sql
│       │                   ├── ALTER-TABLE-46.sql
│       │                   ├── ALTER-TABLE-47.sql
│       │                   ├── ALTER-TABLE-48.sql
│       │                   ├── ALTER-TABLE-49.sql
│       │                   ├── ALTER-TABLE-5.sql
│       │                   ├── ALTER-TABLE-50.sql
│       │                   ├── ALTER-TABLE-51.sql
│       │                   ├── ALTER-TABLE-52.sql
│       │                   ├── ALTER-TABLE-53.sql
│       │                   ├── ALTER-TABLE-54.sql
│       │                   ├── ALTER-TABLE-55.sql
│       │                   ├── ALTER-TABLE-56.sql
│       │                   ├── ALTER-TABLE-57.sql
│       │                   ├── ALTER-TABLE-58.sql
│       │                   ├── ALTER-TABLE-59.sql
│       │                   ├── ALTER-TABLE-6.sql
│       │                   ├── ALTER-TABLE-60.sql
│       │                   ├── ALTER-TABLE-61.sql
│       │                   ├── ALTER-TABLE-62.sql
│       │                   ├── ALTER-TABLE-63.sql
│       │                   ├── ALTER-TABLE-64.sql
│       │                   ├── ALTER-TABLE-65.sql
│       │                   ├── ALTER-TABLE-66.sql
│       │                   ├── ALTER-TABLE-67.sql
│       │                   ├── ALTER-TABLE-68.sql
│       │                   ├── ALTER-TABLE-69.sql
│       │                   ├── ALTER-TABLE-7.sql
│       │                   ├── ALTER-TABLE-70.sql
│       │                   ├── ALTER-TABLE-71.sql
│       │                   ├── ALTER-TABLE-72.sql
│       │                   ├── ALTER-TABLE-73.sql
│       │                   ├── ALTER-TABLE-74.sql
│       │                   ├── ALTER-TABLE-75.sql
│       │                   ├── ALTER-TABLE-76.sql
│       │                   ├── ALTER-TABLE-77.sql
│       │                   ├── ALTER-TABLE-78.sql
│       │                   ├── ALTER-TABLE-79.sql
│       │                   ├── ALTER-TABLE-8.sql
│       │                   ├── ALTER-TABLE-80.sql
│       │                   ├── ALTER-TABLE-81.sql
│       │                   ├── ALTER-TABLE-82.sql
│       │                   ├── ALTER-TABLE-83.sql
│       │                   ├── ALTER-TABLE-84.sql
│       │                   ├── ALTER-TABLE-85.sql
│       │                   ├── ALTER-TABLE-86.sql
│       │                   ├── ALTER-TABLE-87.sql
│       │                   ├── ALTER-TABLE-88.sql
│       │                   ├── ALTER-TABLE-89.sql
│       │                   ├── ALTER-TABLE-9.sql
│       │                   ├── ALTER-TABLE-90.sql
│       │                   ├── ALTER-TABLE-91.sql
│       │                   ├── ALTER-TABLE-92.sql
│       │                   ├── ALTER-TABLE-93.sql
│       │                   ├── ALTER-TABLE-94.sql
│       │                   ├── ALTER-TABLE-95.sql
│       │                   ├── ALTER-TABLE-96.sql
│       │                   ├── ALTER-TABLE-97.sql
│       │                   ├── ALTER-TABLE-98.sql
│       │                   ├── ALTER-TABLE-99.sql
│       │                   ├── ALTER-TABLESPACE-0.sql
│       │                   ├── ALTER-TABLESPACE-1.sql
│       │                   ├── ALTER-TABLESPACE-10.sql
│       │                   ├── ALTER-TABLESPACE-11.sql
│       │                   ├── ALTER-TABLESPACE-12.sql
│       │                   ├── ALTER-TABLESPACE-13.sql
│       │                   ├── ALTER-TABLESPACE-14.sql
│       │                   ├── ALTER-TABLESPACE-15.sql
│       │                   ├── ALTER-TABLESPACE-16.sql
│       │                   ├── ALTER-TABLESPACE-2.sql
│       │                   ├── ALTER-TABLESPACE-3.sql
│       │                   ├── ALTER-TABLESPACE-4.sql
│       │                   ├── ALTER-TABLESPACE-5.sql
│       │                   ├── ALTER-TABLESPACE-6.sql
│       │                   ├── ALTER-TABLESPACE-7.sql
│       │                   ├── ALTER-TABLESPACE-8.sql
│       │                   ├── ALTER-TABLESPACE-9.sql
│       │                   ├── ALTER-TABLESPACE-SET-0.sql
│       │                   ├── ALTER-USER-0.sql
│       │                   ├── ALTER-USER-1.sql
│       │                   ├── ALTER-USER-10.sql
│       │                   ├── ALTER-USER-11.sql
│       │                   ├── ALTER-USER-12.sql
│       │                   ├── ALTER-USER-13.sql
│       │                   ├── ALTER-USER-14.sql
│       │                   ├── ALTER-USER-15.sql
│       │                   ├── ALTER-USER-2.sql
│       │                   ├── ALTER-USER-4.sql
│       │                   ├── ALTER-USER-5.sql
│       │                   ├── ALTER-USER-6.sql
│       │                   ├── ALTER-USER-7.sql
│       │                   ├── ALTER-USER-8.sql
│       │                   ├── ALTER-USER-9.sql
│       │                   ├── ALTER-VIEW-0.sql
│       │                   ├── ALTER-VIEW-1.sql
│       │                   ├── ANALYZE-0.sql
│       │                   ├── ANALYZE-1.sql
│       │                   ├── ANALYZE-2.sql
│       │                   ├── ANALYZE-3.sql
│       │                   ├── ANALYZE-4.sql
│       │                   ├── ANALYZE-5.sql
│       │                   ├── ANALYZE-6.sql
│       │                   ├── ANALYZE-7.sql
│       │                   ├── ANY_VALUE-0.sql
│       │                   ├── APPROX_COUNT-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT-1.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-1.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-2.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-3.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-4.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-5.sql
│       │                   ├── APPROX_MEDIAN-0.sql
│       │                   ├── APPROX_MEDIAN-1.sql
│       │                   ├── APPROX_MEDIAN-2.sql
│       │                   ├── APPROX_MEDIAN-3.sql
│       │                   ├── APPROX_PERCENTILE-0.sql
│       │                   ├── APPROX_PERCENTILE-1.sql
│       │                   ├── APPROX_PERCENTILE-2.sql
│       │                   ├── APPROX_PERCENTILE-3.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-0.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-1.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-2.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-3.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-4.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-5.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-6.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-7.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-8.sql
│       │                   ├── APPROX_RANK-0.sql
│       │                   ├── APPROX_SUM-0.sql
│       │                   ├── ASCII-0.sql
│       │                   ├── ASCIISTR-0.sql
│       │                   ├── ASIN-0.sql
│       │                   ├── ASSOCIATE-STATISTICS-0.sql
│       │                   ├── ASSOCIATE-STATISTICS-1.sql
│       │                   ├── ATAN-0.sql
│       │                   ├── ATAN2-0.sql
│       │                   ├── AUDIT-Unified-Auditing-0.sql
│       │                   ├── AUDIT-Unified-Auditing-1.sql
│       │                   ├── AUDIT-Unified-Auditing-2.sql
│       │                   ├── AUDIT-Unified-Auditing-3.sql
│       │                   ├── AUDIT-Unified-Auditing-4.sql
│       │                   ├── AUDIT-Unified-Auditing-5.sql
│       │                   ├── AUDIT-Unified-Auditing-6.sql
│       │                   ├── AUDIT-Unified-Auditing-7.sql
│       │                   ├── AUDIT-Unified-Auditing-8.sql
│       │                   ├── AVG-0.sql
│       │                   ├── AVG-1.sql
│       │                   ├── About-SQL-Expressions-2.sql
│       │                   ├── About-SQL-Expressions-3.sql
│       │                   ├── About-User-Defined-Functions-1.sql
│       │                   ├── About-User-Defined-Functions-2.sql
│       │                   ├── About-User-Defined-Functions-4.sql
│       │                   ├── Aggregate-Functions-0.sql
│       │                   ├── Arithmetic-Operators-0.sql
│       │                   ├── Arithmetic-Operators-1.sql
│       │                   ├── Arithmetic-Operators-2.sql
│       │                   ├── Automatic-Locks-in-DML-Operations-0.sql
│       │                   ├── BETWEEN-Condition-5.sql
│       │                   ├── BFILENAME-0.sql
│       │                   ├── BIN_TO_NUM-0.sql
│       │                   ├── BIN_TO_NUM-1.sql
│       │                   ├── BITAND-0.sql
│       │                   ├── BITAND-1.sql
│       │                   ├── BITAND-2.sql
│       │                   ├── BIT_AND_AGG-0.sql
│       │                   ├── BIT_AND_AGG-1.sql
│       │                   ├── CALL-0.sql
│       │                   ├── CALL-1.sql
│       │                   ├── CALL-2.sql
│       │                   ├── CALL-3.sql
│       │                   ├── CALL-4.sql
│       │                   ├── CARDINALITY-0.sql
│       │                   ├── CASE-Expressions-0.sql
│       │                   ├── CASE-Expressions-1.sql
│       │                   ├── CAST-0.sql
│       │                   ├── CAST-1.sql
│       │                   ├── CAST-10.sql
│       │                   ├── CAST-11.sql
│       │                   ├── CAST-12.sql
│       │                   ├── CAST-13.sql
│       │                   ├── CAST-14.sql
│       │                   ├── CAST-15.sql
│       │                   ├── CAST-16.sql
│       │                   ├── CAST-17.sql
│       │                   ├── CAST-18.sql
│       │                   ├── CAST-2.sql
│       │                   ├── CAST-3.sql
│       │                   ├── CAST-4.sql
│       │                   ├── CAST-5.sql
│       │                   ├── CAST-6.sql
│       │                   ├── CAST-7.sql
│       │                   ├── CAST-8.sql
│       │                   ├── CAST-9.sql
│       │                   ├── CEIL-0.sql
│       │                   ├── CHARTOROWID-0.sql
│       │                   ├── CHR-0.sql
│       │                   ├── CHR-1.sql
│       │                   ├── CHR-2.sql
│       │                   ├── CHR-3.sql
│       │                   ├── CHR-4.sql
│       │                   ├── CHR-5.sql
│       │                   ├── CLUSTER_DETAILS-0.sql
│       │                   ├── CLUSTER_DETAILS-1.sql
│       │                   ├── CLUSTER_DISTANCE-0.sql
│       │                   ├── CLUSTER_ID-0.sql
│       │                   ├── CLUSTER_ID-1.sql
│       │                   ├── CLUSTER_PROBABILITY-0.sql
│       │                   ├── CLUSTER_SET-0.sql
│       │                   ├── COALESCE-4.sql
│       │                   ├── COLLATE-Operator-0.sql
│       │                   ├── COLLATION-0.sql
│       │                   ├── COLLECT-0.sql
│       │                   ├── COLLECT-1.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-0.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-1.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-2.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-3.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-4.sql
│       │                   ├── COMMENT-0.sql
│       │                   ├── COMMENT-1.sql
│       │                   ├── COMMIT-0.sql
│       │                   ├── COMMIT-1.sql
│       │                   ├── COMMIT-2.sql
│       │                   ├── COMMIT-3.sql
│       │                   ├── COMPOSE-0.sql
│       │                   ├── CONCAT-0.sql
│       │                   ├── CONVERT-0.sql
│       │                   ├── CONVERT-1.sql
│       │                   ├── CON_DBID_TO_ID-0.sql
│       │                   ├── CON_DBID_TO_ID-1.sql
│       │                   ├── CON_GUID_TO_ID-0.sql
│       │                   ├── CON_GUID_TO_ID-1.sql
│       │                   ├── CON_NAME_TO_ID-0.sql
│       │                   ├── CON_NAME_TO_ID-1.sql
│       │                   ├── CON_UID_TO_ID-0.sql
│       │                   ├── CON_UID_TO_ID-1.sql
│       │                   ├── CORR-1.sql
│       │                   ├── CORR-2.sql
│       │                   ├── CORR_A-0.sql
│       │                   ├── CORR_A-1.sql
│       │                   ├── COS-0.sql
│       │                   ├── COSH-0.sql
│       │                   ├── COUNT-0.sql
│       │                   ├── COUNT-1.sql
│       │                   ├── COVAR_POP-1.sql
│       │                   ├── COVAR_POP-2.sql
│       │                   ├── CREATE-ANALYTIC-VIEW-0.sql
│       │                   ├── CREATE-ANALYTIC-VIEW-1.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-0.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-1.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-2.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-3.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-4.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-5.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-1.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-10.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-11.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-14.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-15.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-16.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-17.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-18.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-19.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-2.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-20.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-21.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-22.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-23.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-24.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-25.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-26.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-27.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-28.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-3.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-30.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-4.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-5.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-6.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-7.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-8.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-9.sql
│       │                   ├── CREATE-CLUSTER-0.sql
│       │                   ├── CREATE-CLUSTER-1.sql
│       │                   ├── CREATE-CLUSTER-10.sql
│       │                   ├── CREATE-CLUSTER-11.sql
│       │                   ├── CREATE-CLUSTER-12.sql
│       │                   ├── CREATE-CLUSTER-13.sql
│       │                   ├── CREATE-CLUSTER-2.sql
│       │                   ├── CREATE-CLUSTER-3.sql
│       │                   ├── CREATE-CLUSTER-4.sql
│       │                   ├── CREATE-CLUSTER-5.sql
│       │                   ├── CREATE-CLUSTER-6.sql
│       │                   ├── CREATE-CLUSTER-7.sql
│       │                   ├── CREATE-CLUSTER-8.sql
│       │                   ├── CREATE-CLUSTER-9.sql
│       │                   ├── CREATE-CONTEXT-0.sql
│       │                   ├── CREATE-CONTEXT-1.sql
│       │                   ├── CREATE-CONTROLFILE-0.sql
│       │                   ├── CREATE-DATABASE-0.sql
│       │                   ├── CREATE-DATABASE-1.sql
│       │                   ├── CREATE-DATABASE-LINK-0.sql
│       │                   ├── CREATE-DATABASE-LINK-1.sql
│       │                   ├── CREATE-DATABASE-LINK-2.sql
│       │                   ├── CREATE-DATABASE-LINK-3.sql
│       │                   ├── CREATE-DATABASE-LINK-4.sql
│       │                   ├── CREATE-DATABASE-LINK-5.sql
│       │                   ├── CREATE-DATABASE-LINK-6.sql
│       │                   ├── CREATE-DATABASE-LINK-7.sql
│       │                   ├── CREATE-DIMENSION-0.sql
│       │                   ├── CREATE-DIMENSION-1.sql
│       │                   ├── CREATE-DIMENSION-2.sql
│       │                   ├── CREATE-DIRECTORY-1.sql
│       │                   ├── CREATE-DIRECTORY-2.sql
│       │                   ├── CREATE-DIRECTORY-3.sql
│       │                   ├── CREATE-DIRECTORY-4.sql
│       │                   ├── CREATE-DISKGROUP-0.sql
│       │                   ├── CREATE-EDITION-0.sql
│       │                   ├── CREATE-EDITION-1.sql
│       │                   ├── CREATE-EDITION-2.sql
│       │                   ├── CREATE-EDITION-3.sql
│       │                   ├── CREATE-EDITION-4.sql
│       │                   ├── CREATE-EDITION-5.sql
│       │                   ├── CREATE-EDITION-6.sql
│       │                   ├── CREATE-EDITION-7.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-0.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-2.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-3.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-4.sql
│       │                   ├── CREATE-HIERARCHY-0.sql
│       │                   ├── CREATE-HIERARCHY-1.sql
│       │                   ├── CREATE-HIERARCHY-2.sql
│       │                   ├── CREATE-INDEX-0.sql
│       │                   ├── CREATE-INDEX-10.sql
│       │                   ├── CREATE-INDEX-11.sql
│       │                   ├── CREATE-INDEX-12.sql
│       │                   ├── CREATE-INDEX-13.sql
│       │                   ├── CREATE-INDEX-14.sql
│       │                   ├── CREATE-INDEX-15.sql
│       │                   ├── CREATE-INDEX-16.sql
│       │                   ├── CREATE-INDEX-17.sql
│       │                   ├── CREATE-INDEX-18.sql
│       │                   ├── CREATE-INDEX-19.sql
│       │                   ├── CREATE-INDEX-20.sql
│       │                   ├── CREATE-INDEX-21.sql
│       │                   ├── CREATE-INDEX-22.sql
│       │                   ├── CREATE-INDEX-23.sql
│       │                   ├── CREATE-INDEX-24.sql
│       │                   ├── CREATE-INDEX-25.sql
│       │                   ├── CREATE-INDEX-26.sql
│       │                   ├── CREATE-INDEX-27.sql
│       │                   ├── CREATE-INDEX-28.sql
│       │                   ├── CREATE-INDEX-29.sql
│       │                   ├── CREATE-INDEX-4.sql
│       │                   ├── CREATE-INDEX-5.sql
│       │                   ├── CREATE-INDEX-6.sql
│       │                   ├── CREATE-INDEX-7.sql
│       │                   ├── CREATE-INDEX-8.sql
│       │                   ├── CREATE-INDEX-9.sql
│       │                   ├── CREATE-INDEXTYPE-0.sql
│       │                   ├── CREATE-INMEMORY-JOIN-GROUP-0.sql
│       │                   ├── CREATE-INMEMORY-JOIN-GROUP-1.sql
│       │                   ├── CREATE-JAVA-0.sql
│       │                   ├── CREATE-JAVA-1.sql
│       │                   ├── CREATE-JAVA-2.sql
│       │                   ├── CREATE-JAVA-3.sql
│       │                   ├── CREATE-LOCKDOWN-PROFILE-0.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-0.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-1.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-10.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-11.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-12.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-2.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-3.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-4.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-5.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-6.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-7.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-8.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-9.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-1.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-2.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-3.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-4.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-5.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-6.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-7.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-8.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-4.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-5.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-6.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-7.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-8.sql
│       │                   ├── CREATE-OPERATOR-0.sql
│       │                   ├── CREATE-OUTLINE-0.sql
│       │                   ├── CREATE-OUTLINE-1.sql
│       │                   ├── CREATE-OUTLINE-2.sql
│       │                   ├── CREATE-PFILE-0.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-10.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-11.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-3.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-4.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-6.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-9.sql
│       │                   ├── CREATE-PROFILE-1.sql
│       │                   ├── CREATE-PROFILE-2.sql
│       │                   ├── CREATE-PROFILE-4.sql
│       │                   ├── CREATE-PROFILE-5.sql
│       │                   ├── CREATE-PROFILE-6.sql
│       │                   ├── CREATE-PROFILE-7.sql
│       │                   ├── CREATE-RESTORE-POINT-0.sql
│       │                   ├── CREATE-ROLE-1.sql
│       │                   ├── CREATE-ROLE-2.sql
│       │                   ├── CREATE-ROLE-3.sql
│       │                   ├── CREATE-ROLE-4.sql
│       │                   ├── CREATE-ROLE-5.sql
│       │                   ├── CREATE-ROLE-6.sql
│       │                   ├── CREATE-ROLE-7.sql
│       │                   ├── CREATE-ROLLBACK-SEGMENT-0.sql
│       │                   ├── CREATE-ROLLBACK-SEGMENT-1.sql
│       │                   ├── CREATE-SCHEMA-0.sql
│       │                   ├── CREATE-SEQUENCE-2.sql
│       │                   ├── CREATE-SEQUENCE-3.sql
│       │                   ├── CREATE-SEQUENCE-4.sql
│       │                   ├── CREATE-SPFILE-0.sql
│       │                   ├── CREATE-SPFILE-1.sql
│       │                   ├── CREATE-SPFILE-2.sql
│       │                   ├── CREATE-SPFILE-4.sql
│       │                   ├── CREATE-SYNONYM-0.sql
│       │                   ├── CREATE-SYNONYM-1.sql
│       │                   ├── CREATE-SYNONYM-2.sql
│       │                   ├── CREATE-SYNONYM-3.sql
│       │                   ├── CREATE-SYNONYM-4.sql
│       │                   ├── CREATE-SYNONYM-5.sql
│       │                   ├── CREATE-TABLE-0.sql
│       │                   ├── CREATE-TABLE-1.sql
│       │                   ├── CREATE-TABLE-10.sql
│       │                   ├── CREATE-TABLE-11.sql
│       │                   ├── CREATE-TABLE-12.sql
│       │                   ├── CREATE-TABLE-13.sql
│       │                   ├── CREATE-TABLE-14.sql
│       │                   ├── CREATE-TABLE-15.sql
│       │                   ├── CREATE-TABLE-16.sql
│       │                   ├── CREATE-TABLE-17.sql
│       │                   ├── CREATE-TABLE-18.sql
│       │                   ├── CREATE-TABLE-19.sql
│       │                   ├── CREATE-TABLE-20.sql
│       │                   ├── CREATE-TABLE-21.sql
│       │                   ├── CREATE-TABLE-22.sql
│       │                   ├── CREATE-TABLE-23.sql
│       │                   ├── CREATE-TABLE-24.sql
│       │                   ├── CREATE-TABLE-25.sql
│       │                   ├── CREATE-TABLE-26.sql
│       │                   ├── CREATE-TABLE-27.sql
│       │                   ├── CREATE-TABLE-28.sql
│       │                   ├── CREATE-TABLE-29.sql
│       │                   ├── CREATE-TABLE-30.sql
│       │                   ├── CREATE-TABLE-31.sql
│       │                   ├── CREATE-TABLE-32.sql
│       │                   ├── CREATE-TABLE-33.sql
│       │                   ├── CREATE-TABLE-34.sql
│       │                   ├── CREATE-TABLE-35.sql
│       │                   ├── CREATE-TABLE-36.sql
│       │                   ├── CREATE-TABLE-37.sql
│       │                   ├── CREATE-TABLE-38.sql
│       │                   ├── CREATE-TABLE-39.sql
│       │                   ├── CREATE-TABLE-40.sql
│       │                   ├── CREATE-TABLE-41.sql
│       │                   ├── CREATE-TABLE-42.sql
│       │                   ├── CREATE-TABLE-43.sql
│       │                   ├── CREATE-TABLE-44.sql
│       │                   ├── CREATE-TABLE-45.sql
│       │                   ├── CREATE-TABLE-46.sql
│       │                   ├── CREATE-TABLE-47.sql
│       │                   ├── CREATE-TABLE-48.sql
│       │                   ├── CREATE-TABLE-49.sql
│       │                   ├── CREATE-TABLE-5.sql
│       │                   ├── CREATE-TABLE-50.sql
│       │                   ├── CREATE-TABLE-51.sql
│       │                   ├── CREATE-TABLE-52.sql
│       │                   ├── CREATE-TABLE-53.sql
│       │                   ├── CREATE-TABLE-54.sql
│       │                   ├── CREATE-TABLE-55.sql
│       │                   ├── CREATE-TABLE-56.sql
│       │                   ├── CREATE-TABLE-57.sql
│       │                   ├── CREATE-TABLE-58.sql
│       │                   ├── CREATE-TABLE-59.sql
│       │                   ├── CREATE-TABLE-6.sql
│       │                   ├── CREATE-TABLE-60.sql
│       │                   ├── CREATE-TABLE-61.sql
│       │                   ├── CREATE-TABLE-62.sql
│       │                   ├── CREATE-TABLE-63.sql
│       │                   ├── CREATE-TABLE-64.sql
│       │                   ├── CREATE-TABLE-65.sql
│       │                   ├── CREATE-TABLE-66.sql
│       │                   ├── CREATE-TABLE-67.sql
│       │                   ├── CREATE-TABLE-69.sql
│       │                   ├── CREATE-TABLE-7.sql
│       │                   ├── CREATE-TABLE-70.sql
│       │                   ├── CREATE-TABLE-71.sql
│       │                   ├── CREATE-TABLE-72.sql
│       │                   ├── CREATE-TABLE-73.sql
│       │                   ├── CREATE-TABLE-74.sql
│       │                   ├── CREATE-TABLE-75.sql
│       │                   ├── CREATE-TABLE-8.sql
│       │                   ├── CREATE-TABLE-9.sql
│       │                   ├── CREATE-TABLESPACE-0.sql
│       │                   ├── CREATE-TABLESPACE-1.sql
│       │                   ├── CREATE-TABLESPACE-10.sql
│       │                   ├── CREATE-TABLESPACE-11.sql
│       │                   ├── CREATE-TABLESPACE-12.sql
│       │                   ├── CREATE-TABLESPACE-14.sql
│       │                   ├── CREATE-TABLESPACE-15.sql
│       │                   ├── CREATE-TABLESPACE-16.sql
│       │                   ├── CREATE-TABLESPACE-2.sql
│       │                   ├── CREATE-TABLESPACE-3.sql
│       │                   ├── CREATE-TABLESPACE-4.sql
│       │                   ├── CREATE-TABLESPACE-5.sql
│       │                   ├── CREATE-TABLESPACE-6.sql
│       │                   ├── CREATE-TABLESPACE-7.sql
│       │                   ├── CREATE-TABLESPACE-8.sql
│       │                   ├── CREATE-TABLESPACE-9.sql
│       │                   ├── CREATE-TABLESPACE-SET-0.sql
│       │                   ├── CREATE-USER-0.sql
│       │                   ├── CREATE-USER-1.sql
│       │                   ├── CREATE-USER-2.sql
│       │                   ├── CREATE-USER-3.sql
│       │                   ├── CREATE-USER-4.sql
│       │                   ├── CREATE-USER-5.sql
│       │                   ├── CREATE-USER-6.sql
│       │                   ├── CREATE-USER-7.sql
│       │                   ├── CREATE-USER-8.sql
│       │                   ├── CREATE-USER-9.sql
│       │                   ├── CREATE-VIEW-1.sql
│       │                   ├── CREATE-VIEW-10.sql
│       │                   ├── CREATE-VIEW-11.sql
│       │                   ├── CREATE-VIEW-12.sql
│       │                   ├── CREATE-VIEW-13.sql
│       │                   ├── CREATE-VIEW-14.sql
│       │                   ├── CREATE-VIEW-15.sql
│       │                   ├── CREATE-VIEW-2.sql
│       │                   ├── CREATE-VIEW-3.sql
│       │                   ├── CREATE-VIEW-4.sql
│       │                   ├── CREATE-VIEW-5.sql
│       │                   ├── CREATE-VIEW-6.sql
│       │                   ├── CREATE-VIEW-7.sql
│       │                   ├── CREATE-VIEW-8.sql
│       │                   ├── CREATE-VIEW-9.sql
│       │                   ├── CUBE_TABLE-1.sql
│       │                   ├── CUBE_TABLE-2.sql
│       │                   ├── CUME_DIST-0.sql
│       │                   ├── CUME_DIST-1.sql
│       │                   ├── CURRENT_DATE-0.sql
│       │                   ├── CURRENT_TIMESTAMP-0.sql
│       │                   ├── CURRENT_TIMESTAMP-1.sql
│       │                   ├── CURRENT_TIMESTAMP-2.sql
│       │                   ├── CURRENT_TIMESTAMP-3.sql
│       │                   ├── CURSOR-Expressions-0.sql
│       │                   ├── CURSOR-Expressions-1.sql
│       │                   ├── CURSOR-Expressions-2.sql
│       │                   ├── CV-0.sql
│       │                   ├── Comments-0.sql
│       │                   ├── Comments-1.sql
│       │                   ├── Comments-10.sql
│       │                   ├── Comments-12.sql
│       │                   ├── Comments-13.sql
│       │                   ├── Comments-15.sql
│       │                   ├── Comments-16.sql
│       │                   ├── Comments-17.sql
│       │                   ├── Comments-18.sql
│       │                   ├── Comments-19.sql
│       │                   ├── Comments-2.sql
│       │                   ├── Comments-20.sql
│       │                   ├── Comments-21.sql
│       │                   ├── Comments-22.sql
│       │                   ├── Comments-23.sql
│       │                   ├── Comments-24.sql
│       │                   ├── Comments-25.sql
│       │                   ├── Comments-26.sql
│       │                   ├── Comments-27.sql
│       │       

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset=utf-8
insert_final_newline=true
indent_style=space
indent_size=4

[*.xml]
indent_size=2

[*.yml]
indent_size=2

[*.html]
indent_size=2

[*.properties]
charset=latin1

[*.sql]
indent_size=2

[*.json]
indent_size=2

[zpa-checks/src/integrationTest/resources/expected/**/*.json]
insert_final_newline = false
ij_any_space_before_colon = true


================================================
FILE: .gitattributes
================================================
*.sql linguist-language=PLSQL
zpa-checks/src/integrationTest/resources/sources/** linguist-vendored


================================================
FILE: .github/renovate.json
================================================
{
    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
    "extends": [
        "config:best-practices",
        ":automergePatch",
        "schedule:weekly"
    ],
    "mode": "full",
    "ignoreDeps": [
        "org.sonarsource.sonarqube:sonar-plugin-api-impl",
        "org.sonarsource.api.plugin:sonar-plugin-api",
        "org.sonarsource.sonarqube:sonar-ws"
    ]
}


================================================
FILE: .github/workflows/build.yml
================================================
name: Build

on:
  push:
    branches:
      - "*"
  pull_request:
    branches:
      - main

env:
  JAVA_VERSION: 21

permissions:
  contents: read

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          submodules: true

      - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
        with:
          distribution: temurin
          java-version: ${{ env.JAVA_VERSION }}

      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6

      - name: Build with Gradle
        run: ./gradlew build jreleaserAssemble publishToMavenLocal

      - name: Run zpa-checks integration tests
        run: |
          ./gradlew :zpa-checks:integrationTest --rerun
          cat zpa-checks/build/integrationTest/progress-summary.md >> $GITHUB_STEP_SUMMARY

      - name: Build custom rules example
        run: ./gradlew build -p plsql-custom-rules

      - name: Upload build artifacts
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
        with:
          name: build-artifacts
          path: |
            **/build/
            zpa-checks/tools/
          retention-days: 1

  integration-tests:
    name: IT
    needs: build
    if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        sqVersion:
          - 26.2.0.119303
          - 26.3.0.120487
          - 26.4.0.121862
          - 26.5-SNAPSHOT
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
        with:
          distribution: temurin
          java-version: ${{ env.JAVA_VERSION }}

      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6

      - name: Download build artifacts
        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
        with:
          name: build-artifacts

      - name: Run plugin integration test
        run: |
          if [[ "$SQ_VERSION" == *"SNAPSHOT"* ]]; then
            FOLDER="snapshots"
          else
            FOLDER="releases"
          fi
          
          FILE_NAME="sonar-application-${SQ_VERSION}.zip"
          DOWNLOAD_URL="https://$OCI_NAMESPACE.objectstorage.sa-saopaulo-1.oci.customer-oci.com/p/$OCI_PAR/n/$OCI_NAMESPACE/b/build-artifacts/o/${FOLDER}/${FILE_NAME}"
          
          curl -s -L -f -o "sonar-zpa-plugin/${FILE_NAME}" "$DOWNLOAD_URL"
          ./gradlew :sonar-zpa-plugin:integrationTest -Dsonar.zipFile=$FILE_NAME --rerun --info
        env:
          SQ_VERSION: ${{ matrix.sqVersion }}
          OCI_NAMESPACE: ${{ secrets.OCI_NAMESPACE }}
          OCI_PAR: ${{ secrets.OCI_PAR }}

  release:
    name: Release
    permissions:
      contents: write
    needs: integration-tests
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          fetch-depth: 0

      - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
        with:
          distribution: temurin
          java-version: ${{ env.JAVA_VERSION }}

      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6

      - name: Download build artifacts
        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
        with:
          name: build-artifacts

      - name: Generate plsql-custom-rules archive
        run: git archive --format=zip -o build/plsql-custom-rules.zip HEAD:plsql-custom-rules

      - name: Create local Maven repository
        run: ./gradlew publish

      - name: Run SonarQube Scanner
        run: ./gradlew sonar --info
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}

      - name: Release artifacts
        run: ./gradlew jreleaserFullRelease
        env:
          JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_USERNAME }}
          JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
          JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_USERNAME }}
          JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
          JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
          JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
          JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_KEY_PASSWORD }}

  dependency-submission:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - name: Generate and submit dependency graph
        uses: gradle/actions/dependency-submission@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6


================================================
FILE: .gitignore
================================================
*.pydevproject
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
target/
dependency-reduced-pom.xml

# Eclipse Core
.project

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# JDT-specific (Eclipse Java Development Tools)
.classpath

# Java annotation processor (APT)
.factorypath

# PDT-specific
.buildpath

# sbteclipse plugin
.target

# TeXlipse plugin
.texlipse
.sonar

# IntelliJ IDEA
.idea
*.iml

# SonarQube
.scannerwork

# ---- Gradle
.gradle
**/build/
!src/**/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Cache of project
.gradletasknamecache
.kotlin/
zpa-checks/tools/


================================================
FILE: .gitmodules
================================================
[submodule "its/sources/pljson"]
	path = zpa-checks/src/integrationTest/resources/sources/pljson
	url = https://github.com/pljson/pljson.git
	ignore = dirty
[submodule "its/sources/alexandria-plsql-utils"]
	path = zpa-checks/src/integrationTest/resources/sources/alexandria-plsql-utils
	url = https://github.com/mortenbra/alexandria-plsql-utils.git
	ignore = dirty
[submodule "its/sources/utPLSQL"]
	path = zpa-checks/src/integrationTest/resources/sources/utPLSQL2
	url = https://github.com/utPLSQL/utPLSQL.git
	ignore = dirty
[submodule "its/sources/utPLSQL3"]
	path = zpa-checks/src/integrationTest/resources/sources/utPLSQL3
	url = https://github.com/utPLSQL/utPLSQL/
	ignore = dirty
[submodule "its/sources/Doag-Forms"]
	path = zpa-checks/src/integrationTest/resources/sources/Doag-Forms
	url = https://github.com/Doag/Forms.git
	ignore = dirty


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
  community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of
  any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
  without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
felipe@felipezorzo.com.br.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org

[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

[Mozilla CoC]: https://github.com/mozilla/diversity

[FAQ]: https://www.contributor-covenant.org/faq

[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

Thank you for your interest in contributing to our project! We appreciate your time and effort.

## How to report a bug or issue

If you find a bug or issue, please report it by [opening an issue](https://github.com/felipebz/zpa/issues/new) on GitHub. Please include as much detail as possible, including:

- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Screenshots (if applicable)

## How to suggest a new feature

If you have an idea for a new feature, please [open an issue](https://github.com/felipebz/zpa/issues/new) on GitHub. Please include as much detail as possible, including:

- A description of the feature
- Why you think it would be useful
- Any potential drawbacks or limitations

## Pull Requests

Currently, we are not currently accepting pull requests for new features. We appreciate your interest in contributing, but we have limited resources and cannot maintain additional features at this time.

We will accept pull requests for minor bug fixes. Please include a detailed description of the bug and the steps to reproduce it.

## Code of Conduct

Please note that we have a [code of conduct](CODE_OF_CONDUCT.md) in place to ensure that our community is welcoming and inclusive. Please read the code of conduct before contributing.

## License

By contributing to this project, you agree to license your contributions under the [LGPL-3.0 license](LICENSE).


================================================
FILE: LICENSE
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.



================================================
FILE: LICENSE_HEADER
================================================
Z PL/SQL Analyzer
Copyright (C) 2015-${year} Felipe Zorzo
mailto:felipe AT felipezorzo DOT com DOT br

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


================================================
FILE: README.md
================================================
# ZPA

[![Latest release](https://img.shields.io/github/release/felipebz/zpa.svg) ](https://github.com/felipebz/zpa/releases/latest)
[![Build](https://github.com/felipebz/zpa/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/felipebz/zpa/actions/workflows/build.yml)
[![Quality Gate Status](https://sonarqube.felipebz.com/api/project_badges/measure?project=com.felipebz.zpa%3Azpa&metric=alert_status)](https://sonarqube.felipebz.com/dashboard?id=com.felipebz.zpa%3Azpa)

ZPA is parser and static code analysis tool for PL/SQL and Oracle SQL.

You can use it in a [SonarQube](https://www.sonarqube.org) on-premise instance. SonarQube is an open platform to manage code quality.

See some examples in our [SonarQube instance](https://sonarqube.felipebz.com/projects?languages=plsqlopen)!

Do you want to use this analyzer in a project hosted on [SonarCloud](https://sonarcloud.io)? Try the [zpa-cli](https://github.com/felipebz/zpa-cli)!

## Installation

- Download the [latest sonar-zpa-plugin release](https://github.com/felipebz/zpa/releases/latest) and copy to the SONARQUBE_HOME/extensions/plugins directory;
- Restart your SonarQube server;
- Navigate to the Marketplace (SONARQUBE_URL/marketplace?filter=installed). It should list "ZPA" on the tab "Installed Plugins";
- Run an analysis with [SonarScanner](https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/overview/).

## Compatibility matrix

| ZPA version            | SonarQube version (min/max) |
|------------------------|-----------------------------|
| 4.1.0                  | 25.8 / 26.4                 |
| 4.2.0 (in development) | 26.2 / 26.5                 |

## ZPA Toolkit

The ZPA Toolkit is visual tool to review the AST (abstract syntax tree) and the symbol table generated by the parser.

![](https://raw.githubusercontent.com/wiki/felipebz/zpa/img/zpa-toolkit.png)

The latest ZPA Toolkit can be downloaded from the [releases page](https://github.com/felipebz/zpa/releases/latest) and it requires JDK 11 or newer.

## Contribute

Everyone is welcome to contribute. Please read our [contribution guidelines](CONTRIBUTING.md) for more information.

There are a few things you need to know about the code. It is divided in these modules:

- `plsql-custom-rules` - Demo project showing how to extend ZPA with custom coding rules.
- `sonar-zpa-plugin` - The SonarQube plugin itself, this module contains all the code necessary to integrate with the SonarQube platform.
- `zpa-checks` - The built-in coding rules provided by ZPA.
- `zpa-checks-testkit` - Test helper for coding rules, it can be used to test custom rules.
- `zpa-core` - The heart of this project. It contains the lexer, the parser and the code required to understand and process PL/SQL code.
- `zpa-toolkit` - A visual tool to review the AST (abstract syntax tree) generated by the parser.

The API exposed to custom plugins must be located in the package `org.sonar.plugins.plsqlopen.api` (it's a requirement from the SonarQube server). The classes located outside this package are not prepared for external consumption, so if you use them, your code can break without any further notice.

### Running the integration tests

There are two sets of integration tests:

- [sonar-zpa-plugin/integrationTest](https://github.com/felipebz/zpa/tree/main/sonar-zpa-plugin/src/integrationTest): checks if the metrics are imported correctly in SonarQube
- [zpa-checks/integrationTest](https://github.com/felipebz/zpa/tree/main/zpa-checks/src/integrationTest): checks the quality of parser and rules against real-world code

To run the integrations tests, first update the submodules:

    git submodule update --init --recursive
    
Build the main plugin and the custom rules example:

    ./gradlew build publishToMavenLocal
    ./gradlew build -p plsql-custom-rules

Then run the tests:

    ./gradlew integrationTest

By default, the tests will be executed using SonarQube Community Build 25.8. You can change the SonarQube version using the property `sonar.runtimeVersion`, passing a value in the format `LATEST_RELEASE[number]`, like `LATEST_RELEASE[25.3]`, or `a.b.c.d` for an exact release including build number: 

    ./gradlew integrationTest -Dsonar.runtimeVersion=LATEST_RELEASE[25.8]


================================================
FILE: build-logic/build.gradle.kts
================================================
plugins {
    `kotlin-dsl`
}

repositories {
    gradlePluginPortal()
    mavenCentral()
}

dependencies {
    implementation(libs.kotlin.gradle.plugin)
    implementation(libs.license.gradle.plugin)
    implementation(libs.dokka.javadoc.plugin)
    implementation(libs.jreleaser.gradle.plugin)
    implementation(libs.sonarqube.gradle.plugin)
}


================================================
FILE: build-logic/settings.gradle.kts
================================================
dependencyResolutionManagement {
    // Reuse version catalog from the main build.
    versionCatalogs {
        create("libs", { from(files("../gradle/libs.versions.toml")) })
    }
}

rootProject.name = "build-logic"


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/build-conventions.gradle.kts
================================================
package com.felipebz.zpa

plugins {
    id("com.felipebz.zpa.kotlin-conventions")
    id("com.felipebz.zpa.testing-conventions")
    id("com.felipebz.zpa.license-conventions")
    id("com.felipebz.zpa.publishing-conventions")
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/jreleaser-conventions.gradle.kts
================================================
package com.felipebz.zpa

plugins {
    id("org.jreleaser")
}

jreleaser {
    project {
        description.set("ZPA - Parser and static code analysis tool for PL/SQL and Oracle SQL")
        authors.set(listOf("felipebz"))
        license.set("LGPL-3.0")
        links {
            homepage.set("https://zpa.felipebz.com")
        }
        inceptionYear.set("2015")
        snapshot {
            fullChangelog.set(true)
        }
    }
    release {
        github {
            overwrite.set(true)
            tagName.set("{{projectVersion}}")
            draft.set(true)
            changelog {
                formatted.set(org.jreleaser.model.Active.ALWAYS)
                preset.set("conventional-commits")
                contentTemplate.set(file("template/changelog.tpl"))
                contributors {
                    enabled.set(false)
                }
                hide {
                    uncategorized.set(true)
                }
            }
        }
    }
    distributions {
        listOf("sonar-zpa-plugin", "zpa-toolkit").forEach {
            create(it) {
                artifact {
                    path.set(file("{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar"))
                }
            }
        }
        create("plsql-custom-rules") {
            artifact {
                path.set(file("build/{{distributionName}}.zip"))
            }
        }
    }
    signing {
        active.set(org.jreleaser.model.Active.ALWAYS)
        armored.set(true)
    }
    deploy {
        maven {
            mavenCentral {
                create("sonatype") {
                    active.set(org.jreleaser.model.Active.RELEASE)
                    snapshotSupported.set(true)
                    url.set("https://central.sonatype.com/api/v1/publisher")
                    stagingRepository("build/staging-deploy")
                }
            }
            nexus2 {
                create("snapshot-deploy") {
                    active.set(org.jreleaser.model.Active.SNAPSHOT)
                    url.set("https://central.sonatype.com/repository/maven-snapshots")
                    snapshotUrl.set("https://central.sonatype.com/repository/maven-snapshots")
                    applyMavenCentralRules.set(true)
                    snapshotSupported.set(true)
                    closeRepository.set(true)
                    releaseRepository.set(true)
                    stagingRepository("build/staging-deploy")
                }
            }
        }
    }
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/kotlin-conventions.gradle.kts
================================================
package com.felipebz.zpa

plugins {
    id("java")
    id("org.jetbrains.kotlin.jvm")
}

repositories {
    mavenCentral()
    mavenLocal()
    maven {
        setUrl("https://central.sonatype.com/repository/maven-snapshots/")
    }
}

kotlin {
    compilerOptions {
        freeCompilerArgs = listOf("-Xconsistent-data-class-copy-visibility")
    }
}

java {
    withSourcesJar()
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/license-conventions.gradle.kts
================================================
package com.felipebz.zpa

import com.hierynomus.gradle.license.tasks.LicenseCheck
import com.hierynomus.gradle.license.tasks.LicenseFormat
import java.io.File
import java.util.*

plugins {
    id("com.github.hierynomus.license")
}

tasks.withType<LicenseFormat>().configureEach {
    extra.set("year", Calendar.getInstance().get(Calendar.YEAR))
    header = File(this.project.rootDir, "LICENSE_HEADER")
    include("**/*.kt")
}

tasks.withType<LicenseCheck>().configureEach {
    extra.set("year", Calendar.getInstance().get(Calendar.YEAR))
    header = File(this.project.rootDir, "LICENSE_HEADER")
    include("**/*.kt")
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/publishing-conventions.gradle.kts
================================================
package com.felipebz.zpa

import org.gradle.api.publish.maven.MavenPublication
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.kotlin.dsl.register

plugins {
    id("maven-publish")
    id("org.jetbrains.dokka-javadoc")
    id("signing")
}

val dokka by tasks.register<Jar>("dokka") {
    dependsOn(tasks.dokkaGenerateModuleJavadoc)
    from(tasks.dokkaGenerateModuleJavadoc.flatMap { it.outputDirectory })
    archiveClassifier.set("javadoc")
}

signing {
    setRequired({
        gradle.taskGraph.hasTask("publish")
    })
    val signingKey: String? by project
    val signingPassword: String? by project
    useInMemoryPgpKeys(signingKey, signingPassword)
    sign(publishing.publications)
}

publishing {
    repositories {
        maven {
            url = rootProject.layout.buildDirectory.dir("staging-deploy").get().asFile.toURI()
        }
    }
    publications {
        create<MavenPublication>("maven") {
            from(components["java"])
            artifact(dokka)
            pom {
                name.set(provider { project.description })
                description.set(provider { project.description })
                url.set("https://zpa.felipebz.com")
                organization {
                    name.set("Felipe Zorzo")
                    url.set("https://felipezorzo.com.br")
                }
                licenses {
                    license {
                        name.set("GNU LGPL 3")
                        url.set("https://www.gnu.org/licenses/lgpl.txt")
                        distribution.set("repo")
                    }
                }
                scm {
                    url.set("https://github.com/felipebz/zpa")
                    connection.set("scm:git:https://github.com/felipebz/zpa.git")
                    developerConnection.set("scm:git:https://github.com/felipebz/zpa.git")
                }
                developers {
                    developer {
                        id.set("felipebz")
                        name.set("Felipe Zorzo")
                        url.set("https://felipezorzo.com.br")
                        email.set("felipe@felipezorzo.com.br")
                    }
                }
            }
        }
    }
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/sonarqube-conventions.gradle.kts
================================================
package com.felipebz.zpa

plugins {
    id("org.sonarqube")
}

sonarqube {
    properties {
        property("sonar.projectName", "ZPA")
    }
}


================================================
FILE: build-logic/src/main/kotlin/com/felipebz/zpa/testing-conventions.gradle.kts
================================================
package com.felipebz.zpa

plugins {
    id("com.felipebz.zpa.kotlin-conventions")
    id("jacoco")
}

val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs")

dependencies {
    testImplementation(libs.findLibrary("assertj").get())
    testImplementation(libs.findLibrary("mockito").get())
    testImplementation(libs.findLibrary("mockito-kotlin").get())
}

configurations {
    // include compileOnly dependencies during test
    testImplementation {
        extendsFrom(configurations.compileOnly.get())
    }
}

testing {
    suites {
        val test by getting(JvmTestSuite::class) {
            useJUnitJupiter(libs.findVersion("junit").get().requiredVersion)
        }
    }
}

tasks.test {
    finalizedBy(tasks.jacocoTestReport)
}

tasks.jacocoTestReport {
    dependsOn(tasks.test) // tests are required to run before generating the report
}

jacoco {
    toolVersion = "0.8.14"
}

tasks.jacocoTestReport {
    reports {
        xml.required.set(true)
    }
}


================================================
FILE: build.gradle.kts
================================================
plugins {
    base
    id("com.felipebz.zpa.jreleaser-conventions")
    id("com.felipebz.zpa.sonarqube-conventions")
}


================================================
FILE: gradle/libs.versions.toml
================================================
[versions]
kotlin = "2.3.21"
dokka = "2.2.0"
download = "5.7.0"
jreleaser = "1.23.0"
license = "0.16.1"
shadow = "9.4.1"
sonarscanner = "7.2.3.7755"

# libs
flatlaf = "3.7.1"
flr = "1.5.0"
jackson = "2.21.3"
jsoup = "1.22.2"
min-sonarqube = "25.8.0.111929"
min-sonarqubeapi = "13.0.0.3026"
woodstox = "7.1.1"

# testing
assertj = "3.27.7"
junit = "6.0.3"
mockito = "5.23.0"
mockito-kotlin = "6.3.0"
sonarqube-orchestrator = "6.1.0.3962"

[libraries]
assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" }
flatlaf = { module = "com.formdev:flatlaf", version.ref = "flatlaf" }
flr-core = { module = "com.felipebz.flr:flr-core", version.ref = "flr" }
flr-testing-harness = { module = "com.felipebz.flr:flr-testing-harness", version.ref = "flr" }
flr-toolkit = { module = "com.felipebz.flr:flr-toolkit", version.ref = "flr" }
flr-xpath = { module = "com.felipebz.flr:flr-xpath", version.ref = "flr" }
jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
jackson-xml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-xml", version.ref = "jackson" }
jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" }
mockito = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version.ref = "mockito-kotlin" }
woodstox = { module = "com.fasterxml.woodstox:woodstox-core", version.ref = "woodstox" }
sonar-plugin-api = { module = "org.sonarsource.api.plugin:sonar-plugin-api", version.ref = "min-sonarqubeapi" }
sonar-plugin-api-impl = { module = "org.sonarsource.sonarqube:sonar-plugin-api-impl", version.ref = "min-sonarqube" }
sonar-ws = { module = "org.sonarsource.sonarqube:sonar-ws", version.ref = "min-sonarqube" }
sonar-orchestrator = { module = "org.sonarsource.orchestrator:sonar-orchestrator-junit5", version.ref = "sonarqube-orchestrator" }
dokka-javadoc-plugin = { module = "org.jetbrains.dokka-javadoc:org.jetbrains.dokka-javadoc.gradle.plugin", version.ref = "dokka" }
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
license-gradle-plugin = { module = "com.github.hierynomus.license:com.github.hierynomus.license.gradle.plugin", version.ref = "license" }
jreleaser-gradle-plugin = { module = "org.jreleaser:org.jreleaser.gradle.plugin", version.ref = "jreleaser" }
sonarqube-gradle-plugin = { module = "org.sonarqube:org.sonarqube.gradle.plugin", version.ref = "sonarscanner" }

[plugins]
download = { id = "de.undercouch.download", version.ref = "download" }
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }


================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


================================================
FILE: gradle.properties
================================================
group=com.felipebz.zpa
version=4.2.0-SNAPSHOT

# Workaround for Dokka issue: https://github.com/Kotlin/dokka/issues/1405
org.gradle.jvmargs=-XX:MaxMetaspaceSize=1G
systemProp.sonar.gradle.skipCompile=true
org.gradle.parallel=false
org.gradle.configuration-cache=false
org.gradle.caching=true


================================================
FILE: gradlew
================================================
#!/bin/sh

#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
#   Gradle start up script for POSIX generated by Gradle.
#
#   Important for running:
#
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
#       noncompliant, but you have some other compliant shell such as ksh or
#       bash, then to run this script, type that shell name before the whole
#       command line, like:
#
#           ksh Gradle
#
#       Busybox and similar reduced shells will NOT work, because this script
#       requires all of these POSIX shell features:
#         * functions;
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
#         * compound commands having a testable exit status, especially «case»;
#         * various built-in commands including «command», «set», and «ulimit».
#
#   Important for patching:
#
#   (2) This script targets any POSIX shell, so it avoids extensions provided
#       by Bash, Ksh, etc; in particular arrays are avoided.
#
#       The "traditional" practice of packing multiple parameters into a
#       space-separated string is a well documented source of bugs and security
#       problems, so this is (mostly) avoided, by progressively accumulating
#       options in "$@", and eventually passing that to Java.
#
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
#       see the in-line comments for details.
#
#       There are tweaks for specific operating systems such as AIX, CygWin,
#       Darwin, MinGW, and NonStop.
#
#   (3) This script is generated from the Groovy template
#       https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
#       within the Gradle project.
#
#       You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0

# Need this for daisy-chained symlinks.
while
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
    [ -h "$app_path" ]
do
    ls=$( ls -ld "$app_path" )
    link=${ls#*' -> '}
    case $link in             #(
      /*)   app_path=$link ;; #(
      *)    app_path=$APP_HOME$link ;;
    esac
done

# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

warn () {
    echo "$*"
} >&2

die () {
    echo
    echo "$*"
    echo
    exit 1
} >&2

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in                #(
  CYGWIN* )         cygwin=true  ;; #(
  Darwin* )         darwin=true  ;; #(
  MSYS* | MINGW* )  msys=true    ;; #(
  NONSTOP* )        nonstop=true ;;
esac



# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD=$JAVA_HOME/jre/sh/java
    else
        JAVACMD=$JAVA_HOME/bin/java
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD=java
    if ! command -v java >/dev/null 2>&1
    then
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
fi

# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
    case $MAX_FD in #(
      max*)
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        MAX_FD=$( ulimit -H -n ) ||
            warn "Could not query maximum file descriptor limit"
    esac
    case $MAX_FD in  #(
      '' | soft) :;; #(
      *)
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        ulimit -n "$MAX_FD" ||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
    esac
fi

# Collect all arguments for the java command, stacking in reverse order:
#   * args from the command line
#   * the main class name
#   * -classpath
#   * -D...appname settings
#   * --module-path (only if needed)
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.

# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )

    JAVACMD=$( cygpath --unix "$JAVACMD" )

    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    for arg do
        if
            case $arg in                                #(
              -*)   false ;;                            # don't mess with options #(
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
                    [ -e "$t" ] ;;                      #(
              *)    false ;;
            esac
        then
            arg=$( cygpath --path --ignore --mixed "$arg" )
        fi
        # Roll the args list around exactly as many times as the number of
        # args, so each arg winds up back in the position where it started, but
        # possibly modified.
        #
        # NB: a `for` loop captures its iteration list before it begins, so
        # changing the positional parameters here affects neither the number of
        # iterations, nor the values presented in `arg`.
        shift                   # remove old arg
        set -- "$@" "$arg"      # push replacement arg
    done
fi


# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Collect all arguments for the java command:
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
#     and any embedded shellness will be escaped.
#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
#     treated as '${Hostname}' itself on the command line.

set -- \
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
        -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
        "$@"

# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
    die "xargs is not available"
fi

# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
#   set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#

eval "set -- $(
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
        xargs -n1 |
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
        tr '\n' ' '
    )" '"$@"'

exec "$JAVACMD" "$@"


================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem      https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables, and ensure extensions are enabled
setlocal EnableExtensions

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

"%COMSPEC%" /c exit 1

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

"%COMSPEC%" /c exit 1

:execute
@rem Setup the command line



@rem Execute Gradle
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel

:exitWithErrorLevel
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
"%COMSPEC%" /c exit %ERRORLEVEL%


================================================
FILE: plsql-custom-rules/README.md
================================================
# plsql-custom-rules

This repository contains examples of custom rules for PL/SQL code analysis using SonarQube. The examples are available as both Gradle and Maven projects. The purpose of this README is to provide information on how to customize and use the examples.

## Getting Started

## Customizing the pom.xml (if you're using Maven)

Properties such as `groupId`, `artifactId`, `version`, `name` and `description` can be freely modified.

It is important to note that the `sonar-packaging-maven-plugin` is required and it contains the entry point of the plugin, as provided in the property `pluginClass`. If you refactor the code or rename the class extending `org.sonar.api.SonarPlugin`, you will have to change this configuration.

## Customizing the build.gradle.kts (if you're using Gradle)

Properties such as `group`, `version` and `description` can be freely modified.

It is important to note that you'll may need to update the values in [attributes map](build.gradle.kts#L52) of the `jar` task.

## Dependencies

The plugin requires two dependencies: `sonar-plugin-api` and `sonar-zpa-plugin`. The `sonar-plugin-api` dependency represents the minimum version of SonarQube your plugin will support. Additionally, a dependency on `zpa-checks-testkit` can be added to make testing easier. These dependencies are already included in the `pom.xml` and `build.gradle.kts` files.

## Compatibility with zpa-cli

To make the plugin compatible with [zpa-cli](https://github.com/felipebz/zpa-cli), you need to adjust the content of [extensions.idx](src/main/resources/META-INF/extensions.idx) to match your `CustomPlSqlRulesDefinition` subclass.


================================================
FILE: plsql-custom-rules/build.gradle.kts
================================================
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.util.*

plugins {
    java
}

repositories {
    mavenCentral()
    mavenLocal()
    maven {
        url = uri("https://central.sonatype.com/repository/maven-snapshots/")
    }
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}

val minSonarQubeVersion = "25.8.0.111929"
val minSonarQubeApiVersion = "13.0.0.3026"
val junitVersion = "6.0.3"
val zpaVersion = "4.2.0-SNAPSHOT"

dependencies {
    compileOnly("org.sonarsource.api.plugin:sonar-plugin-api:$minSonarQubeApiVersion")
    compileOnly("com.felipebz.zpa:sonar-zpa-plugin:$zpaVersion")
    testImplementation("org.sonarsource.sonarqube:sonar-plugin-api-impl:$minSonarQubeVersion")
    testImplementation("com.felipebz.zpa:zpa-checks-testkit:$zpaVersion")
    testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

configurations {
    // include compileOnly dependencies during test
    testImplementation {
        extendsFrom(configurations.compileOnly.get())
    }
}

tasks.named<Test>("test") {
    useJUnitPlatform()
    testLogging {
        events("passed", "skipped", "failed")
    }
}

tasks.jar {
    manifest {
        val buildDate = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ").withZone(ZoneId.systemDefault()).format(
            Date().toInstant())
        attributes(mapOf(
            "Plugin-BuildDate" to buildDate,
            "Plugin-ChildFirstClassLoader" to "false",
            "Plugin-Class" to "com.company.plsql.PlSqlCustomRulesPlugin",
            "Plugin-Description" to "PL/SQL Custom Rules",
            "Plugin-Developers" to "",
            "Plugin-Display-Version" to project.version,
            "Plugin-Key" to "myrules",
            "Plugin-License" to "",
            "Plugin-Name" to "Company PL/SQL Rules",
            "Plugin-Version" to project.version,
            "Sonar-Version" to minSonarQubeApiVersion,
            "SonarLint-Supported" to "false",
            "Plugin-RequiredForLanguages" to "plsqlopen"
        ))
    }
}

group = "com.company"
version = "1.0-SNAPSHOT"
description = "Company PL/SQL Rules"

tasks.withType<JavaCompile>() {
    options.encoding = "UTF-8"
}


================================================
FILE: plsql-custom-rules/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


================================================
FILE: plsql-custom-rules/gradlew
================================================
#!/bin/sh

#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
#   Gradle start up script for POSIX generated by Gradle.
#
#   Important for running:
#
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
#       noncompliant, but you have some other compliant shell such as ksh or
#       bash, then to run this script, type that shell name before the whole
#       command line, like:
#
#           ksh Gradle
#
#       Busybox and similar reduced shells will NOT work, because this script
#       requires all of these POSIX shell features:
#         * functions;
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
#         * compound commands having a testable exit status, especially «case»;
#         * various built-in commands including «command», «set», and «ulimit».
#
#   Important for patching:
#
#   (2) This script targets any POSIX shell, so it avoids extensions provided
#       by Bash, Ksh, etc; in particular arrays are avoided.
#
#       The "traditional" practice of packing multiple parameters into a
#       space-separated string is a well documented source of bugs and security
#       problems, so this is (mostly) avoided, by progressively accumulating
#       options in "$@", and eventually passing that to Java.
#
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
#       see the in-line comments for details.
#
#       There are tweaks for specific operating systems such as AIX, CygWin,
#       Darwin, MinGW, and NonStop.
#
#   (3) This script is generated from the Groovy template
#       https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
#       within the Gradle project.
#
#       You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0

# Need this for daisy-chained symlinks.
while
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
    [ -h "$app_path" ]
do
    ls=$( ls -ld "$app_path" )
    link=${ls#*' -> '}
    case $link in             #(
      /*)   app_path=$link ;; #(
      *)    app_path=$APP_HOME$link ;;
    esac
done

# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

warn () {
    echo "$*"
} >&2

die () {
    echo
    echo "$*"
    echo
    exit 1
} >&2

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in                #(
  CYGWIN* )         cygwin=true  ;; #(
  Darwin* )         darwin=true  ;; #(
  MSYS* | MINGW* )  msys=true    ;; #(
  NONSTOP* )        nonstop=true ;;
esac



# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD=$JAVA_HOME/jre/sh/java
    else
        JAVACMD=$JAVA_HOME/bin/java
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD=java
    if ! command -v java >/dev/null 2>&1
    then
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
fi

# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
    case $MAX_FD in #(
      max*)
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        MAX_FD=$( ulimit -H -n ) ||
            warn "Could not query maximum file descriptor limit"
    esac
    case $MAX_FD in  #(
      '' | soft) :;; #(
      *)
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
        # shellcheck disable=SC2039,SC3045
        ulimit -n "$MAX_FD" ||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
    esac
fi

# Collect all arguments for the java command, stacking in reverse order:
#   * args from the command line
#   * the main class name
#   * -classpath
#   * -D...appname settings
#   * --module-path (only if needed)
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.

# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )

    JAVACMD=$( cygpath --unix "$JAVACMD" )

    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    for arg do
        if
            case $arg in                                #(
              -*)   false ;;                            # don't mess with options #(
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
                    [ -e "$t" ] ;;                      #(
              *)    false ;;
            esac
        then
            arg=$( cygpath --path --ignore --mixed "$arg" )
        fi
        # Roll the args list around exactly as many times as the number of
        # args, so each arg winds up back in the position where it started, but
        # possibly modified.
        #
        # NB: a `for` loop captures its iteration list before it begins, so
        # changing the positional parameters here affects neither the number of
        # iterations, nor the values presented in `arg`.
        shift                   # remove old arg
        set -- "$@" "$arg"      # push replacement arg
    done
fi


# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Collect all arguments for the java command:
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
#     and any embedded shellness will be escaped.
#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
#     treated as '${Hostname}' itself on the command line.

set -- \
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
        -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
        "$@"

# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
    die "xargs is not available"
fi

# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
#   set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#

eval "set -- $(
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
        xargs -n1 |
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
        tr '\n' ' '
    )" '"$@"'

exec "$JAVACMD" "$@"


================================================
FILE: plsql-custom-rules/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem      https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem

@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables, and ensure extensions are enabled
setlocal EnableExtensions

set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

"%COMSPEC%" /c exit 1

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto execute

echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2

"%COMSPEC%" /c exit 1

:execute
@rem Setup the command line



@rem Execute Gradle
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel

:exitWithErrorLevel
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
"%COMSPEC%" /c exit %ERRORLEVEL%


================================================
FILE: plsql-custom-rules/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.company</groupId>
  <artifactId>plsql-custom-rules</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>sonar-plugin</packaging>
  
  <name>Company PL/SQL Rules</name>
  <description>PL/SQL Custom Rules</description>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <zpa.version>4.2.0-SNAPSHOT</zpa.version>
    <sonarqube.api.min.version>13.0.0.3026</sonarqube.api.min.version>
    <sonarqube.min.version>25.8.0.111929</sonarqube.min.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.sonarsource.api.plugin</groupId>
      <artifactId>sonar-plugin-api</artifactId>
      <version>${sonarqube.api.min.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.sonarsource.sonarqube</groupId>
      <artifactId>sonar-plugin-api-impl</artifactId>
      <version>${sonarqube.min.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.felipebz.zpa</groupId>
      <artifactId>sonar-zpa-plugin</artifactId>
      <version>${zpa.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>com.felipebz.zpa</groupId>
      <artifactId>zpa-checks-testkit</artifactId>
      <version>${zpa.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>6.0.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId>
        <artifactId>sonar-packaging-maven-plugin</artifactId>
        <version>1.25.1.3002</version>
        <extensions>true</extensions>
        <configuration>
          <pluginClass>com.company.plsql.PlSqlCustomRulesPlugin</pluginClass>
          <pluginKey>my-rules</pluginKey>
          <requiredForLanguages>plsqlopen</requiredForLanguages>
          <sonarLintSupported>false</sonarLintSupported>
          <pluginApiMinVersion>${sonarqube.api.min.version}</pluginApiMinVersion>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.15.0</version>
        <configuration>
          <release>21</release>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.5.5</version>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>public_feed</id>
      <url>https://central.sonatype.com/repository/maven-snapshots/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>
</project>


================================================
FILE: plsql-custom-rules/settings.gradle.kts
================================================
rootProject.name = "plsql-custom-rules"


================================================
FILE: plsql-custom-rules/src/main/java/com/company/plsql/ForbiddenDmlCheck.java
================================================
package com.company.plsql;

import org.sonar.plugins.plsqlopen.api.annotations.Priority;
import org.sonar.plugins.plsqlopen.api.annotations.Rule;
import org.sonar.plugins.plsqlopen.api.DmlGrammar;
import org.sonar.plugins.plsqlopen.api.annotations.ActivatedByDefault;
import org.sonar.plugins.plsqlopen.api.annotations.ConstantRemediation;
import org.sonar.plugins.plsqlopen.api.checks.PlSqlCheck;
import org.sonar.plugins.plsqlopen.api.sslr.AstNode;

@Rule(
    name = "Avoid DML on table USER",
    description = "You should use the functions from the USER_WRAPPER package.",
    key = "ForbiddenDmlCheck",
    priority = Priority.MAJOR
)
@ConstantRemediation("10min")
@ActivatedByDefault
public class ForbiddenDmlCheck extends PlSqlCheck {
    
    @Override
    public void init() {
        subscribeTo(DmlGrammar.DML_TABLE_EXPRESSION_CLAUSE);
    }

    @Override
    public void visitNode(AstNode node) {
        AstNode table = node.getFirstChildOrNull(DmlGrammar.TABLE_REFERENCE);
        
        if (table != null && table.getTokenOriginalValue().equalsIgnoreCase("user")) {
            addIssue(table, "Replace this query by a function of the USER_WRAPPER package.");
        }
    }

}


================================================
FILE: plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesDefinition.java
================================================
package com.company.plsql;

import org.sonar.plugins.plsqlopen.api.CustomPlSqlRulesDefinition;

public class PlSqlCustomRulesDefinition extends CustomPlSqlRulesDefinition {
    
    @Override
    public String repositoryName() {
        return "Company";
    }

    @Override
    public String repositoryKey() {
        return "my-rules";
    }

    @Override
    public Class[] checkClasses() {
        return new Class[] {
            ForbiddenDmlCheck.class
        };
    }

}


================================================
FILE: plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesPlugin.java
================================================
package com.company.plsql;

import org.sonar.api.Plugin;

public class PlSqlCustomRulesPlugin implements Plugin {
    
    @Override
    public void define(Plugin.Context context) {
        context.addExtension(PlSqlCustomRulesDefinition.class);
    }

}


================================================
FILE: plsql-custom-rules/src/main/resources/META-INF/extensions.idx
================================================
com.company.plsql.PlSqlCustomRulesDefinition


================================================
FILE: plsql-custom-rules/src/test/java/com/company/plsql/ForbiddenDmlCheckTest.java
================================================
package com.company.plsql;

import org.junit.jupiter.api.Test;
import com.felipebz.zpa.checks.verifier.PlSqlCheckVerifier;

public class ForbiddenDmlCheckTest {

    @Test
    public void test() {
        PlSqlCheckVerifier.verify("src/test/resources/forbidden-dml.sql", new ForbiddenDmlCheck());
    }
    
}


================================================
FILE: plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesDefinitionTest.java
================================================
package com.company.plsql;

import org.junit.jupiter.api.Test;
import org.sonar.api.Plugin;
import org.sonar.api.SonarEdition;
import org.sonar.api.SonarQubeSide;
import org.sonar.api.internal.SonarRuntimeImpl;
import org.sonar.api.utils.Version;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class PlSqlCustomRulesDefinitionTest {

    @Test
    public void test() {
        Plugin.Context context = new Plugin.Context(SonarRuntimeImpl.forSonarQube(Version.create(6, 0), SonarQubeSide.SERVER, SonarEdition.COMMUNITY));
        PlSqlCustomRulesPlugin plugin = new PlSqlCustomRulesPlugin();
        plugin.define(context);
        assertEquals(1, context.getExtensions().size());
    }

}


================================================
FILE: plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesPluginTest.java
================================================
package com.company.plsql;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class PlSqlCustomRulesPluginTest {

    @Test
    public void testRepository() {
        PlSqlCustomRulesDefinition plugin = new PlSqlCustomRulesDefinition();
        assertEquals("Company", plugin.repositoryName());
        assertEquals("my-rules", plugin.repositoryKey());
        assertEquals(1, plugin.checkClasses().length);
    }

}


================================================
FILE: plsql-custom-rules/src/test/resources/forbidden-dml.sql
================================================
select * 
  from user u inner join profile p on (u.id = p.user_id); -- Noncompliant {{Replace this query by a function of the USER_WRAPPER package.}}
--     ^^^^

select *
from (select *
      from user) -- Noncompliant
--         ^^^^


================================================
FILE: settings.gradle.kts
================================================
pluginManagement {
    includeBuild("build-logic")
}

rootProject.name = "zpa"
include(":sonar-zpa-plugin")
include(":zpa-checks")
include(":zpa-checks-testkit")
include(":zpa-core")
include(":zpa-toolkit")


================================================
FILE: sonar-zpa-plugin/build.gradle.kts
================================================
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import groovy.util.Node
import groovy.util.NodeList
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.util.*

plugins {
    id("com.felipebz.zpa.build-conventions")
    alias(libs.plugins.shadow)
}

dependencies {
    implementation(libs.flr.core)
    implementation(libs.jackson.xml)
    implementation(libs.woodstox)
    implementation(project(":zpa-core"))
    implementation(project(":zpa-checks"))
    implementation(project(":zpa-checks-testkit"))
    compileOnly(libs.sonar.plugin.api)
    compileOnly(libs.sonar.plugin.api.impl)
}

testing {
    suites {
        register<JvmTestSuite>("integrationTest") {
            dependencies {
                implementation(libs.assertj)
                implementation(libs.sonar.ws)
                implementation(libs.sonar.orchestrator)
            }

            targets {
                all {
                    testTask.configure {
                        val zipFile = System.getProperty("sonar.zipFile")

                        val launcher = javaToolchains.launcherFor {
                            languageVersion.set(JavaLanguageVersion.of(21))
                        }
                        javaLauncher.set(launcher)

                        environment("JAVA_HOME", launcher.get().metadata.installationPath.asFile.toString())
                        systemProperty("java.awt.headless", "true")
                        if (zipFile != null) {
                            systemProperty("sonar.zipFile", zipFile)
                        }
                        outputs.upToDateWhen { false }
                    }
                }
            }
        }
    }
}

val shadowJar = tasks.named<ShadowJar>("shadowJar") {
    relocate("com.felipebz.flr.api", "org.sonar.plugins.plsqlopen.api.sslr")
    relocate("com.felipebz.zpa.api", "org.sonar.plugins.plsqlopen.api")
    archiveClassifier.set("")
    manifest {
        val buildDate = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ").withZone(ZoneId.systemDefault()).format(Date().toInstant())
        attributes(mapOf(
            "Plugin-BuildDate" to buildDate,
            "Plugin-ChildFirstClassLoader" to "false",
            "Plugin-Class" to "com.felipebz.zpa.PlSqlPlugin",
            "Plugin-Description" to "Enables analysis and reporting on PL/SQL projects.",
            "Plugin-Developers" to "Felipe Zorzo",
            "Plugin-Display-Version" to project.version,
            "Plugin-Homepage" to "https://zpa.felipebz.com",
            "Plugin-IssueTrackerUrl" to "https://github.com/felipebz/zpa/issues",
            "Plugin-Key" to "plsqlopen",
            "Plugin-License" to "GNU LGPL 3",
            "Plugin-Name" to "ZPA Plugin for SonarQube",
            "Plugin-Organization" to "Felipe Zorzo",
            "Plugin-OrganizationUrl" to "https://felipezorzo.com.br",
            "Plugin-SourcesUrl" to "https://github.com/felipebz/zpa",
            "Plugin-Version" to project.version,
            "Sonar-Version" to libs.versions.min.sonarqubeapi,
            "SonarLint-Supported" to "false",
            "Plugin-RequiredForLanguages" to "plsqlopen"
        ))
    }
}

tasks.build {
    dependsOn(shadowJar)
}

tasks.jar {
    enabled = false
}

// Disable Gradle module metadata as it lists wrong dependencies
tasks.withType<GenerateModuleMetadata> {
    enabled = false
}

publishing {
    publications.withType<MavenPublication> {
        this.pom.withXml {
            val pomNode = asNode()

            val dependencyNodes = pomNode.get("dependencies") as NodeList
            dependencyNodes.forEach {
                (it as Node).parent().remove(it)
            }
        }
        artifact(shadowJar)
    }
}

description = "ZPA Plugin for SonarQube"


================================================
FILE: sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/IssueTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.it

import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.Assertions.tuple
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
import org.sonarqube.ws.client.issues.SearchRequest
import java.io.File

class IssueTest {

    @Test
    fun issues() {
        val issues = Tests.newWsClient(orchestrator)
            .issues()
            .search(SearchRequest().setComponentKeys(listOf(PROJECT_KEY)))
            .issuesList

        assertThat(issues).extracting("rule", "component")
                .containsExactlyInAnyOrder(
                        tuple("plsql:EmptyBlock", "$PROJECT_KEY:src/source1.sql"),
                        tuple("my-rules:ForbiddenDmlCheck", "$PROJECT_KEY:src/custom_rule.sql"))
    }

    companion object {
        private const val PROJECT_KEY = "issue"

        @JvmField
        @RegisterExtension
        val orchestrator = Tests.ORCHESTRATOR

        @JvmStatic
        @BeforeAll
        fun init() {
            orchestrator.server.provisionProject(PROJECT_KEY, PROJECT_KEY)
            orchestrator.server.associateProjectToQualityProfile(PROJECT_KEY, "plsqlopen", "it-profile")

            val build = Tests.createSonarScanner()
                .setProjectDir(File("src/integrationTest/resources/projects/metrics/"))
                .setProjectKey(PROJECT_KEY)
                .setProjectName(PROJECT_KEY)
                .setProjectVersion("1.0")
                .setSourceDirs("src")
                .setProperty("sonar.sourceEncoding", "UTF-8")
            orchestrator.executeBuild(build)
        }
    }

}


================================================
FILE: sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/MetricsTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.it

import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertAll
import org.junit.jupiter.api.extension.RegisterExtension
import org.sonarqube.ws.Measures
import org.sonarqube.ws.client.measures.ComponentRequest
import java.io.File

class MetricsTest {

    @Test
    fun project_level() {
        // Size
        assertAll(
            // Size
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "ncloc")).isEqualTo(32) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "lines")).isEqualTo(33) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "files")).isEqualTo(4) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "statements")).isEqualTo(7) },
            // Documentation
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "comment_lines")).isEqualTo(1) },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "comment_lines_density")).isEqualTo(3.0) },
            { assertThat(getMeasureAsString(PROJECT_KEY, "public_documented_api_density")).isNull() },
            // Duplication
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "duplicated_lines")).isZero },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "duplicated_blocks")).isZero },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "duplicated_files")).isZero },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "duplicated_lines_density")).isZero },
            // Rules
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "violations")).isZero },
            // Tests
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "tests")).isEqualTo(6) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "skipped_tests")).isEqualTo(1) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "test_failures")).isEqualTo(1) },
            { assertThat(getMeasureAsInteger(PROJECT_KEY, "test_errors")).isEqualTo(1) },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "test_success_density")).isEqualTo(66.7) },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "test_execution_time")).isEqualTo(15.0) },
            // Coverage
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "coverage")).isEqualTo(50.0) },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "line_coverage")).isEqualTo(50.0) },
            { assertThat(getMeasureAsDouble(PROJECT_KEY, "branch_coverage")).isNull() },
        )
    }

    @Test
    fun file_level() {
        assertAll(
            // Size
            { assertThat(getMeasureAsInteger(FILE_NAME, "ncloc")).isEqualTo(7) },
            { assertThat(getMeasureAsInteger(FILE_NAME, "lines")).isEqualTo(7) },
            { assertThat(getMeasureAsInteger(FILE_NAME, "statements")).isEqualTo(2) },
            // Documentation
            { assertThat(getMeasureAsInteger(FILE_NAME, "comment_lines")).isZero },
            { assertThat(getMeasureAsDouble(FILE_NAME, "comment_lines_density")).isZero },
            // Duplication
            { assertThat(getMeasureAsInteger(FILE_NAME, "duplicated_lines")).isZero },
            { assertThat(getMeasureAsInteger(FILE_NAME, "duplicated_blocks")).isZero },
            { assertThat(getMeasureAsInteger(FILE_NAME, "duplicated_files")).isZero },
            { assertThat(getMeasureAsDouble(FILE_NAME, "duplicated_lines_density")).isZero },
            // Rules
            { assertThat(getMeasureAsInteger(FILE_NAME, "violations")).isZero },
        )
    }

    @Test
    fun covered_file() {
        assertAll(
            // Size
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "ncloc")).isEqualTo(10) },
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "lines")).isEqualTo(10) },
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "statements")).isEqualTo(3) },
            // Documentation
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "comment_lines")).isZero },
            { assertThat(getMeasureAsDouble(COVERED_FILE_NAME, "comment_lines_density")).isZero },
            // Duplication
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "duplicated_lines")).isZero },
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "duplicated_blocks")).isZero },
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "duplicated_files")).isZero },
            { assertThat(getMeasureAsDouble(COVERED_FILE_NAME, "duplicated_lines_density")).isZero },
            // Rules
            { assertThat(getMeasureAsInteger(COVERED_FILE_NAME, "violations")).isZero },
            // Coverage
            { assertThat(getMeasureAsDouble(COVERED_FILE_NAME, "coverage")).isEqualTo(100.0) },
            { assertThat(getMeasureAsDouble(COVERED_FILE_NAME, "line_coverage")).isEqualTo(100.0) },
            { assertThat(getMeasureAsDouble(COVERED_FILE_NAME, "branch_coverage")).isNull() },
        )
    }

    @Test
    fun test_file() {
        assertAll(
            // Size
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "ncloc")).isNull() },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "lines")).isNull() },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "statements")).isNull() },
            // Documentation
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "comment_lines")).isNull() },
            { assertThat(getMeasureAsDouble(TEST_FILE_NAME, "comment_lines_density")).isNull() },
            // Duplication
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "duplicated_lines")).isZero },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "duplicated_blocks")).isZero },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "duplicated_files")).isZero },
            { assertThat(getMeasureAsDouble(TEST_FILE_NAME, "duplicated_lines_density")).isZero },
            // Rules
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "violations")).isZero },
            // Tests
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "tests")).isEqualTo(6) },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "skipped_tests")).isEqualTo(1) },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "test_failures")).isEqualTo(1) },
            { assertThat(getMeasureAsInteger(TEST_FILE_NAME, "test_errors")).isEqualTo(1) },
            { assertThat(getMeasureAsDouble(TEST_FILE_NAME, "test_success_density")).isEqualTo(66.7) },
            { assertThat(getMeasureAsDouble(TEST_FILE_NAME, "test_execution_time")).isEqualTo(15.0) },
        )
    }

    /* Helper methods */
    private fun getMeasure(componentKey: String, metricKey: String): Measures.Measure? {
        val response = Tests.newWsClient(orchestrator).measures()
            .component(
                ComponentRequest()
                    .setComponent(componentKey)
                    .setMetricKeys(listOf(metricKey))
            )
        val measures = response.component.measuresList
        return if (measures.size == 1) measures[0] else null
    }

    private fun getMeasureAsString(componentKey: String, metricKey: String): String? {
        val measure = getMeasure(componentKey, metricKey)
        return measure?.value
    }

    private fun getMeasureAsInteger(componentKey: String, metricKey: String): Int? {
        val measure = getMeasure(componentKey, metricKey)
        return if (measure == null) null else Integer.parseInt(measure.value)
    }

    private fun getMeasureAsDouble(componentKey: String, metricKey: String): Double? {
        val measure = getMeasure(componentKey, metricKey)
        return if (measure == null) null else java.lang.Double.parseDouble(measure.value)
    }

    companion object {

        @JvmField
        @RegisterExtension
        var orchestrator = Tests.ORCHESTRATOR

        private const val PROJECT_KEY = "metrics"
        private const val FILE_NAME = "$PROJECT_KEY:src/source1.sql"
        private const val COVERED_FILE_NAME = "$PROJECT_KEY:src/betwnstr.sql"
        private const val TEST_FILE_NAME = "$PROJECT_KEY:test/test_betwnstr.sql"

        @JvmStatic
        @BeforeAll
        fun init() {
            orchestrator.server.provisionProject(PROJECT_KEY, PROJECT_KEY)
            orchestrator.server.associateProjectToQualityProfile(PROJECT_KEY, "plsqlopen", "empty-profile")

            val build = Tests.createSonarScanner()
                .setProjectDir(File("src/integrationTest/resources/projects/metrics/"))
                .setProjectKey(PROJECT_KEY)
                .setProjectName(PROJECT_KEY)
                .setProjectVersion("1.0")
                .setSourceDirs("src")
                .setTestDirs("test")
                .setProperty("sonar.sourceEncoding", "UTF-8")
                .setProperty("sonar.zpa.tests.reportPaths", "test_results.xml")
                .setProperty("sonar.zpa.coverage.reportPaths", "coverage.xml")
                .setDebugLogs(true)
            orchestrator.executeBuild(build)
        }

    }
}


================================================
FILE: sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/Tests.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.it

import com.sonar.orchestrator.Orchestrator
import com.sonar.orchestrator.build.SonarScanner
import com.sonar.orchestrator.junit5.OrchestratorExtension
import com.sonar.orchestrator.locator.FileLocation
import org.junit.jupiter.api.extension.RegisterExtension
import org.sonarqube.ws.client.HttpConnector
import org.sonarqube.ws.client.WsClient
import org.sonarqube.ws.client.WsClientFactories
import java.io.File

object Tests {

    @JvmField
    @RegisterExtension
    val ORCHESTRATOR: OrchestratorExtension =
        OrchestratorExtension.builderEnv()
            .useDefaultAdminCredentialsForBuilds(true)
            .apply {
                val zipFile = System.getProperty("sonar.zipFile")
                if (zipFile != null) {
                    setZipFile(File(zipFile))
                } else {
                    setSonarVersion(System.getProperty("sonar.runtimeVersion", "LATEST_RELEASE[25.8]"))
                }
            }
            .setOrchestratorProperty("orchestrator.artifactory.url", "https://repo1.maven.org/maven2")
            .addPlugin(FileLocation.byWildcardMavenFilename(
                    File("build/libs"),
                    "sonar-zpa-plugin-*.jar"))
            .addPlugin(FileLocation.byWildcardMavenFilename(
                    File("../plsql-custom-rules/build/libs"),
                    "plsql-custom-rules-*.jar"))
            .restoreProfileAtStartup(FileLocation.ofClasspath("/com/felipebz/zpa/it/it-profile.xml"))
            .restoreProfileAtStartup(FileLocation.ofClasspath("/com/felipebz/zpa/it/empty-profile.xml"))
            .build()

    fun createSonarScanner(): SonarScanner =
        SonarScanner.create()
            .setScannerVersion("7.0.2.4839")

    fun newWsClient(orchestrator: Orchestrator): WsClient =
        WsClientFactories.getDefault()
                .newClient(HttpConnector.newBuilder()
                        .url(orchestrator.server.url).build())

}


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/com/felipebz/zpa/it/empty-profile.xml
================================================
<profile>
    <name>empty-profile</name>
    <language>plsqlopen</language>
    <rules />
</profile>


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/com/felipebz/zpa/it/it-profile.xml
================================================
<profile>
    <name>it-profile</name>
    <language>plsqlopen</language>
    <rules>
        <rule>
            <repositoryKey>plsql</repositoryKey>
            <key>EmptyBlock</key>
            <priority>MAJOR</priority>
        </rule>
        <rule>
            <repositoryKey>my-rules</repositoryKey>
            <key>ForbiddenDmlCheck</key>
            <priority>MAJOR</priority>
        </rule>
    </rules>
</profile>


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/coverage.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<coverage version="1">
  <file path="function ut3_demo.betwnstr">
    <lineToCover lineNumber="2" covered="true"/>
    <lineToCover lineNumber="4" covered="true"/>
    <lineToCover lineNumber="5" covered="true"/>
    <lineToCover lineNumber="7" covered="true"/>
  </file>
</coverage>


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/betwnstr.sql
================================================
CREATE OR REPLACE FUNCTION BETWNSTR(A_STRING VARCHAR2, A_START_POS INTEGER, A_END_POS INTEGER) RETURN VARCHAR2 IS
  L_START_POS PLS_INTEGER := A_START_POS;
BEGIN
  IF L_START_POS = 0 THEN
    L_START_POS := 1;
  END IF;
  RETURN SUBSTR(A_STRING, L_START_POS, A_END_POS - L_START_POS + 1);
END;
/


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/custom_rule.sql
================================================
declare
  x number;
begin
  select x
    into x
    from user;
end;


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/source1.sql
================================================
begin
  null;
end;
begin
  null; -- NOSONAR
end;


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/source2.sql
================================================
declare
  i number;
begin
  -- a comment
  select count(*)
    into i
    from dual;
end;

================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/test/test_betwnstr.sql
================================================
create or replace package test_betwnstr as
  -- %suite(Between string function)

  -- %test(Returns substring from start position to end position)
  procedure normal_case;

  -- %test(Returns substring when start position is zero)
  procedure zero_start_position;

  -- %test(Returns string until end if end position is greater than string length)
  procedure big_end_position;

  -- %test(Returns null for null input string value)
  procedure null_string;

  -- %test(A demo of test raising runtime exception)
  procedure bad_params;

  -- %test(A demo of failing test)
  procedure bad_test;

  -- %test(Demo of a disabled test)
  -- %disabled
  procedure disabled_test;

end;
/
create or replace package body test_betwnstr as

  procedure normal_case is
  begin
    ut.expect(betwnstr('1234567', 2, 5)).to_equal('2345');
  end;

  procedure zero_start_position is
  begin
    ut.expect(betwnstr('1234567', 0, 5)).to_(equal('12345'));
  end;

  procedure big_end_position is
  begin
    ut.expect(betwnstr('1234567', 0, 500)).to_(equal('1234567'));
  end;

  procedure null_string is
  begin
    ut.expect(betwnstr(null, 2, 5)).to_(be_null());
  end;

  procedure bad_params is
  begin
    ut.expect(betwnstr('1234567', 'a', 'b')).to_(be_null());
  end;

  procedure bad_test
    is
  begin
    ut.expect(betwnstr('1234567', 0, 500)).to_(equal('1'));
  end;

  procedure disabled_test is
  begin
    ut.expect(betwnstr(null, null, null)).not_to(be_null);
  end;

end;
/


================================================
FILE: sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/test_results.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<testExecutions version="1">
  <file path="test_betwnstr">
    <testCase name="normal_case" duration="2">
    </testCase>
    <testCase name="zero_start_position" duration="2">
    </testCase>
    <testCase name="big_end_position" duration="2">
    </testCase>
    <testCase name="null_string" duration="2">
    </testCase>
    <testCase name="bad_params" duration="2">
      <error message="encountered errors">
        <![CDATA[
ORA-06502: PL/SQL: erro: erro de conversão de caractere em número numérico ou de valor
ORA-06512: em "UT3_DEMO.TEST_BETWNSTR", line 25
ORA-06512: em "UT3_DEMO.TEST_BETWNSTR", line 25
ORA-06512: em line 6
]]>
      </error>
    </testCase>
    <testCase name="bad_test" duration="5">
      <failure message="some expectations have failed">
        <![CDATA[
Actual: '1234567' (varchar2) was expected to equal: '1' (varchar2)
at "UT3_DEMO.TEST_BETWNSTR.BAD_TEST", line 31 ut.expect( betwnstr( '1234567', 0, 500 ) ).to_( equal('1') );
]]>
      </failure>
    </testCase>
    <testCase name="disabled_test" duration="0">
      <skipped message="skipped"/>
    </testCase>
  </file>
</testExecutions>


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSql.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.sonar.api.config.Configuration
import org.sonar.api.resources.AbstractLanguage

class PlSql internal constructor(private val settings: Configuration) : AbstractLanguage(KEY, "PL/SQL (ZPA)") {

    private val defaultFileSuffixes = arrayOf("sql", "pkg", "pks", "pkb")

    override fun getFileSuffixes(): Array<String> {
        val suffixes = filterEmptyStrings(settings.getStringArray(PlSqlPlugin.Companion.FILE_SUFFIXES_KEY))
        return if (suffixes.isEmpty()) defaultFileSuffixes else suffixes
    }

    private fun filterEmptyStrings(stringArray: Array<String>): Array<String> {
        val nonEmptyStrings = stringArray
            .filterNot { it.isBlank() }
            .map { it.trim() }
        return nonEmptyStrings.toTypedArray()
    }

    companion object {
        const val KEY = "plsqlopen"
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlPlugin.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.sonar.api.Plugin
import org.sonar.api.PropertyType
import org.sonar.api.config.PropertyDefinition
import com.felipebz.zpa.symbols.ObjectLocator
import com.felipebz.zpa.log.SonarQubeLoggers
import com.felipebz.zpa.utils.log.Loggers
import com.felipebz.zpa.utplsql.UtPlSqlSensor

class PlSqlPlugin : Plugin {

    override fun define(context: Plugin.Context) {
        Loggers.factory = SonarQubeLoggers()

        context.addExtensions(
            PropertyDefinition.builder(FILE_SUFFIXES_KEY)
                .deprecatedKey(OLD_FILE_SUFFIXES_KEY)
                .name("File Suffixes")
                .description("Comma-separated list of suffixes of PL/SQL files to analyze.")
                .category(DEFAULT_CATEGORY)
                .subCategory(GENERAL)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .defaultValue("sql,pkg,pks,pkb")
                .multiValues(true)
                .build(),
            PropertyDefinition.builder(FORMS_METADATA_KEY)
                .name("Oracle Forms metadata file")
                .description("Path to the JSON file with the Oracle Forms metadata.")
                .category(DEFAULT_CATEGORY)
                .subCategory(GENERAL)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .build(),
            PropertyDefinition.builder(ERROR_RECOVERY_KEY)
                .name("Parse error recovery")
                .description("Defines mode for error handling of parsing errors. 'False' (strict) breaks after an error or 'True' (tolerant, default) continues.")
                .category(DEFAULT_CATEGORY)
                .subCategory(GENERAL)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .type(PropertyType.BOOLEAN)
                .defaultValue("true")
                .build(),
            PropertyDefinition.builder(CONCURRENT_EXECUTION_KEY)
                .name("Enable concurrent execution")
                .description("Enable concurrent analysis of files.")
                .category(DEFAULT_CATEGORY)
                .subCategory(GENERAL)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .type(PropertyType.BOOLEAN)
                .defaultValue("true")
                .build(),

            PlSql::class.java,
            PlSqlProfile::class.java,
            PlSqlSquidSensor::class.java,
            PlSqlRuleRepository::class.java,
            ObjectLocator::class.java,
        )

        addUtPlSqlExtensions(context)
    }

    private fun addUtPlSqlExtensions(context: Plugin.Context) {
        context.addExtensions(
            PropertyDefinition.builder(UtPlSqlSensor.TEST_REPORT_PATH_KEY)
                .name("Path to the utPLSQL test report(s)")
                .description("Paths (absolute or relative) to report files with utPLSQL test execution data.")
                .category(DEFAULT_CATEGORY)
                .subCategory(TEST_AND_COVERAGE)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .defaultValue(UtPlSqlSensor.DEFAULT_TEST_REPORT_PATH)
                .multiValues(true)
                .build(),
            PropertyDefinition.builder(UtPlSqlSensor.COVERAGE_REPORT_PATH_KEY)
                .name("Path to the utPLSQL coverage report(s)")
                .description("Paths (absolute or relative) to report files with utPLSQL coverage data.")
                .category(DEFAULT_CATEGORY)
                .subCategory(TEST_AND_COVERAGE)
                .onConfigScopes(PropertyDefinition.ConfigScope.PROJECT)
                .defaultValue(UtPlSqlSensor.DEFAULT_COVERAGE_REPORT_PATH)
                .multiValues(true)
                .build(),

            UtPlSqlSensor::class.java,
        )
    }

    companion object {
        private const val DEFAULT_CATEGORY = "ZPA"
        private const val GENERAL = "General"
        private const val TEST_AND_COVERAGE = "Tests and Coverage"
        internal const val FILE_SUFFIXES_KEY = "sonar.plsqlopen.file.suffixes"
        internal const val OLD_FILE_SUFFIXES_KEY = "sonar.zpa.file.suffixes"
        internal const val FORMS_METADATA_KEY = "sonar.zpa.forms.metadata"
        internal const val ERROR_RECOVERY_KEY = "sonar.zpa.errorRecoveryEnabled"
        internal const val CONCURRENT_EXECUTION_KEY = "sonar.zpa.concurrentExecution"
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlProfile.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition
import org.sonar.api.utils.AnnotationUtils
import com.felipebz.zpa.checks.CheckList
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import com.felipebz.zpa.api.annotations.ActivatedByDefault

class PlSqlProfile : BuiltInQualityProfilesDefinition {

    private val ruleMetadataLoader = SonarQubeRuleMetadataLoader()

    override fun define(context: BuiltInQualityProfilesDefinition.Context) {
        val profile = context.createBuiltInQualityProfile(CheckList.SONAR_WAY_PROFILE, PlSql.KEY)
        profile.isDefault = true

        for (ruleClass in CheckList.checks) {
            addRule(ruleClass, profile)
        }

        profile.done()
    }

    private fun addRule(ruleClass: Class<*>, profile: BuiltInQualityProfilesDefinition.NewBuiltInQualityProfile) {
        if (AnnotationUtils.getAnnotation(ruleClass, ActivatedByDefault::class.java) != null) {
            val ruleKey = CustomAnnotationBasedRulesDefinition.getRuleKey(ruleMetadataLoader, ruleClass)
            profile.activateRule(PlSqlRuleRepository.KEY, ruleKey)
        }
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlRuleRepository.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import com.felipebz.zpa.checks.CheckList
import com.felipebz.zpa.rules.SonarQubeRepositoryAdapter
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import org.sonar.api.server.rule.RulesDefinition

class PlSqlRuleRepository : RulesDefinition {

    override fun define(context: RulesDefinition.Context) {
        val repository = context
                .createRepository(KEY, PlSql.Companion.KEY)
                .setName("ZPA")
        CustomAnnotationBasedRulesDefinition.load(SonarQubeRepositoryAdapter(repository), PlSql.Companion.KEY, CheckList.checks, SonarQubeRuleMetadataLoader())
        repository.done()
    }

    companion object {
        internal val KEY: String

        init {
            // TODO: remove this code and always use the key "zpa"
            var repositoryKey = "plsql"
            if (SonarQubeUtils.isCommercialEdition) {
                repositoryKey = "zpa"
            }
            KEY = repositoryKey
        }
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlSquidSensor.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.sonar.api.batch.rule.ActiveRules
import org.sonar.api.batch.sensor.Sensor
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.SensorDescriptor
import org.sonar.api.config.Configuration
import org.sonar.api.issue.NoSonarFilter
import org.sonar.api.measures.FileLinesContextFactory
import com.felipebz.zpa.checks.CheckList
import com.felipebz.zpa.metadata.FormsMetadata
import com.felipebz.zpa.rules.SonarQubeActiveRulesAdapter
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import com.felipebz.zpa.squid.PlSqlAstScanner
import com.felipebz.zpa.squid.ProgressReport
import com.felipebz.zpa.symbols.ObjectLocator
import com.felipebz.zpa.utils.log.Logger
import com.felipebz.zpa.utils.log.Loggers
import com.felipebz.zpa.api.ZpaRulesDefinition
import java.util.concurrent.TimeUnit

class PlSqlSquidSensor @JvmOverloads constructor(activeRules: ActiveRules, settings: Configuration, private val noSonarFilter: NoSonarFilter,
                                                 private val fileLinesContextFactory: FileLinesContextFactory,
                                                 customRulesDefinition: Array<ZpaRulesDefinition>? = null,
                                                 private val objectLocator: ObjectLocator) : Sensor {

    private val logger: Logger = Loggers.getLogger(PlSqlSquidSensor::class.java)

    private val checks = PlSqlChecks.createPlSqlCheck(SonarQubeActiveRulesAdapter(activeRules), SonarQubeRuleMetadataLoader())
            .addChecks(PlSqlRuleRepository.Companion.KEY, CheckList.checks)
            .addCustomChecks(customRulesDefinition)

    private val isErrorRecoveryEnabled = settings.getBoolean(PlSqlPlugin.Companion.ERROR_RECOVERY_KEY).orElse(false)
    private val isConcurrentModeEnabled = settings.getBoolean(PlSqlPlugin.Companion.CONCURRENT_EXECUTION_KEY).orElse(true)

    private val formsMetadata = FormsMetadata.loadFromFile(settings.get(PlSqlPlugin.Companion.FORMS_METADATA_KEY)
        .orElse(null))

    override fun describe(descriptor: SensorDescriptor) {
        descriptor.name("ZPA").onlyOnLanguage(PlSql.Companion.KEY)
    }

    override fun execute(context: SensorContext) {
        val fs = context.fileSystem()
        val inputFiles = fs.inputFiles(fs.predicates().hasLanguage(PlSql.Companion.KEY)).toList()

        val progressReport = ProgressReport("Report about progress of code analyzer", TimeUnit.SECONDS.toMillis(10))
        val scanner = PlSqlAstScanner(context, checks, noSonarFilter, formsMetadata, isErrorRecoveryEnabled, fileLinesContextFactory, objectLocator)

        progressReport.start(inputFiles.map { it.toString() })

        val files = if (isConcurrentModeEnabled) {
            logger.info("Concurrent mode enabled")
            inputFiles.parallelStream()
        } else {
            inputFiles.stream()
        }

        files.forEach {
            try {
                scanner.scanFile(it)
                progressReport.nextFile()
            } catch (e: Exception) {
                logger.error("Error during analysis of file $it", e)
            }
        }

        progressReport.stop()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/SonarQubeUtils.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

object SonarQubeUtils {

    val isCommercialEdition by lazy {
        var value = false
        try {
            // is it running a commercial edition of SQ?
            Class.forName("com.sonarsource.plugins.license.api.LicensedPluginRegistration")
            value = true
        } catch (e: ClassNotFoundException) {
            // ignore
        }
        value
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/api/CustomPlSqlRulesDefinition.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.api

import com.felipebz.zpa.CustomAnnotationBasedRulesDefinition
import com.felipebz.zpa.PlSql
import com.felipebz.zpa.rules.SonarQubeRepositoryAdapter
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import org.sonar.api.ExtensionPoint
import org.sonar.api.scanner.ScannerSide
import org.sonar.api.server.rule.RulesDefinition

@ExtensionPoint
@ScannerSide
abstract class CustomPlSqlRulesDefinition : RulesDefinition, ZpaRulesDefinition {

    override fun define(context: RulesDefinition.Context) {
        val repo = context.createRepository(repositoryKey(), PlSql.KEY)
                .setName(repositoryName())

        // Load metadata from check classes' annotations
        CustomAnnotationBasedRulesDefinition(SonarQubeRepositoryAdapter(repo), PlSql.KEY, SonarQubeRuleMetadataLoader())
            .addRuleClasses(checkClasses().toList())

        repo.done()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/highlight/PlSqlHighlighterVisitor.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.highlight

import com.felipebz.flr.api.AstNode
import com.felipebz.flr.api.Token
import com.felipebz.flr.api.Trivia
import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.highlighting.NewHighlighting
import org.sonar.api.batch.sensor.highlighting.TypeOfText
import com.felipebz.zpa.api.PlSqlKeyword
import com.felipebz.zpa.api.PlSqlTokenType
import com.felipebz.zpa.api.checks.PlSqlCheck

class PlSqlHighlighterVisitor(context: SensorContext, inputFile: InputFile) : PlSqlCheck() {

    private val highlighting: NewHighlighting = context.newHighlighting().onFile(inputFile)

    override fun visitToken(token: Token) {
        if (token.type is PlSqlTokenType) {
            highlight(token, TypeOfText.STRING)
        }
        if (token.type is PlSqlKeyword) {
            highlight(token, TypeOfText.KEYWORD)
        }
    }

    override fun visitComment(trivia: Trivia, content: String) {
        val token = trivia.token
        if (token.value.startsWith("/**")) {
            highlight(token, TypeOfText.STRUCTURED_COMMENT)
        } else {
            highlight(token, TypeOfText.COMMENT)
        }
    }

    override fun leaveFile(node: AstNode) {
        highlighting.save()
    }

    private fun highlight(token: Token, code: TypeOfText) {
        highlighting.highlight(token.line, token.column, token.endLine, token.endColumn, code)
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/log/SonarQubeLogger.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.log

import org.slf4j.Logger

class SonarQubeLogger internal constructor(private val logger: Logger) : com.felipebz.zpa.utils.log.Logger {

    override fun trace(msg: String) {
        logger.trace(msg)
    }

    override fun trace(msg: String, vararg args: Any?) {
        logger.trace(msg, *args)
    }

    override fun debug(msg: String) {
        logger.debug(msg)
    }

    override fun debug(msg: String, vararg args: Any?) {
        logger.debug(msg, *args)
    }

    override fun info(msg: String) {
        logger.info(msg)
    }

    override fun info(msg: String, vararg args: Any?) {
        logger.info(msg, *args)
    }

    override fun warn(msg: String) {
        logger.warn(msg)
    }

    override fun warn(msg: String, vararg args: Any?) {
        logger.warn(msg, *args)
    }

    override fun error(msg: String) {
        logger.error(msg)
    }

    override fun error(msg: String, vararg args: Any?) {
        logger.error(msg, *args)
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/log/SonarQubeLoggers.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.log

import org.slf4j.LoggerFactory
import com.felipebz.zpa.utils.log.Logger
import com.felipebz.zpa.utils.log.Loggers

class SonarQubeLoggers : Loggers() {

    override fun getLogger(name: String): Logger {
        return SonarQubeLogger(LoggerFactory.getLogger(name))
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/metrics/CpdVisitor.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.metrics

import com.felipebz.flr.api.AstNode
import com.felipebz.flr.api.Token
import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.cpd.NewCpdTokens
import com.felipebz.zpa.api.PlSqlGrammar
import com.felipebz.zpa.api.checks.PlSqlCheck

class CpdVisitor(context: SensorContext, inputFile: InputFile) : PlSqlCheck() {

    private val newCpdTokens: NewCpdTokens = context.newCpdTokens().onFile(inputFile)

    override fun init() {
        subscribeTo(PlSqlGrammar.ANONYMOUS_BLOCK,
                PlSqlGrammar.CREATE_PROCEDURE,
                PlSqlGrammar.CREATE_FUNCTION,
                PlSqlGrammar.CREATE_PACKAGE_BODY,
                PlSqlGrammar.CREATE_TYPE_BODY)
    }

    override fun visitNode(node: AstNode) {
        for (token in node.tokens) {
            saveCpdTokens(token)
        }
    }

    private fun saveCpdTokens(token: Token) {
        newCpdTokens.addToken(token.line, token.column, token.endLine, token.endColumn, token.value)
    }

    override fun leaveFile(node: AstNode) {
        newCpdTokens.save()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeActiveRuleAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.batch.rule.ActiveRule

class SonarQubeActiveRuleAdapter(private val activeRule: ActiveRule) : ZpaActiveRule {

    override val ruleKey: ZpaRuleKey
        get() = SonarQubeRuleKeyAdapter(activeRule.ruleKey())

    override val severity: String
        get() = activeRule.severity()

    override val language: String
        get() = activeRule.language()

    override fun param(key: String): String? = activeRule.param(key)

    override val params: Map<String, String>
        get() = activeRule.params()

    override val internalKey: String?
        get() = activeRule.internalKey()

    override val templateRuleKey: String?
        get() = activeRule.templateRuleKey()

    override val tags: Array<String>
        get() = throw NotImplementedError()

    override val remediationConstant: String
        get() = throw NotImplementedError()

    override val name: String
        get() = throw NotImplementedError()

    override fun toString(): String = activeRule.toString()

    override fun equals(other: Any?): Boolean = activeRule == other

    override fun hashCode(): Int = activeRule.hashCode()

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeActiveRulesAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.batch.rule.ActiveRules

class SonarQubeActiveRulesAdapter(private val activeRules: ActiveRules) : ZpaActiveRules {

    override fun findByRepository(repository: String): Collection<ZpaActiveRule> =
        activeRules.findByRepository(repository).map { SonarQubeActiveRuleAdapter(it) }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRepositoryAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.server.rule.RulesDefinition

class SonarQubeRepositoryAdapter(private val repository: RulesDefinition.NewRepository) : ZpaRepository {
    override val key: String = repository.key()

    override fun createRule(ruleKey: String): ZpaRule =
        SonarQubeRuleAdapter(repository.createRule(ruleKey))

    override fun rule(ruleKey: String): ZpaRule? {
        val rule = repository.rule(ruleKey)
        return if (rule != null) SonarQubeRuleAdapter(rule) else null
    }
}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.rule.RuleScope
import org.sonar.api.server.rule.RulesDefinition
import com.felipebz.zpa.api.annotations.RuleInfo
import org.sonar.api.rule.RuleStatus as SonarQubeRuleStatus

class SonarQubeRuleAdapter(private val newRule: RulesDefinition.NewRule) : ZpaRule {
    override val key: String
        get() = newRule.key()

    override val params: List<ZpaRuleParam>
        get() = newRule.params().map { SonarQubeRuleParamAdapter(it) }

    override var name: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setName(value)
        }

    override var remediationConstant: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setDebtRemediationFunction(newRule.debtRemediationFunctions().constantPerIssue(value))
        }

    override var scope: RuleInfo.Scope
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setScope(RuleScope.valueOf(value.name))
        }

    override var template: Boolean
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setTemplate(value)
        }

    override var tags: Array<String>
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setTags(*value)
        }

    override var status: RuleStatus
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setStatus(SonarQubeRuleStatus.valueOf(value.name))
        }

    override var severity: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setSeverity(value)
        }

    override var htmlDescription: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setHtmlDescription(value)
        }

    override var isActivatedByDefault: Boolean
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            newRule.setActivatedByDefault(value)
        }


    override fun createParam(fieldKey: String): ZpaRuleParam =
        SonarQubeRuleParamAdapter(newRule.createParam(fieldKey))
}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleKeyAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.rule.RuleKey

class SonarQubeRuleKeyAdapter(val ruleKey: RuleKey) : ZpaRuleKey {

    override val rule: String
        get() = ruleKey.rule()

    override val repository: String
        get() = ruleKey.repository()

    override fun toString(): String = ruleKey.toString()

    override fun equals(other: Any?): Boolean = ruleKey == (other as SonarQubeRuleKeyAdapter).ruleKey

    override fun hashCode(): Int = ruleKey.hashCode()

    companion object {
        fun of(repository: String, rule: String): ZpaRuleKey =
            SonarQubeRuleKeyAdapter(RuleKey.of(repository, rule))
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleMetadataLoader.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import com.felipebz.zpa.utils.getAnnotation
import com.felipebz.zpa.api.annotations.Priority
import java.lang.reflect.Field
import org.sonar.check.Priority as SonarPriority
import org.sonar.check.Rule as SonarRule
import org.sonar.check.RuleProperty as SonarRuleProperty

class SonarQubeRuleMetadataLoader : RuleMetadataLoader() {

    override fun getRuleAnnotation(annotatedClassOrObject: Any): RuleData? {
        val ruleAnnotation = super.getRuleAnnotation(annotatedClassOrObject)
        if (ruleAnnotation != null) {
            return ruleAnnotation
        }

        val sonarRule = getAnnotation(annotatedClassOrObject, SonarRule::class.java)

        if (sonarRule != null) {
            val priority = when(sonarRule.priority) {
                SonarPriority.BLOCKER -> Priority.BLOCKER
                SonarPriority.CRITICAL -> Priority.CRITICAL
                SonarPriority.MAJOR -> Priority.MAJOR
                SonarPriority.MINOR -> Priority.MINOR
                SonarPriority.INFO -> Priority.INFO
            }
            return RuleData(
                sonarRule.key,
                sonarRule.name,
                sonarRule.description,
                priority,
                sonarRule.tags,
                sonarRule.status)
        }

        return null
    }

    override fun getRulePropertyAnnotation(field: Field): RulePropertyData? {
        val rulePropertyAnnotation = super.getRulePropertyAnnotation(field)
        if (rulePropertyAnnotation != null) {
            return rulePropertyAnnotation
        }

        val sonarRuleProperty = field.getAnnotation(SonarRuleProperty::class.java)
        if (sonarRuleProperty != null) {
            return RulePropertyData(
                sonarRuleProperty.key,
                sonarRuleProperty.description,
                sonarRuleProperty.defaultValue,
                sonarRuleProperty.type)
        }

        return null
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleParamAdapter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.rules

import org.sonar.api.server.rule.RulesDefinition

class SonarQubeRuleParamAdapter(private val param: RulesDefinition.NewParam) : ZpaRuleParam {
    override val key: String
        get() = param.key()

    override var description: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            param.setDescription(value)
        }

    override var defaultValue: String
        get() = throw IllegalAccessException("Getter is not available")
        set(value) {
            param.setDefaultValue(value)
        }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/squid/PlSqlAstScanner.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.squid

import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.fs.TextRange
import org.sonar.api.batch.measure.Metric
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.issue.NewIssue
import org.sonar.api.batch.sensor.issue.NewIssueLocation
import org.sonar.api.issue.NoSonarFilter
import org.sonar.api.measures.CoreMetrics
import org.sonar.api.measures.FileLinesContextFactory
import com.felipebz.zpa.PlSqlChecks
import com.felipebz.zpa.checks.IssueLocation
import com.felipebz.zpa.highlight.PlSqlHighlighterVisitor
import com.felipebz.zpa.metadata.FormsMetadata
import com.felipebz.zpa.metrics.CpdVisitor
import com.felipebz.zpa.rules.SonarQubeRuleKeyAdapter
import com.felipebz.zpa.symbols.ObjectLocator
import com.felipebz.zpa.symbols.SonarQubeSymbolTable
import com.felipebz.zpa.api.PlSqlFile
import com.felipebz.zpa.api.checks.PlSqlVisitor
import java.io.Serializable
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock

class PlSqlAstScanner(private val context: SensorContext,
                      checks: Collection<PlSqlVisitor>,
                      private val noSonarFilter: NoSonarFilter,
                      formsMetadata: FormsMetadata?,
                      isErrorRecoveryEnabled: Boolean,
                      private val fileLinesContextFactory: FileLinesContextFactory?) {

    private val astScanner: AstScanner =
        AstScanner(checks, formsMetadata, isErrorRecoveryEnabled, context.fileSystem().encoding())

    private lateinit var plsqlChecks: PlSqlChecks

    constructor(context: SensorContext,
                checks: PlSqlChecks,
                noSonarFilter: NoSonarFilter,
                formsMetadata: FormsMetadata?,
                isErrorRecoveryEnabled: Boolean,
                fileLinesContextFactory: FileLinesContextFactory,
                objectLocator: ObjectLocator) : this(context, checks.all(), noSonarFilter, formsMetadata, isErrorRecoveryEnabled, fileLinesContextFactory) {
        this.plsqlChecks = checks
        objectLocator.setScope(astScanner.globalScope)
    }

    fun scanFile(inputFile: InputFile) {
        val plSqlFile = SonarQubePlSqlFile(inputFile)
        if (plSqlFile.type() == PlSqlFile.Type.MAIN) {
            scanMainFile(plSqlFile)
        } else {
            scanTestFile(plSqlFile)
        }
    }

    private fun scanMainFile(plSqlFile: SonarQubePlSqlFile) {
        val inputFile = plSqlFile.inputFile
        val result = try {
            astScanner.scanFile(
                plSqlFile,
                listOf(PlSqlHighlighterVisitor(context, inputFile), CpdVisitor(context, inputFile))
            )
        } catch (e: Exception) {
            e.printStackTrace()
            throw e
        }

        noSonarFilter.noSonarInFile(inputFile, result.linesWithNoSonar)

        lock.withLock { // needed because SonarQube 7.6 save this data in a non thread-safe way
            saveIssues(inputFile, result.issues)

            val symbolSaver = SonarQubeSymbolTable(context, inputFile)
            symbolSaver.save(result.symbols)

            saveMetricOnFile(inputFile, CoreMetrics.STATEMENTS, result.numberOfStatements)
            saveMetricOnFile(inputFile, CoreMetrics.NCLOC, result.linesOfCode)
            saveMetricOnFile(inputFile, CoreMetrics.COMMENT_LINES, result.linesOfComments)
            saveMetricOnFile(inputFile, CoreMetrics.COMPLEXITY, result.complexity)
            saveMetricOnFile(inputFile, CoreMetrics.FUNCTIONS, result.numberOfFunctions)


            if (fileLinesContextFactory != null) {
                val fileLinesContext = fileLinesContextFactory.createFor(inputFile)
                for (line in result.executableLines) {
                    fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, 1)
                }
                fileLinesContext.save()
            }
        }
    }

    private fun scanTestFile(plSqlFile: SonarQubePlSqlFile) {
        val inputFile = plSqlFile.inputFile
        val result = astScanner.scanFile(plSqlFile, listOf(PlSqlHighlighterVisitor(context, inputFile)))

        noSonarFilter.noSonarInFile(inputFile, result.linesWithNoSonar)

        lock.withLock { // needed because SonarQube 7.6 save this data in a non thread-safe way
            saveIssues(inputFile, result.issues)

            val symbolTable = SonarQubeSymbolTable(context, inputFile)
            symbolTable.save(result.symbols)
        }
    }

    private fun saveIssues(inputFile: InputFile, issues: List<ZpaIssue>) {
        for (issue in issues) {
            val rule = plsqlChecks.ruleKey(issue.check) as SonarQubeRuleKeyAdapter

            val newIssue = context.newIssue().forRule(rule.ruleKey)

            val cost = issue.cost
            if (cost != null) {
                newIssue.gap(cost.toDouble())
            }

            newIssue.at(newLocation(inputFile, newIssue, issue.primaryLocation))

            for (secondaryLocation in issue.secondaryLocations) {
                newIssue.addLocation(newLocation(inputFile, newIssue, secondaryLocation))
            }

            newIssue.save()
        }
    }

    private fun <T : Serializable> saveMetricOnFile(inputFile: InputFile, metric: Metric<T>, value: T) {
        context.newMeasure<T>()
                .on(inputFile)
                .forMetric(metric)
                .withValue(value)
                .save()
    }

    private fun newLocation(inputFile: InputFile, issue: NewIssue, location: IssueLocation): NewIssueLocation {
        val newLocation = issue.newLocation().on(inputFile)
        if (location.startLine() != IssueLocation.UNDEFINED_LINE) {
            val range: TextRange = if (location.startLineOffset() == IssueLocation.UNDEFINED_OFFSET) {
                inputFile.selectLine(location.startLine())
            } else {
                inputFile.newRange(location.startLine(), location.startLineOffset(), location.endLine(),
                        location.endLineOffset())
            }
            newLocation.at(range)
        }

        newLocation.message(location.message())
        return newLocation
    }

    companion object {
        private val lock = ReentrantLock()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/squid/SonarQubePlSqlFile.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.squid

import org.sonar.api.batch.fs.InputFile
import com.felipebz.zpa.api.PlSqlFile

import java.io.IOException
import java.nio.file.Path
import kotlin.io.path.toPath

class SonarQubePlSqlFile(val inputFile: InputFile) : PlSqlFile {

    override fun contents(): String =
        try {
            inputFile.contents()
        } catch (e: IOException) {
            throw IllegalStateException("Could not read contents of input file $inputFile", e)
        }

    override fun fileName(): String = inputFile.filename()

    override fun path(): Path = inputFile.uri().toPath()

    override fun type(): PlSqlFile.Type =
        when (inputFile.type()) {
            InputFile.Type.MAIN -> PlSqlFile.Type.MAIN
            InputFile.Type.TEST -> PlSqlFile.Type.TEST
            else -> PlSqlFile.Type.MAIN
        }

    override fun toString(): String = inputFile.toString()

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/MappedObject.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.symbols

import com.felipebz.flr.api.AstNodeType
import org.sonar.api.batch.fs.InputFile
import com.felipebz.zpa.api.PlSqlFile
import java.nio.file.Path

data class MappedObject(
    val identifier: String,
    val objectType: AstNodeType,
    val fileType: PlSqlFile.Type,
    val path: Path,
    val inputFile: InputFile,
    val firstLine: Int = -1,
    val lastLine: Int = -1
) {
    val isMain: Boolean
        get() = fileType === PlSqlFile.Type.MAIN
    val isTest: Boolean
        get() = fileType === PlSqlFile.Type.TEST
}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/ObjectLocator.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.symbols

import com.felipebz.flr.api.AstNodeType
import org.sonar.api.scanner.ScannerSide
import com.felipebz.zpa.squid.SonarQubePlSqlFile
import com.felipebz.zpa.api.PlSqlGrammar
import com.felipebz.zpa.api.symbols.Scope

@ScannerSide
class ObjectLocator {
    private var scope: Scope = ScopeImpl()

    private val mappedObjects
        get() = scope.innerScopes
            .union(scope.innerScopes
                .flatMap { it.innerScopes }
                .filter { it.type == PlSqlGrammar.CREATE_PACKAGE_BODY || it.type == PlSqlGrammar.CREATE_TYPE_BODY })
            .map {
                val plSqlFile = it.plSqlFile as SonarQubePlSqlFile? ?: return@map null
                val identifier = it.identifier ?: return@map null
                val type = it.type ?: return@map null
                val firstLine = it.firstToken?.line ?: return@map null
                val lastLine = it.lastToken?.line ?: return@map null
                MappedObject(
                    identifier,
                    type,
                    plSqlFile.type(),
                    plSqlFile.path(),
                    plSqlFile.inputFile,
                    firstLine,
                    lastLine
                )
            }.filterNotNull()

    fun setScope(scope: Scope) {
        this.scope = scope
    }

    fun findMainObject(identifier: String, vararg types: AstNodeType): MappedObject? {
        return mappedObjects.find { it.isMain && it.identifier.equals(identifier, ignoreCase = true) && it.objectType in types }
    }

    fun findTestObject(identifier: String, vararg types: AstNodeType): MappedObject? {
        return mappedObjects.find { it.isTest && it.identifier.equals(identifier, ignoreCase = true) && it.objectType in types }
    }
}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/SonarQubeSymbolTable.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.symbols

import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.symbol.NewSymbolTable
import com.felipebz.zpa.api.symbols.Symbol

class SonarQubeSymbolTable(context: SensorContext, inputFile: InputFile) {

    private val symbolizable: NewSymbolTable = context.newSymbolTable().onFile(inputFile)

    fun save(symbols: List<Symbol>) {
        for (symbol in symbols) {
            val symbolNode = symbol.declaration

            val symbolToken = symbolNode.token
            val newSymbol = symbolizable.newSymbol(symbolToken.line, symbolToken.column,
                symbolToken.endLine, symbolToken.endColumn)

            for (usage in symbol.usages) {
                val usageToken = usage.token
                newSymbol.newReference(usageToken.line, usageToken.column, usageToken.endLine, usageToken.endColumn)
            }
        }
        symbolizable.save()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/AbstractReportImporter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.notifications.AnalysisWarnings
import org.sonar.api.utils.WildcardPattern
import com.felipebz.zpa.utils.log.Logger
import com.felipebz.zpa.utils.log.Loggers
import java.io.File

abstract class AbstractReportImporter(private val analysisWarnings: AnalysisWarnings) {

    private val logger: Logger = Loggers.getLogger(AbstractReportImporter::class.java)

    abstract val reportType: String
    abstract val reportKey: String

    abstract fun processReport(context: SensorContext, report: File)

    fun execute(context: SensorContext) {
        val reports = files(context)

        for (report in reports) {
            logger.info("Processing $reportType report {}", report)
            processReport(context, report)
        }
    }

    protected fun files(context: SensorContext) =
        context.config().getStringArray(reportKey).flatMap {
            getReports(context, it)
        }

    private fun getReports(context: SensorContext, reportPath: String): List<File> {
        val pattern = WildcardPattern.create(reportPath)
        val baseDir = context.fileSystem().baseDir()
        val matchingFiles = baseDir
                .walkTopDown()
                .filter { it.isFile && pattern.match(it.relativeTo(baseDir).invariantSeparatorsPath) }
                .toMutableList()

        if (matchingFiles.isEmpty()) {
            if (context.config().hasKey(reportKey)) {
                val file = File(reportPath)
                if (!file.exists()) {
                    val formattedMessage =
                        "No utPLSQL $reportType report was found for ${reportKey} using pattern $reportPath"
                    logger.warn(formattedMessage)
                    analysisWarnings.addUnique(formattedMessage)
                } else {
                    matchingFiles.add(file)
                }
            } else {
                logger.info("No utPLSQL $reportType report was found for {} using default pattern {}",
                    reportKey, reportPath)
            }
        }
        return matchingFiles
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/CoverageReport.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement

@JacksonXmlRootElement(localName = "coverage")
data class Coverage @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "version")
    var version: Int = 0,

    @field:JacksonXmlElementWrapper(useWrapping = false)
    @field:JacksonXmlProperty(localName = "file")
    var files: List<CoveredFile>? = null
)

@JacksonXmlRootElement(localName = "file")
data class CoveredFile @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "path")
    var path: String = "",

    @field:JacksonXmlElementWrapper(useWrapping = false)
    @field:JacksonXmlProperty(localName = "lineToCover")
    var linesToCover: List<LineToCover>? = null
)

@JacksonXmlRootElement(localName = "lineToCover")
data class LineToCover @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "lineNumber")
    var lineNumber: Int = 0,

    @field:JacksonXmlProperty(isAttribute = true, localName = "covered")
    var covered: Boolean = false,

    @field:JacksonXmlProperty(isAttribute = true, localName = "branchesToCover")
    var branchesToCover: Int? = null,

    @field:JacksonXmlProperty(isAttribute = true, localName = "coveredBranches")
    var coveredBranches: Int? = null
)


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/CoverageResultImporter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import com.fasterxml.jackson.dataformat.xml.XmlMapper
import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.notifications.AnalysisWarnings
import com.felipebz.zpa.symbols.ObjectLocator
import com.felipebz.zpa.utils.log.Loggers
import com.felipebz.zpa.api.PlSqlGrammar
import java.io.File

class CoverageResultImporter(private val objectLocator: ObjectLocator,
                             analysisWarnings: AnalysisWarnings) : AbstractReportImporter(analysisWarnings) {

    private val logger = Loggers.getLogger(CoverageResultImporter::class.java)
    override val reportType = "coverage"
    override val reportKey = UtPlSqlSensor.COVERAGE_REPORT_PATH_KEY

    override fun processReport(context: SensorContext, report: File) {
        val serializer = XmlMapper()
        val coverage = serializer.readValue(report, Coverage::class.java)

        coverage.files?.forEach { file ->
            val filePath = file.path
            var inputFile = context.fileSystem()
                .inputFile(context.fileSystem().predicates().hasPath(filePath))

            var lineOffset = 0

            if (inputFile == null) {
                val objectType = when (filePath.substringBeforeLast(' ')) {
                    "package body" -> PlSqlGrammar.CREATE_PACKAGE_BODY
                    "procedure" -> PlSqlGrammar.CREATE_PROCEDURE
                    "function" -> PlSqlGrammar.CREATE_FUNCTION
                    "trigger" -> PlSqlGrammar.CREATE_TRIGGER
                    "type body" -> PlSqlGrammar.CREATE_TYPE_BODY
                    else -> error("Unknown object type for file \"$filePath\"")
                }
                val objectName = filePath.substringAfterLast('.')

                val mappedObject = objectLocator.findMainObject(objectName, objectType)
                if (mappedObject != null) {
                    inputFile = mappedObject.inputFile
                    lineOffset = mappedObject.firstLine - 1
                }
            }

            if (inputFile != null) {
                logger.debug("The path ${file.path} was mapped to ${inputFile}")
                saveCoverage(context, inputFile, file, lineOffset, filePath)
            } else {
                logger.warn("The path ${file.path} was not found in the project")
            }
        }
    }

    private fun saveCoverage(
        context: SensorContext,
        inputFile: InputFile,
        file: CoveredFile,
        lineOffset: Int,
        filePath: String
    ) {
        val linesToCover = file.linesToCover
        if (linesToCover != null) {
            if (linesToCover.all { !it.covered }) {
                // No need to save coverage for files with no covered lines
                return
            }

            val newCoverage = context.newCoverage().onFile(inputFile)

            file.linesToCover?.forEach { line ->
                val lineNumber = line.lineNumber + lineOffset
                newCoverage.lineHits(lineNumber, if (line.covered) 1 else 0)

                val branchesToCover = line.branchesToCover
                val coveredBranches = line.coveredBranches ?: 0
                if (branchesToCover != null) {
                    check(coveredBranches <= branchesToCover) {
                        "\"coveredBranches\" should not be greater than \"branchesToCover\" on line " +
                            "${line.lineNumber} for file \"$filePath\""
                    }

                    newCoverage.conditions(lineNumber, branchesToCover, coveredBranches)
                }
            }

            newCoverage.save()
        }
    }


}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/TestExecutionReport.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement

@JacksonXmlRootElement(localName = "testExecutions")
data class TestExecutions @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "version")
    var version: Int = 0,

    @field:JacksonXmlElementWrapper(useWrapping = false)
    @field:JacksonXmlProperty(localName = "file")
    var files: List<TestFile>? = null
)

@JacksonXmlRootElement(localName = "file")
data class TestFile @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "path")
    var path: String = "",

    @field:JacksonXmlElementWrapper(useWrapping = false)
    @field:JacksonXmlProperty(localName = "testCase")
    var testCases: List<TestCase>? = null
)

@JacksonXmlRootElement(localName = "testCase")
data class TestCase @JvmOverloads constructor(
    @field:JacksonXmlProperty(isAttribute = true, localName = "name")
    var name: String = "",

    @field:JacksonXmlProperty(isAttribute = true, localName = "duration")
    var duration: Long = 0,

    @field:JacksonXmlProperty(localName = "skipped")
    var skipped: Skipped? = null,

    @field:JacksonXmlProperty(localName = "failure")
    var failure: Failure? = null,

    @field:JacksonXmlProperty(localName = "error")
    var error: Error? = null
) {
    val status: TestCaseStatus
        get() {
            return when {
                skipped != null -> TestCaseStatus.SKIPPED
                failure != null -> TestCaseStatus.FAILED
                error != null -> TestCaseStatus.ERROR
                else -> TestCaseStatus.PASSED
            }
        }
}

@JacksonXmlRootElement(localName = "skipped")
@JsonIgnoreProperties(ignoreUnknown = true)
class Skipped

@JacksonXmlRootElement(localName = "failure")
@JsonIgnoreProperties(ignoreUnknown = true)
class Failure

@JacksonXmlRootElement(localName = "error")
@JsonIgnoreProperties(ignoreUnknown = true)
class Error

enum class TestCaseStatus {
    PASSED,
    FAILED,
    SKIPPED,
    ERROR
}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/TestResultImporter.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import com.fasterxml.jackson.dataformat.xml.XmlMapper
import org.sonar.api.batch.fs.InputFile
import org.sonar.api.batch.measure.Metric
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.measures.CoreMetrics
import org.sonar.api.notifications.AnalysisWarnings
import com.felipebz.zpa.symbols.ObjectLocator
import com.felipebz.zpa.utils.log.Loggers
import com.felipebz.zpa.api.PlSqlGrammar
import java.io.File
import java.io.Serializable

class TestResultImporter(private val objectLocator: ObjectLocator,
                         analysisWarnings: AnalysisWarnings) : AbstractReportImporter(analysisWarnings) {

    private val logger = Loggers.getLogger(TestResultImporter::class.java)
    override val reportType = "test"
    override val reportKey = UtPlSqlSensor.TEST_REPORT_PATH_KEY

    override fun processReport(context: SensorContext, report: File) {
        val serializer = XmlMapper()
        val testExecutions = serializer.readValue(report, TestExecutions::class.java)

        testExecutions.files?.forEach { file ->
            val packageName = file.path.substringAfterLast('.')
            val mappedTest = objectLocator.findTestObject(packageName, PlSqlGrammar.CREATE_PACKAGE)
            val inputFile = mappedTest?.inputFile ?: context.fileSystem()
                .inputFile(context.fileSystem().predicates().hasPath(file.path))

            if (inputFile != null) {
                logger.debug("The path ${file.path} was mapped to ${inputFile}")
                file.testCases?.let { testCase ->
                    val testCount = testCase.count { it.status != TestCaseStatus.SKIPPED }
                    val failureCount = testCase.count { it.status == TestCaseStatus.FAILED }
                    val errorCount = testCase.count { it.status == TestCaseStatus.ERROR }
                    val skippedCount = testCase.count { it.status == TestCaseStatus.SKIPPED }
                    val duration = testCase.sumOf { it.duration }

                    saveMetricOnFile(context, inputFile, CoreMetrics.TESTS, testCount)
                    saveMetricOnFile(context, inputFile, CoreMetrics.TEST_FAILURES, failureCount)
                    saveMetricOnFile(context, inputFile, CoreMetrics.TEST_ERRORS, errorCount)
                    saveMetricOnFile(context, inputFile, CoreMetrics.SKIPPED_TESTS, skippedCount)
                    saveMetricOnFile(context, inputFile, CoreMetrics.TEST_EXECUTION_TIME, duration)
                }
            } else {
                logger.warn("The path ${file.path} was not found in the project")
            }
        }
    }

    private fun <T : Serializable> saveMetricOnFile(
        context: SensorContext,
        inputFile: InputFile,
        metric: Metric<T>,
        value: T
    ) {
        context.newMeasure<T>()
            .on(inputFile)
            .forMetric(metric)
            .withValue(value)
            .save()
    }

}


================================================
FILE: sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/UtPlSqlSensor.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa.utplsql

import org.sonar.api.batch.sensor.Sensor
import org.sonar.api.batch.sensor.SensorContext
import org.sonar.api.batch.sensor.SensorDescriptor
import org.sonar.api.notifications.AnalysisWarnings
import com.felipebz.zpa.PlSql
import com.felipebz.zpa.symbols.ObjectLocator

class UtPlSqlSensor(objectLocator: ObjectLocator, analysisWarnings: AnalysisWarnings) : Sensor {

    private val testResultImporter = TestResultImporter(objectLocator, analysisWarnings)
    private val coverageResultImporter = CoverageResultImporter(objectLocator, analysisWarnings)

    override fun describe(descriptor: SensorDescriptor) {
        descriptor.name("ZPA - utPLSQL Report Importer").onlyOnLanguage(PlSql.KEY)
    }

    override fun execute(context: SensorContext) {
        testResultImporter.execute(context)
        coverageResultImporter.execute(context)
    }

    companion object {
        const val TEST_REPORT_PATH_KEY = "sonar.zpa.tests.reportPaths"
        const val DEFAULT_TEST_REPORT_PATH = "utplsql-test.xml"
        const val COVERAGE_REPORT_PATH_KEY = "sonar.zpa.coverage.reportPaths"
        const val DEFAULT_COVERAGE_REPORT_PATH = "utplsql-coverage.xml"
    }

}


================================================
FILE: sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/CustomAnnotationBasedRulesDefinitionTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.assertj.core.api.Assertions.*
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.sonar.api.server.debt.DebtRemediationFunction.Type
import org.sonar.api.server.rule.RulesDefinition
import org.sonar.api.server.rule.RulesDefinition.*
import org.sonar.check.Rule
import org.sonar.check.RuleProperty
import com.felipebz.zpa.rules.SonarQubeRepositoryAdapter
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import com.felipebz.zpa.api.annotations.ConstantRemediation
import java.util.*

class CustomAnnotationBasedRulesDefinitionTest {

    private val context = Context()

    @BeforeEach
    fun setup() {
        Locale.setDefault(Locale.ROOT)
    }

    @Test
    fun noClassToAdd() {
        assertThat(buildRepository().rules()).isEmpty()
    }

    @Test
    fun classWithoutRuleAnnotation() {
        class NotRuleClass
        assertThatIllegalArgumentException().isThrownBy {
            buildSingleRuleRepository(NotRuleClass::class.java)
        }
    }

    @Test
    fun ruleAnnotationData() {
        @Rule(key = "key1", name = "name1", description = "description1", tags = ["mytag"])
        class RuleClass {
            @RuleProperty(key = "param1Key", description = "param1 description")
            var param1 = "x"
        }

        val rule = buildSingleRuleRepository(RuleClass::class.java)
        assertThat(rule.key()).isEqualTo("key1")
        assertThat(rule.name()).isEqualTo("name1")
        assertThat(rule.htmlDescription()).isEqualTo("description1")
        assertThat(rule.tags()).containsOnly("mytag")
        assertThat(rule.template()).isFalse
        assertThat(rule.params()).hasSize(1)
        assertParam(rule.params()[0], "param1Key", "param1 description")
    }

    @Rule(name = "name1", description = "description1")
    internal class RuleClassWithoutAnnotationDefinedKey

    @Test
    fun ruleWithoutExplicitKeyCanBeAcceptable() {
        val repository = buildRepository(LANGUAGE_KEY_WITH_RESOURCE_BUNDLE, RuleClassWithoutAnnotationDefinedKey::class.java)
        val rule = repository.rules()[0]
        assertThat(rule.key()).isEqualTo(RuleClassWithoutAnnotationDefinedKey::class.java.simpleName)
        assertThat(rule.name()).isEqualTo("name1")
    }

    @Test
    fun externalNamesAndDescriptions() {
        @Rule(key = "ruleWithExternalInfo")
        class RuleClass {
            @RuleProperty(key = "param1Key")
            var param1 = "x"
            @RuleProperty
            var param2 = "x"
        }

        val rule = buildSingleRuleRepository(RuleClass::class.java)
        assertThat(rule.key()).isEqualTo("ruleWithExternalInfo")
        assertThat(rule.name()).isEqualTo("external name for ruleWithExternalInfo")
        assertThat(rule.htmlDescription()).isEqualTo("description for ruleWithExternalInfo")
        assertThat(rule.params()).hasSize(2)
        assertParam(rule.params()[0], "param1Key", "description for param1")
        assertParam(rule.params()[1], "param2", null)
    }

    @Test
    fun classWithSqaleConstantRemediation() {
        @Rule(key = "key1", name = "name1", description = "description1")
        @ConstantRemediation("10min")
        class RuleClass

        val rule = buildSingleRuleRepository(RuleClass::class.java)
        assertRemediation(rule, Type.CONSTANT_ISSUE, null, "10min", null)
    }

    @Test
    fun invalidSqaleAnnotation() {
        @Rule(key = "key1", name = "name1", description = "description1")
        @ConstantRemediation("xxx")
        class MyInvalidRuleClass

        assertThatIllegalArgumentException().isThrownBy {
            buildSingleRuleRepository(MyInvalidRuleClass::class.java)
        }
    }

    @Test
    fun loadMethodWithClassWithSqaleAnnotations() {
        @Rule(key = "key1", name = "name1", description = "description1")
        @ConstantRemediation("10min")
        class RuleClass

        val repository = load(RuleClass::class.java)
        assertThat(repository.rules()).hasSize(1)
    }

    private fun assertRemediation(rule: RulesDefinition.Rule, type: Type, gapMultiplier: String?, baseEffort: String, gapDescription: String?) {
        val remediationFunction = rule.debtRemediationFunction()
        assertThat(remediationFunction?.type()).isEqualTo(type)
        assertThat(remediationFunction?.gapMultiplier()).isEqualTo(gapMultiplier)
        assertThat(remediationFunction?.baseEffort()).isEqualTo(baseEffort)
        assertThat(rule.gapDescription()).isEqualTo(gapDescription)
    }

    private fun assertParam(param: Param, expectedKey: String, expectedDescription: String?) {
        assertThat(param.key()).isEqualTo(expectedKey)
        assertThat(param.name()).isEqualTo(expectedKey)
        assertThat(param.description()).isEqualTo(expectedDescription)
    }

    private fun buildSingleRuleRepository(ruleClass: Class<*>): RulesDefinition.Rule {
        val repository = buildRepository(ruleClass)
        assertThat(repository.rules()).hasSize(1)
        return repository.rules()[0]
    }

    private fun buildRepository(vararg classes: Class<*>): Repository {
        return buildRepository(LANGUAGE_KEY_WITH_RESOURCE_BUNDLE, *classes)
    }

    private fun buildRepository(languageKey: String, vararg classes: Class<*>): Repository {
        val newRepository = createRepository(languageKey)
        CustomAnnotationBasedRulesDefinition(
            SonarQubeRepositoryAdapter(newRepository),
            languageKey,
            SonarQubeRuleMetadataLoader()
        )
                .addRuleClasses(classes.toList())
        newRepository.done()
        return context.repository(REPO_KEY) ?: fail("Should build a repository")
    }

    private fun load(vararg classes: Class<*>): Repository {
        val languageKey = LANGUAGE_KEY_WITH_RESOURCE_BUNDLE
        val newRepository = createRepository(languageKey)
        CustomAnnotationBasedRulesDefinition.load(SonarQubeRepositoryAdapter(newRepository), languageKey, classes.toList(), SonarQubeRuleMetadataLoader())
        newRepository.done()
        return context.repository(REPO_KEY) ?: fail("Should build a repository")
    }

    private fun createRepository(languageKey: String): NewRepository {
        return context.createRepository(REPO_KEY, languageKey)
    }

    companion object {
        private const val REPO_KEY = "plsql"
        private const val LANGUAGE_KEY_WITH_RESOURCE_BUNDLE = "languageKey"
    }

}


================================================
FILE: sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlChecksTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.Assertions.fail
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder
import org.sonar.api.batch.rule.internal.NewActiveRule
import org.sonar.api.rule.RuleKey
import org.sonar.api.server.rule.RulesDefinition
import org.sonar.check.Rule
import com.felipebz.zpa.rules.SonarQubeActiveRulesAdapter
import com.felipebz.zpa.rules.SonarQubeRuleKeyAdapter
import com.felipebz.zpa.rules.SonarQubeRuleMetadataLoader
import com.felipebz.zpa.api.CustomPlSqlRulesDefinition
import com.felipebz.zpa.api.checks.PlSqlCheck
import com.felipebz.zpa.api.checks.PlSqlVisitor

class PlSqlChecksTest {

    private lateinit var activeRules: SonarQubeActiveRulesAdapter
    private lateinit var customRulesDefinition: MyCustomPlSqlRulesDefinition
    private val ruleMetadataLoader = SonarQubeRuleMetadataLoader()

    @BeforeEach
    fun setUp() {
        activeRules = SonarQubeActiveRulesAdapter(ActiveRulesBuilder()
                .addRule(NewActiveRule.Builder().setRuleKey(RuleKey.of(DEFAULT_REPOSITORY_KEY, DEFAULT_RULE_KEY)).build())
                .addRule(NewActiveRule.Builder().setRuleKey(RuleKey.of(CUSTOM_REPOSITORY_KEY, CUSTOM_RULE_KEY)).build())
                .build())

        customRulesDefinition = MyCustomPlSqlRulesDefinition()
        val context = RulesDefinition.Context()
        customRulesDefinition.define(context)
    }

    @Test
    fun shouldReturnDefaultChecks() {
        val checks = PlSqlChecks.createPlSqlCheck(activeRules, ruleMetadataLoader)
        checks.addChecks(DEFAULT_REPOSITORY_KEY, listOf(MyRule::class.java))

        val defaultVisitor = visitor(checks, DEFAULT_REPOSITORY_KEY, DEFAULT_RULE_KEY)

        assertThat(checks.all()).hasSize(1)
        assertThat(checks.ruleKey(defaultVisitor)).isNotNull
        assertThat(checks.ruleKey(defaultVisitor)?.rule).isEqualTo(DEFAULT_RULE_KEY)
        assertThat(checks.ruleKey(defaultVisitor)?.repository).isEqualTo(DEFAULT_REPOSITORY_KEY)
    }

    @Test
    fun shouldReturnCustomChecks() {
        val checks = PlSqlChecks.createPlSqlCheck(activeRules, ruleMetadataLoader)
        checks.addCustomChecks(arrayOf(customRulesDefinition))

        val customVisitor = visitor(checks, CUSTOM_REPOSITORY_KEY, CUSTOM_RULE_KEY)

        assertThat(checks.all()).hasSize(1)
        assertThat(checks.ruleKey(customVisitor)).isNotNull
        assertThat(checks.ruleKey(customVisitor)?.rule).isEqualTo(CUSTOM_RULE_KEY)
        assertThat(checks.ruleKey(customVisitor)?.repository).isEqualTo(CUSTOM_REPOSITORY_KEY)
    }

    @Test
    fun shouldWorkWithoutCustomChecks() {
        val checks = PlSqlChecks.createPlSqlCheck(activeRules, ruleMetadataLoader)
        checks.addCustomChecks(null)
        assertThat(checks.all()).hasSize(0)
    }

    @Test
    fun shouldNotReturnRuleKeyIfCheckDoesNotExists() {
        val checks = PlSqlChecks.createPlSqlCheck(activeRules, ruleMetadataLoader)
        checks.addChecks(DEFAULT_REPOSITORY_KEY, listOf(MyRule::class.java))

        assertThat(checks.ruleKey(MyCustomRule())).isNull()
    }

    private fun visitor(plSqlChecks: PlSqlChecks, repository: String, rule: String): PlSqlVisitor {
        val key = SonarQubeRuleKeyAdapter.of(repository, rule)

        var visitor: PlSqlVisitor? = null

        for (checks in plSqlChecks.checks) {
            visitor = checks.of(key)

            if (visitor != null) {
                return visitor
            }
        }
        return visitor ?: fail("Should return a visitor.")
    }

    @Rule(key = DEFAULT_RULE_KEY, name = "This is the default rules", description = "desc")
    class MyRule : PlSqlCheck()

    @Rule(key = CUSTOM_RULE_KEY, name = "This is a custom rules", description = "desc")
    class MyCustomRule : PlSqlCheck()

    class MyCustomPlSqlRulesDefinition : CustomPlSqlRulesDefinition() {
        override fun repositoryName(): String {
            return "Custom Rule Repository"
        }

        override fun repositoryKey(): String {
            return CUSTOM_REPOSITORY_KEY
        }

        override fun checkClasses(): Array<Class<*>> {
            return arrayOf(MyCustomRule::class.java)
        }
    }

    companion object {
        private const val DEFAULT_REPOSITORY_KEY = "DefaultRuleRepository"
        private const val DEFAULT_RULE_KEY = "MyRule"
        private const val CUSTOM_REPOSITORY_KEY = "CustomRuleRepository"
        private const val CUSTOM_RULE_KEY = "MyCustomRule"
    }
}


================================================
FILE: sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlPluginTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.assertj.core.api.Assertions.assertThat

import org.junit.jupiter.api.Test
import org.sonar.api.Plugin
import org.sonar.api.SonarEdition
import org.sonar.api.SonarQubeSide
import org.sonar.api.internal.SonarRuntimeImpl
import org.sonar.api.utils.Version

class PlSqlPluginTest {

    @Test
    fun testGetExtensions() {
        val context = Plugin.Context(SonarRuntimeImpl.forSonarQube(Version.create(6, 0), SonarQubeSide.SERVER, SonarEdition.COMMUNITY))
        val plugin = PlSqlPlugin()
        plugin.define(context)
        assertThat(context.extensions).hasSize(12)
    }

}


================================================
FILE: sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlProfileTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context
import com.felipebz.zpa.checks.CheckList

class PlSqlProfileTest {

    @Test
    fun should_create_sonar_way_profile() {
        val context = Context()

        val definition = PlSqlProfile()
        definition.define(context)

        val profile = context.profile(PlSql.KEY, CheckList.SONAR_WAY_PROFILE)
        assertThat(profile).isNotNull

        val activeRules = profile.rules()
        assertThat(activeRules.size).isGreaterThan(40)
    }

}


================================================
FILE: sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlSquidSensorTest.kt
================================================
/**
 * Z PL/SQL Analyzer
 * Copyright (C) 2015-2026 Felipe Zorzo
 * mailto:felipe AT felipezorzo DOT com DOT br
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package com.felipebz.zpa

import org.assertj.core.api
Download .txt
Showing preview only (372K chars total). Download the full file or copy to clipboard to get everything.
gitextract_qvtk4j1w/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── renovate.json
│   └── workflows/
│       └── build.yml
├── .gitignore
├── .gitmodules
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE_HEADER
├── README.md
├── build-logic/
│   ├── build.gradle.kts
│   ├── settings.gradle.kts
│   └── src/
│       └── main/
│           └── kotlin/
│               └── com/
│                   └── felipebz/
│                       └── zpa/
│                           ├── build-conventions.gradle.kts
│                           ├── jreleaser-conventions.gradle.kts
│                           ├── kotlin-conventions.gradle.kts
│                           ├── license-conventions.gradle.kts
│                           ├── publishing-conventions.gradle.kts
│                           ├── sonarqube-conventions.gradle.kts
│                           └── testing-conventions.gradle.kts
├── build.gradle.kts
├── gradle/
│   ├── libs.versions.toml
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── plsql-custom-rules/
│   ├── README.md
│   ├── build.gradle.kts
│   ├── gradle/
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── pom.xml
│   ├── settings.gradle.kts
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── company/
│       │   │           └── plsql/
│       │   │               ├── ForbiddenDmlCheck.java
│       │   │               ├── PlSqlCustomRulesDefinition.java
│       │   │               └── PlSqlCustomRulesPlugin.java
│       │   └── resources/
│       │       └── META-INF/
│       │           └── extensions.idx
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── company/
│           │           └── plsql/
│           │               ├── ForbiddenDmlCheckTest.java
│           │               ├── PlSqlCustomRulesDefinitionTest.java
│           │               └── PlSqlCustomRulesPluginTest.java
│           └── resources/
│               └── forbidden-dml.sql
├── settings.gradle.kts
├── sonar-zpa-plugin/
│   ├── build.gradle.kts
│   └── src/
│       ├── integrationTest/
│       │   ├── kotlin/
│       │   │   └── com/
│       │   │       └── felipebz/
│       │   │           └── zpa/
│       │   │               └── it/
│       │   │                   ├── IssueTest.kt
│       │   │                   ├── MetricsTest.kt
│       │   │                   └── Tests.kt
│       │   └── resources/
│       │       ├── com/
│       │       │   └── felipebz/
│       │       │       └── zpa/
│       │       │           └── it/
│       │       │               ├── empty-profile.xml
│       │       │               └── it-profile.xml
│       │       └── projects/
│       │           └── metrics/
│       │               ├── coverage.xml
│       │               ├── src/
│       │               │   ├── betwnstr.sql
│       │               │   ├── custom_rule.sql
│       │               │   ├── source1.sql
│       │               │   └── source2.sql
│       │               ├── test/
│       │               │   └── test_betwnstr.sql
│       │               └── test_results.xml
│       ├── main/
│       │   └── kotlin/
│       │       └── com/
│       │           └── felipebz/
│       │               └── zpa/
│       │                   ├── PlSql.kt
│       │                   ├── PlSqlPlugin.kt
│       │                   ├── PlSqlProfile.kt
│       │                   ├── PlSqlRuleRepository.kt
│       │                   ├── PlSqlSquidSensor.kt
│       │                   ├── SonarQubeUtils.kt
│       │                   ├── api/
│       │                   │   └── CustomPlSqlRulesDefinition.kt
│       │                   ├── highlight/
│       │                   │   └── PlSqlHighlighterVisitor.kt
│       │                   ├── log/
│       │                   │   ├── SonarQubeLogger.kt
│       │                   │   └── SonarQubeLoggers.kt
│       │                   ├── metrics/
│       │                   │   └── CpdVisitor.kt
│       │                   ├── rules/
│       │                   │   ├── SonarQubeActiveRuleAdapter.kt
│       │                   │   ├── SonarQubeActiveRulesAdapter.kt
│       │                   │   ├── SonarQubeRepositoryAdapter.kt
│       │                   │   ├── SonarQubeRuleAdapter.kt
│       │                   │   ├── SonarQubeRuleKeyAdapter.kt
│       │                   │   ├── SonarQubeRuleMetadataLoader.kt
│       │                   │   └── SonarQubeRuleParamAdapter.kt
│       │                   ├── squid/
│       │                   │   ├── PlSqlAstScanner.kt
│       │                   │   └── SonarQubePlSqlFile.kt
│       │                   ├── symbols/
│       │                   │   ├── MappedObject.kt
│       │                   │   ├── ObjectLocator.kt
│       │                   │   └── SonarQubeSymbolTable.kt
│       │                   └── utplsql/
│       │                       ├── AbstractReportImporter.kt
│       │                       ├── CoverageReport.kt
│       │                       ├── CoverageResultImporter.kt
│       │                       ├── TestExecutionReport.kt
│       │                       ├── TestResultImporter.kt
│       │                       └── UtPlSqlSensor.kt
│       └── test/
│           ├── kotlin/
│           │   └── com/
│           │       └── felipebz/
│           │           └── zpa/
│           │               ├── CustomAnnotationBasedRulesDefinitionTest.kt
│           │               ├── PlSqlChecksTest.kt
│           │               ├── PlSqlPluginTest.kt
│           │               ├── PlSqlProfileTest.kt
│           │               ├── PlSqlSquidSensorTest.kt
│           │               ├── PlSqlTest.kt
│           │               ├── api/
│           │               │   └── CustomPlSqlRulesDefinitionTest.kt
│           │               ├── highlight/
│           │               │   └── PlSqlHighlighterVisitorTest.kt
│           │               ├── metrics/
│           │               │   └── CpdVisitorTest.kt
│           │               ├── symbols/
│           │               │   └── SonarQubeSymbolTableTest.kt
│           │               └── utplsql/
│           │                   └── UtPlSqlSensorTest.kt
│           └── resources/
│               ├── com/
│               │   └── felipebz/
│               │       └── zpa/
│               │           ├── code.sql
│               │           ├── test.sql
│               │           └── utplsql/
│               │               ├── award_bonus.sql
│               │               ├── betwnstr.sql
│               │               ├── coverage-report-all-uncovered.xml
│               │               ├── coverage-report-with-paths.xml
│               │               ├── coverage-report-without-paths.xml
│               │               ├── test-report-with-paths.xml
│               │               └── test-report-without-paths.xml
│               ├── highlight/
│               │   └── highlight.sql
│               ├── metrics/
│               │   └── cpd.sql
│               └── org/
│                   └── sonar/
│                       └── l10n/
│                           ├── languageKey/
│                           │   └── rules/
│                           │       ├── plsql/
│                           │       │   └── ruleWithExternalInfo.html
│                           │       └── repoKey/
│                           │           └── ruleWithExternalInfo.html
│                           ├── languageKey.properties
│                           └── languageWithoutBundle/
│                               └── empty.txt
├── template/
│   └── changelog.tpl
├── zpa-checks/
│   ├── build.gradle.kts
│   └── src/
│       ├── integrationTest/
│       │   ├── kotlin/
│       │   │   └── com/
│       │   │       └── felipebz/
│       │   │           └── zpa/
│       │   │               └── it/
│       │   │                   ├── InputFile.kt
│       │   │                   ├── OracleDocsExtractor.kt
│       │   │                   └── PlSqlRulingTest.kt
│       │   └── resources/
│       │       ├── expected/
│       │       │   ├── alexandria-plsql-utils/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── ConcatenationWithNullCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── NvlWithNullParameterCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryNullStatementCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── UselessParenthesisCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── antlr-grammars-v4/
│       │       │   │   ├── AddParenthesesInNestedExpressionCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── IdenticalExpressionCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryLikeCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── UselessParenthesisCheck.json
│       │       │   ├── demo0001/
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0002/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0002_2/
│       │       │   │   └── EmptyBlockCheck.json
│       │       │   ├── demo0003/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0004/
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── ReturnOfBooleanExpressionCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0005/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   └── InvalidReferenceToObjectCheck.json
│       │       │   ├── demo0006/
│       │       │   │   └── QueryWithoutExceptionHandlingCheck.json
│       │       │   ├── demo0007/
│       │       │   │   └── InequalityUsageCheck.json
│       │       │   ├── demo0008/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   └── UnusedVariableCheck.json
│       │       │   ├── demo0009/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0010/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0011/
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── demo0012/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0013/
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   ├── VariableInitializationWithNullCheck.json
│       │       │   │   └── VariableNameCheck.json
│       │       │   ├── demo0014/
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0016/
│       │       │   │   ├── DeclareSectionWithoutDeclarationsCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   └── VariableInitializationWithFunctionCallCheck.json
│       │       │   ├── demo0017/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── DuplicatedValueInInCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── InvalidReferenceToObjectCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   └── UnusedVariableCheck.json
│       │       │   ├── demo0018/
│       │       │   │   └── InvalidReferenceToObjectCheck.json
│       │       │   ├── oracle-database_23/
│       │       │   │   ├── AddParenthesesInNestedExpressionCheck.json
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── ConcatenationWithNullCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IdenticalExpressionCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SameConditionCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── SelectWithRownumAndOrderByCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnhandledUserDefinedExceptionCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryLikeCheck.json
│       │       │   │   ├── UnusedCursorCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   ├── VariableInitializationWithNullCheck.json
│       │       │   │   └── VariableNameCheck.json
│       │       │   ├── pljson/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── CollapsibleIfStatementsCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── ComparisonWithBooleanCheck.json
│       │       │   │   ├── ComparisonWithNullCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyStringAssignmentCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── ReturnOfBooleanExpressionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── ToDateWithoutFormatCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   ├── utPLSQL2/
│       │       │   │   ├── CharacterDatatypeUsageCheck.json
│       │       │   │   ├── ColumnsShouldHaveTableNameCheck.json
│       │       │   │   ├── CommitRollbackCheck.json
│       │       │   │   ├── CursorBodyInPackageSpecCheck.json
│       │       │   │   ├── DbmsOutputPutCheck.json
│       │       │   │   ├── DeadCodeCheck.json
│       │       │   │   ├── EmptyBlockCheck.json
│       │       │   │   ├── ExplicitInParameterCheck.json
│       │       │   │   ├── FunctionWithOutParameterCheck.json
│       │       │   │   ├── IfWithExitCheck.json
│       │       │   │   ├── InequalityUsageCheck.json
│       │       │   │   ├── InsertWithoutColumnsCheck.json
│       │       │   │   ├── ParsingErrorCheck.json
│       │       │   │   ├── QueryWithoutExceptionHandlingCheck.json
│       │       │   │   ├── RaiseStandardExceptionCheck.json
│       │       │   │   ├── SameBranchCheck.json
│       │       │   │   ├── SelectAllColumnsCheck.json
│       │       │   │   ├── UnhandledUserDefinedExceptionCheck.json
│       │       │   │   ├── UnnecessaryAliasInQueryCheck.json
│       │       │   │   ├── UnnecessaryElseCheck.json
│       │       │   │   ├── UnnecessaryNullStatementCheck.json
│       │       │   │   ├── UnusedParameterCheck.json
│       │       │   │   ├── UnusedVariableCheck.json
│       │       │   │   ├── VariableHidingCheck.json
│       │       │   │   ├── VariableInitializationWithFunctionCallCheck.json
│       │       │   │   └── VariableInitializationWithNullCheck.json
│       │       │   └── utPLSQL3/
│       │       │       ├── AddParenthesesInNestedExpressionCheck.json
│       │       │       ├── CharacterDatatypeUsageCheck.json
│       │       │       ├── CommitRollbackCheck.json
│       │       │       ├── ComparisonWithBooleanCheck.json
│       │       │       ├── ComparisonWithNullCheck.json
│       │       │       ├── ConcatenationWithNullCheck.json
│       │       │       ├── DbmsOutputPutCheck.json
│       │       │       ├── EmptyBlockCheck.json
│       │       │       ├── ExplicitInParameterCheck.json
│       │       │       ├── FunctionWithOutParameterCheck.json
│       │       │       ├── IdenticalExpressionCheck.json
│       │       │       ├── InequalityUsageCheck.json
│       │       │       ├── InsertWithoutColumnsCheck.json
│       │       │       ├── ParsingErrorCheck.json
│       │       │       ├── QueryWithoutExceptionHandlingCheck.json
│       │       │       ├── RaiseStandardExceptionCheck.json
│       │       │       ├── SameBranchCheck.json
│       │       │       ├── SelectAllColumnsCheck.json
│       │       │       ├── ToDateWithoutFormatCheck.json
│       │       │       ├── UnhandledUserDefinedExceptionCheck.json
│       │       │       ├── UnnecessaryAliasInQueryCheck.json
│       │       │       ├── UnnecessaryElseCheck.json
│       │       │       ├── UnnecessaryLikeCheck.json
│       │       │       ├── UnnecessaryNullStatementCheck.json
│       │       │       ├── UnusedParameterCheck.json
│       │       │       ├── UnusedVariableCheck.json
│       │       │       ├── VariableHidingCheck.json
│       │       │       ├── VariableInitializationWithFunctionCallCheck.json
│       │       │       └── VariableInitializationWithNullCheck.json
│       │       └── sources/
│       │           ├── Doag-Forms-extracted/
│       │           │   ├── README.md
│       │           │   ├── demo0001/
│       │           │   │   └── WEBUTIL_DEMO/
│       │           │   │       ├── ABOUT/
│       │           │   │       │   └── ABOUT__ABOUT_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BROWSER/
│       │           │   │       │   ├── BROWSER__APPLET_PARAMS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BROWSER__BROWSER_MESSAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BROWSER__SEPARATE_FRAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BUILTINS/
│       │           │   │       │   ├── BUILTINS__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__GET_TOOL_ENV__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__READ_IMAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BUILTINS__TEXT_IO_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENTINFO/
│       │           │   │       │   └── CLIENTINFO__ACTION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENT_GETENV.pcd
│       │           │   │       ├── CLIENT_READIMAGE.pcd
│       │           │   │       ├── CLIENT_TEXTIO.pcd
│       │           │   │       ├── CTL/
│       │           │   │       │   ├── CTL__ACKNOWLEDGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT10__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT8__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL__EXIT9__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── C_API/
│       │           │   │       │   ├── C_API__CALL_C_API__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── C_API__LOCKSTATION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD/
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DOWNLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD_AS.pcd
│       │           │   │       ├── DOWNLOAD_DB.pcd
│       │           │   │       ├── FILES/
│       │           │   │       │   ├── FILES__COPY_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__DELETE_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_OPEN__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_SAVE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__LIST_DIRS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── FILES__LIST_FILES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FILES_WBP.pcd
│       │           │   │       ├── F_GET_TIMER_VALUE.fun
│       │           │   │       ├── GET_APPLET_PARAMETERS.pcd
│       │           │   │       ├── GET_CLIENTINFO.pcd
│       │           │   │       ├── GET_CLIENT_FILENAME.pcd
│       │           │   │       ├── HOST/
│       │           │   │       │   ├── HOST__HOST_CALLBACK.tgg
│       │           │   │       │   └── HOST__RUN_HOST__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── SEPARATE_FRAME_OPTIONS.pcd
│       │           │   │       ├── SET_BROWSER_MESSAGE.pcd
│       │           │   │       ├── UPLOAD/
│       │           │   │       │   ├── UPLOAD__CREATE_TABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__UPLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── UPLOAD__UPLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UPLOAD_AS.pcd
│       │           │   │       ├── UPLOAD_DB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_DEMO/
│       │           │   │       │   ├── PRE-FORM.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TAB-PAGE-CHANGED.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0002/
│       │           │   │   ├── DEMO0002/
│       │           │   │   │   ├── BL_EMPLOYEES.pkb
│       │           │   │   │   ├── BL_EMPLOYEES.pks
│       │           │   │   │   ├── BL_MAINBLOCK.pkb
│       │           │   │   │   ├── BL_MAINBLOCK.pks
│       │           │   │   │   ├── CONST_LOCAL.pks
│       │           │   │   │   ├── CONTROL/
│       │           │   │   │   │   ├── CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── CONTROL__BT_WIKI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   ├── DEMO0002/
│       │           │   │   │   │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │   │   ├── EMPLOYEES/
│       │           │   │   │   │   └── EMPLOYEES__PRE-QUERY.tgg
│       │           │   │   │   ├── FILTER/
│       │           │   │   │   │   ├── FILTER__BT_QUERY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── FILTER__WHEN-VALIDATE-ITEM.tgg
│       │           │   │   │   ├── VERSION_FRW_FORMS.fun
│       │           │   │   │   ├── WHEN_TIMER_EXPIRED.pcd
│       │           │   │   │   ├── WNB.pcd
│       │           │   │   │   ├── WNF.pcd
│       │           │   │   │   ├── WNI.pcd
│       │           │   │   │   ├── WNR.pcd
│       │           │   │   │   └── metadata.json
│       │           │   │   └── FRW_REF/
│       │           │   │       ├── FRW_REF/
│       │           │   │       │   ├── ON-ERROR.tgg
│       │           │   │       │   ├── WHEN-NEW-BLOCK-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │       ├── WNB.pcd
│       │           │   │       ├── WNF.pcd
│       │           │   │       ├── WNI.pcd
│       │           │   │       ├── WNR.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0003/
│       │           │   │   └── DEMO0003/
│       │           │   │       ├── BL_MAINBLOCK.pkb
│       │           │   │       ├── BL_MAINBLOCK.pks
│       │           │   │       ├── CONST_LOCAL.pks
│       │           │   │       ├── CONTROL/
│       │           │   │       │   ├── CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_ONE_TIME_TIMER__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_UNDO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__BT_WIKI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CONTROL__BT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DEMO0003/
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── EMPLOYEES_CONTROL/
│       │           │   │       │   ├── EMPLOYEES_CONTROL__BT_UNDO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── EMPLOYEES_CONTROL__ITEM47__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── EMPLOYEES_LI/
│       │           │   │       │   └── EMPLOYEES_LI__PRE-QUERY.tgg
│       │           │   │       ├── EMPLOYEES_LI_CONTROL/
│       │           │   │       │   └── EMPLOYEES_LI_CONTROL__BT_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UNDO.pcd
│       │           │   │       ├── VERSION_FRW_FORMS.fun
│       │           │   │       ├── WHEN_TIMER_EXPIRED.pcd
│       │           │   │       ├── WNB.pcd
│       │           │   │       ├── WNF.pcd
│       │           │   │       ├── WNI.pcd
│       │           │   │       ├── WNR.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0004/
│       │           │   │   └── RELEASE_LOCKS/
│       │           │   │       ├── ERRORMESSAGE.pcd
│       │           │   │       ├── IS_DBA.fun
│       │           │   │       ├── KILL_SESSION.pcd
│       │           │   │       ├── LOG_SYSTEM_SCHLIESSEN.pcd
│       │           │   │       ├── REFRESH.pcd
│       │           │   │       ├── RELEASE_LOCKS/
│       │           │   │       │   ├── POST-FORM.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── STEUERBLOCK/
│       │           │   │       │   ├── STEUERBLOCK__PB_CANCEL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── STEUERBLOCK__PB_CONNECT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── STEUERBLOCK__PB_EXIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── STEUERBLOCK__PB_REFRESH__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── V$LOCK/
│       │           │   │       │   └── V$LOCK__POST-QUERY.tgg
│       │           │   │       ├── V$SESSION/
│       │           │   │       │   └── V$SESSION__PB_KILL_SESSION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0005/
│       │           │   │   └── TIMEOUTPJC_TEST/
│       │           │   │       ├── PL_RESET_FORMSTIMER_ITEMS.pcd
│       │           │   │       ├── PL_START.pcd
│       │           │   │       ├── PL_WHEN_CUSTOM_ITEM_EVENT.pcd
│       │           │   │       ├── TEST/
│       │           │   │       │   ├── TEST__DEBUG__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │       │   ├── TEST__FORMSTIMER500__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMSTIMER60000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMS_TIMER1000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__FORMS_TIMER5000__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__ITEM28__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── TEST__PRESET7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── TEST__STARTTIMER__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── TIMEOUTPJC_TEST/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_TIMER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0006/
│       │           │   │   └── TIMEOUT_SYS_CLIENT_IDL/
│       │           │   │       ├── DEMOBLOCK/
│       │           │   │       │   ├── DEMOBLOCK__BUT_CLOSE_FORM__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DEMOBLOCK__DEMO_1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DEMOBLOCK__DEMO_2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DEMOBLOCK__DEMO_3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── F_GET_TIMER_VALUE.fun
│       │           │   │       ├── P_CLEAR_DIAGNOSTIC_ITEMS.pcd
│       │           │   │       ├── TIMEOUT_SYS_CLIENT_IDL/
│       │           │   │       │   └── PRE-FORM.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0007/
│       │           │   │   └── CD_DEMO_EXCEL/
│       │           │   │       ├── ALL_OBJECTS/
│       │           │   │       │   ├── ALL_OBJECTS__BT_ALL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── ALL_OBJECTS__BT_PACKAGES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── ALL_OBJECTS__BT_TABLES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── ALL_OBJECTS__CALL_EXCEL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CD_DEMO_EXCEL/
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── P_GET_BLOB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0008/
│       │           │   │   └── LATENCY_TEST/
│       │           │   │       ├── F_GET_CURRENT_TIME_MS.fun
│       │           │   │       ├── LATENCY_TEST/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── P_DOWNLOAD_DOKUMENT_AS.pcd
│       │           │   │       ├── P_WAIT_AND_EXIT.pcd
│       │           │   │       ├── P_WHEN_NEW_FORM_INSTANCE.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_GET_AS_TMP_DIR.fun
│       │           │   │       ├── WEBUTIL_GET_LATENCY.fun
│       │           │   │       ├── WEBUTIL_PREPARE_TESTFILE.pcd
│       │           │   │       └── metadata.json
│       │           │   ├── demo0009/
│       │           │   │   └── FORMSAPI_WIZARD_2905/
│       │           │   │       ├── BLK_HANDLG/
│       │           │   │       │   ├── BLK_HANDLG__BT_CHECK_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_COMPILE_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_MIGRATE_SINGLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_SELECT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_CHECK__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_COMPILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__BT_VIEW_MIGRATE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_HANDLG__CBOX_FAM_ACTION__WHEN-LIST-CHANGED.tgg
│       │           │   │       │   ├── BLK_HANDLG__CB__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │       │   └── BLK_HANDLG__POST-QUERY.tgg
│       │           │   │       ├── CTL_BASIC/
│       │           │   │       │   ├── CTL_BASIC__BT_ALL__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_CHECK__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_COMPILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL_BASIC__BT_CONFIGURE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL_BASIC__BT_MIGRATE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CTL_INIT/
│       │           │   │       │   └── CTL_INIT__BT_CLOSE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FNC_FILE_EXISTS_HOST.fun
│       │           │   │       ├── FNC_GET_FILE_SEPARATOR.fun
│       │           │   │       ├── FNC_GET_TIMER_VALUE.fun
│       │           │   │       ├── FORMSAPI_WIZARD_2905/
│       │           │   │       │   ├── MODULE_FEATURES.tgg
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── G.pkb
│       │           │   │       ├── G.pks
│       │           │   │       ├── PKG_BLK_DATA.pkb
│       │           │   │       ├── PKG_BLK_DATA.pks
│       │           │   │       ├── PKG_CONFIG.pkb
│       │           │   │       ├── PKG_CONFIG.pks
│       │           │   │       ├── PKG_FAM_RUN_SCRIPT.pkb
│       │           │   │       ├── PKG_FAM_RUN_SCRIPT.pks
│       │           │   │       ├── PRC_ABORT.pcd
│       │           │   │       ├── PRC_CHECK_FAM.pcd
│       │           │   │       ├── PRC_CMD_HOST_CLIENT.pcd
│       │           │   │       ├── PRC_CNG_MONTH_TIME.pcd
│       │           │   │       ├── PRC_COMPILATION.pcd
│       │           │   │       ├── PRC_CONFIGURATION.pcd
│       │           │   │       ├── PRC_COPY_FILE.pcd
│       │           │   │       ├── PRC_COPY_FILE_HOST.pcd
│       │           │   │       ├── PRC_ERROR.pcd
│       │           │   │       ├── PRC_EXCEPTION.pcd
│       │           │   │       ├── PRC_FILE_MERGE.pcd
│       │           │   │       ├── PRC_FILE_MERGE_HOST.pcd
│       │           │   │       ├── PRC_FLOG.pcd
│       │           │   │       ├── PRC_GET_CHK_REF_INFO.pcd
│       │           │   │       ├── PRC_GET_CONNECT_INFO.pcd
│       │           │   │       ├── PRC_INFO.pcd
│       │           │   │       ├── PRC_MIGRATION.pcd
│       │           │   │       ├── PRC_MSG.pcd
│       │           │   │       ├── PRC_SET_COMPILE_RESULT.pcd
│       │           │   │       ├── PRC_SET_INFOS.pcd
│       │           │   │       ├── PRC_SET_MIGRATE_RESULT.pcd
│       │           │   │       ├── PRC_SET_STATISTIK.pcd
│       │           │   │       ├── PRC_SET_STATISTIK_SINGLE.pcd
│       │           │   │       ├── PRC_SET_USERHOME.pcd
│       │           │   │       ├── PRC_SHOW_DURATION.pcd
│       │           │   │       ├── PRC_SHOW_INIT.pcd
│       │           │   │       ├── PRC_VIEW_FILE.pcd
│       │           │   │       ├── PRC_WRITE_SCRIPT.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0010/
│       │           │   │   └── CHK_MYFFI_SAMPLE5/
│       │           │   │       ├── BLK/
│       │           │   │       │   ├── BLK__PB_WEB_FFI__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BLK__URL__WHEN-MOUSE-CLICK.tgg
│       │           │   │       ├── CHK_MYFFI_SAMPLE5/
│       │           │   │       │   └── ON-LOGON.tgg
│       │           │   │       ├── FNC_BOOL.fun
│       │           │   │       ├── PRC_SHOW.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0011/
│       │           │   │   └── WEBUTIL_DEMO/
│       │           │   │       ├── ABOUT/
│       │           │   │       │   └── ABOUT__ABOUT_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BROWSER/
│       │           │   │       │   ├── BROWSER__APPLET_PARAMS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BROWSER__BROWSER_MESSAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BROWSER__SEPARATE_FRAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── BUILTINS/
│       │           │   │       │   ├── BUILTINS__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__GET_TOOL_ENV__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BUILTINS__READ_IMAGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── BUILTINS__TEXT_IO_BUTTON__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENTINFO/
│       │           │   │       │   └── CLIENTINFO__ACTION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── CLIENT_GETENV.pcd
│       │           │   │       ├── CLIENT_READIMAGE.pcd
│       │           │   │       ├── CLIENT_TEXTIO.pcd
│       │           │   │       ├── CTL/
│       │           │   │       │   ├── CTL__ACKNOWLEDGE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT10__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT1__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT5__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT6__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT7__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CTL__EXIT8__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CTL__EXIT9__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── C_API/
│       │           │   │       │   ├── C_API__CALL_C_API__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── C_API__LOCKSTATION__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD/
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── DOWNLOAD__DOWNLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── DOWNLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── DOWNLOAD_AS.pcd
│       │           │   │       ├── DOWNLOAD_DB.pcd
│       │           │   │       ├── FILES/
│       │           │   │       │   ├── FILES__COPY_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__DELETE_FILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_OPEN__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__FILE_SAVE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── FILES__LIST_DIRS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── FILES__LIST_FILES__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── FILES_WBP.pcd
│       │           │   │       ├── GET_APPLET_PARAMETERS.pcd
│       │           │   │       ├── GET_CLIENTINFO.pcd
│       │           │   │       ├── GET_CLIENT_FILENAME.pcd
│       │           │   │       ├── HOST/
│       │           │   │       │   ├── HOST__HOST_CALLBACK.tgg
│       │           │   │       │   └── HOST__RUN_HOST__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── OLE/
│       │           │   │       │   ├── OLE__SAVEFILE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── OLE__WRITE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── OLE_WRITE.pcd
│       │           │   │       ├── SEPARATE_FRAME_OPTIONS.pcd
│       │           │   │       ├── SET_BROWSER_MESSAGE.pcd
│       │           │   │       ├── UPLOAD/
│       │           │   │       │   ├── UPLOAD__CREATE_TABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__GET_FILE_NAME__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── UPLOAD__UPLOAD_AS__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── UPLOAD__UPLOAD_DB__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       ├── UPLOAD_AS.pcd
│       │           │   │       ├── UPLOAD_DB.pcd
│       │           │   │       ├── WEBUTIL/
│       │           │   │       │   ├── WEBUTIL__DUMMY__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_BROWSER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_CLIENTINFO_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_C_API_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILETRANSFER_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_FILE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_HOST_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── WEBUTIL__WEBUTIL_OLE_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   └── WEBUTIL__WEBUTIL_SESSION_FUNCTIONS__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       ├── WEBUTIL_DEMO/
│       │           │   │       │   ├── KEY-EXIT.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   ├── WHEN-TAB-PAGE-CHANGED.tgg
│       │           │   │       │   ├── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0012/
│       │           │   │   └── PDFVIEWER/
│       │           │   │       ├── PDFVIEWER/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   ├── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       └── metadata.json
│       │           │   ├── demo0013/
│       │           │   │   └── COLOR_SLIDER/
│       │           │   │       ├── BL1/
│       │           │   │       │   ├── BL1__B__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__G__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__R__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── BL1__VB__POST-TEXT-ITEM.tgg
│       │           │   │       │   ├── BL1__VG__POST-TEXT-ITEM.tgg
│       │           │   │       │   └── BL1__VR__POST-TEXT-ITEM.tgg
│       │           │   │       ├── COLOR_SLIDER/
│       │           │   │       │   ├── ON-LOGON.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── PKG_SLIDER.pkb
│       │           │   │       ├── PKG_SLIDER.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0014/
│       │           │   │   ├── ACCORDION/
│       │           │   │   │   ├── ACCORDION/
│       │           │   │   │   │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │   │   ├── B/
│       │           │   │   │   │   ├── B__B2__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   ├── B__B3__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   ├── B__B4__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   │   └── B__B__WHEN-BUTTON-PRESSED.tgg
│       │           │   │   │   ├── BL_TREE/
│       │           │   │   │   │   ├── BL_TREE__IT_TREE__WHEN-TREE-NODE-EXPANDED.tgg
│       │           │   │   │   │   └── BL_TREE__IT_TREE__WHEN-TREE-NODE-SELECTED.tgg
│       │           │   │   │   ├── DEPARTMENTS/
│       │           │   │   │   │   └── DEPARTMENTS__WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │   │   ├── OTHRS/
│       │           │   │   │   │   └── OTHRS__EMAIL__WHEN-CHECKBOX-CHANGED.tgg
│       │           │   │   │   ├── PK_ACCORDION.pkb
│       │           │   │   │   ├── PK_ACCORDION.pks
│       │           │   │   │   ├── PK_TREE.pkb
│       │           │   │   │   ├── PK_TREE.pks
│       │           │   │   │   ├── PR_INIT_BY_DEPT.pcd
│       │           │   │   │   ├── PR_INIT_BY_OTHERS.pcd
│       │           │   │   │   ├── PR_INIT_BY_SAL.pcd
│       │           │   │   │   ├── PR_INIT_BY_TREE.pcd
│       │           │   │   │   ├── SAL/
│       │           │   │   │   │   └── SAL__SAL__WHEN-RADIO-CHANGED.tgg
│       │           │   │   │   └── metadata.json
│       │           │   │   └── ACCORDION2/
│       │           │   │       ├── ACCORDION2/
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── PK_ACCORDION.pkb
│       │           │   │       ├── PK_ACCORDION.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0015/
│       │           │   │   └── MODERNIZE/
│       │           │   │       ├── CONTROL/
│       │           │   │       │   ├── CONTROL__CHECK_BOX_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__ERROR_STACK__WHEN-CUSTOM-ITEM-EVENT.tgg
│       │           │   │       │   ├── CONTROL__RADIO_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_ERROR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_INFO__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__SHOW_WARNING__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__TEXT_FIELD_BACK_COLOR__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── CONTROL__TEXT_FIELD_ENABLE__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   └── CONTROL__WHEN-NEW-RECORD-INSTANCE.tgg
│       │           │   │       ├── MODERNIZE/
│       │           │   │       │   └── WHEN-WINDOW-CLOSED.tgg
│       │           │   │       ├── RecordGroups/
│       │           │   │       │   └── LOV9.sql
│       │           │   │       └── metadata.json
│       │           │   ├── demo0016/
│       │           │   │   └── CHK_CBOX3/
│       │           │   │       ├── C/
│       │           │   │       │   ├── C__CBOX__KEY-NEXT-ITEM.tgg
│       │           │   │       │   ├── C__CBOX__POST-CHANGE.tgg
│       │           │   │       │   ├── C__CBOX__WHEN-LIST-CHANGED.tgg
│       │           │   │       │   ├── C__DUMMY__KEY-NEXT-ITEM.tgg
│       │           │   │       │   └── C__DUMMY__KEY-PREV-ITEM.tgg
│       │           │   │       ├── CBX/
│       │           │   │       │   ├── CBX__LABEL__KEY-NEXT-ITEM.tgg
│       │           │   │       │   ├── CBX__LABEL__KEY-PREV-ITEM.tgg
│       │           │   │       │   ├── CBX__LABEL__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   └── CBX__ON-ERROR.tgg
│       │           │   │       ├── CHK_CBOX3/
│       │           │   │       │   ├── WHEN-NEW-BLOCK-INSTANCE.tgg
│       │           │   │       │   └── WHEN-TIMER-EXPIRED.tgg
│       │           │   │       ├── PKG_CBOX.pkb
│       │           │   │       ├── PKG_CBOX.pks
│       │           │   │       └── metadata.json
│       │           │   ├── demo0017/
│       │           │   │   └── POC_ACCOUNT/
│       │           │   │       ├── BLK_ACCOUNT/
│       │           │   │       │   ├── BLK_ACCOUNT__ANSWER__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__ANSWER__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__BT_COMMIT__WHEN-BUTTON-PRESSED.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__CLOSE__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL2__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL2__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__EMAIL__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__FULLNAME__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__FULLNAME__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD_RETRY__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD_RETRY__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__PASSWORD__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__QUERY__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__QUERY__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__START_DEMO__WHEN-MOUSE-CLICK.tgg
│       │           │   │       │   ├── BLK_ACCOUNT__USERNAME__WHEN-NEW-ITEM-INSTANCE.tgg
│       │           │   │       │   └── BLK_ACCOUNT__USERNAME__WHEN-VALIDATE-ITEM.tgg
│       │           │   │       ├── FNC_MSG_QUERY.fun
│       │           │   │       ├── FNC_VALIDATE.fun
│       │           │   │       ├── PKG_ITEM.pkb
│       │           │   │       ├── PKG_ITEM.pks
│       │           │   │       ├── POC_ACCOUNT/
│       │           │   │       │   ├── KEY-EXIT.tgg
│       │           │   │       │   ├── ON-ERROR.tgg
│       │           │   │       │   ├── ON-MESSAGE.tgg
│       │           │   │       │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │   │       ├── POP_CHECK/
│       │           │   │       │   └── CHECK_ALL/
│       │           │   │       │       └── POP_CHECK__CHECK_ALL.sql
│       │           │   │       ├── PRC_CHK_ITEM_SEQUENCE.pcd
│       │           │   │       ├── PRC_INFO.pcd
│       │           │   │       ├── PRC_SET_ITEMS.pcd
│       │           │   │       ├── V#R#FY_PW$001.fun
│       │           │   │       └── metadata.json
│       │           │   └── demo0018/
│       │           │       └── TEST/
│       │           │           ├── TEST/
│       │           │           │   ├── TEST__BUTTON1__WHEN-BUTTON-PRESSED.tgg
│       │           │           │   └── WHEN-NEW-FORM-INSTANCE.tgg
│       │           │           └── metadata.json
│       │           ├── antlr-grammars-v4/
│       │           │   ├── README.md
│       │           │   ├── examples/
│       │           │   │   ├── administer_key_management.sql
│       │           │   │   ├── aggregate_functions.sql
│       │           │   │   ├── alter_analytic_view.sql
│       │           │   │   ├── alter_attribute_dimension.sql
│       │           │   │   ├── alter_audit_policy.sql
│       │           │   │   ├── alter_database.sql
│       │           │   │   ├── alter_dimension.sql
│       │           │   │   ├── alter_diskgroup.sql
│       │           │   │   ├── alter_flashback_archive.sql
│       │           │   │   ├── alter_function.sql
│       │           │   │   ├── alter_hierarchy.sql
│       │           │   │   ├── alter_inmemory_join_group.sql
│       │           │   │   ├── alter_java.sql
│       │           │   │   ├── alter_library.sql
│       │           │   │   ├── alter_lockdown_profile.sql
│       │           │   │   ├── alter_materialized_zonemap.sql
│       │           │   │   ├── alter_mv.sql
│       │           │   │   ├── alter_mv_log.sql
│       │           │   │   ├── alter_operator.sql
│       │           │   │   ├── alter_outline.sql
│       │           │   │   ├── alter_pmem_filestore.sql
│       │           │   │   ├── alter_resource_cost.sql
│       │           │   │   ├── alter_role.sql
│       │           │   │   ├── alter_rollback_segment.sql
│       │           │   │   ├── alter_session.sql
│       │           │   │   ├── alter_synonym01.sql
│       │           │   │   ├── alter_table.sql
│       │           │   │   ├── alter_table_inmemory.sql
│       │           │   │   ├── alter_table_modify_partition_by_range.sql
│       │           │   │   ├── alter_table_modify_partition_shrink.sql
│       │           │   │   ├── alter_tablespace_set.sql
│       │           │   │   ├── alter_tablespaces.sql
│       │           │   │   ├── alter_view.sql
│       │           │   │   ├── analytic_query.sql
│       │           │   │   ├── analyze.sql
│       │           │   │   ├── associate_statistics.sql
│       │           │   │   ├── audit.sql
│       │           │   │   ├── bindvar01.sql
│       │           │   │   ├── bindvar02.sql
│       │           │   │   ├── bindvar03.sql
│       │           │   │   ├── bindvar04.sql
│       │           │   │   ├── bindvar05.sql
│       │           │   │   ├── block01.sql
│       │           │   │   ├── block02.sql
│       │           │   │   ├── bulk_collect_fetch_clause01.sql
│       │           │   │   ├── call.sql
│       │           │   │   ├── case_when01.sql
│       │           │   │   ├── case_when02.sql
│       │           │   │   ├── case_when03.sql
│       │           │   │   ├── case_when04.sql
│       │           │   │   ├── case_when05.sql
│       │           │   │   ├── case_when06.sql
│       │           │   │   ├── case_when07.sql
│       │           │   │   ├── case_when08.sql
│       │           │   │   ├── cast.sql
│       │           │   │   ├── cast_multiset01.sql
│       │           │   │   ├── cast_multiset02.sql
│       │           │   │   ├── cast_multiset03.sql
│       │           │   │   ├── cast_multiset04.sql
│       │           │   │   ├── cast_multiset05.sql
│       │           │   │   ├── cast_multiset06.sql
│       │           │   │   ├── cast_multiset08.sql
│       │           │   │   ├── cluster.sql
│       │           │   │   ├── collection_method_invocation.sql
│       │           │   │   ├── columns01.sql
│       │           │   │   ├── comment_on.sql
│       │           │   │   ├── comments.sql
│       │           │   │   ├── commit.sql
│       │           │   │   ├── concatenation-double_asterisk.sql
│       │           │   │   ├── concatenation-mod.sql
│       │           │   │   ├── condition01.sql
│       │           │   │   ├── condition02.sql
│       │           │   │   ├── condition03.sql
│       │           │   │   ├── condition04.sql
│       │           │   │   ├── condition05.sql
│       │           │   │   ├── condition06.sql
│       │           │   │   ├── condition07.sql
│       │           │   │   ├── condition08.sql
│       │           │   │   ├── condition09.sql
│       │           │   │   ├── condition10.sql
│       │           │   │   ├── condition11.sql
│       │           │   │   ├── condition12.sql
│       │           │   │   ├── condition14.sql
│       │           │   │   ├── condition15.sql
│       │           │   │   ├── condition16.sql
│       │           │   │   ├── connect_by01.sql
│       │           │   │   ├── connect_by02.sql
│       │           │   │   ├── connect_by03.sql
│       │           │   │   ├── connect_by04.sql
│       │           │   │   ├── connect_by05.sql
│       │           │   │   ├── context.sql
│       │           │   │   ├── create_analytic_view.sql
│       │           │   │   ├── create_attribute_dimension.sql
│       │           │   │   ├── create_audit_policy.sql
│       │           │   │   ├── create_controlfile.sql
│       │           │   │   ├── create_database.sql
│       │           │   │   ├── create_dimension.sql
│       │           │   │   ├── create_directory.sql
│       │           │   │   ├── create_diskgroup.sql
│       │           │   │   ├── create_edition.sql
│       │           │   │   ├── create_flashback_archive.sql
│       │           │   │   ├── create_function01.sql
│       │           │   │   ├── create_function02.sql
│       │           │   │   ├── create_function03.sql
│       │           │   │   ├── create_function04.sql
│       │           │   │   ├── create_function05.sql
│       │           │   │   ├── create_function06.sql
│       │           │   │   ├── create_hierarchy.sql
│       │           │   │   ├── create_index.sql
│       │           │   │   ├── create_inmemory_join_group.sql
│       │           │   │   ├── create_java.sql
│       │           │   │   ├── create_library.sql
│       │           │   │   ├── create_lockdown_profile.sql
│       │           │   │   ├── create_materialized_zonemap.sql
│       │           │   │   ├── create_operator.sql
│       │           │   │   ├── create_outline.sql
│       │           │   │   ├── create_package.sql.tree
│       │           │   │   ├── create_package01.sql
│       │           │   │   ├── create_package02.sql
│       │           │   │   ├── create_package03.sql
│       │           │   │   ├── create_package04.sql
│       │           │   │   ├── create_package05.sql
│       │           │   │   ├── create_pmem_filestore.sql
│       │           │   │   ├── create_procedure01.sql
│       │           │   │   ├── create_procedure01.sql.tree
│       │           │   │   ├── create_procedure02.sql
│       │           │   │   ├── create_procedure03.sql
│       │           │   │   ├── create_profile.sql
│       │           │   │   ├── create_restore_point.sql
│       │           │   │   ├── create_role.sql
│       │           │   │   ├── create_rollback_segment.sql
│       │           │   │   ├── create_spfile.sql
│       │           │   │   ├── create_synonym01.sql
│       │           │   │   ├── create_synonym02.sql
│       │           │   │   ├── create_synonym03.sql
│       │           │   │   ├── create_table.sql
│       │           │   │   ├── create_tablespace.sql
│       │           │   │   ├── create_tablespace_set.sql
│       │           │   │   ├── create_trigger01.sql
│       │           │   │   ├── create_trigger02.sql
│       │           │   │   ├── create_type.sql
│       │           │   │   ├── create_view.sql
│       │           │   │   ├── ctas.sql
│       │           │   │   ├── datetime01.sql
│       │           │   │   ├── datetime03.sql
│       │           │   │   ├── datetime04.sql
│       │           │   │   ├── datetime05.sql
│       │           │   │   ├── dblink.sql
│       │           │   │   ├── dblink01.sql
│       │           │   │   ├── directory.sql
│       │           │   │   ├── disassociate_statistics.sql
│       │           │   │   ├── drop_analytic_view.sql
│       │           │   │   ├── drop_attribute_dimension.sql
│       │           │   │   ├── drop_audit_policy.sql
│       │           │   │   ├── drop_cluster.sql
│       │           │   │   ├── drop_context.sql
│       │           │   │   ├── drop_database.sql
│       │           │   │   ├── drop_directory.sql
│       │           │   │   ├── drop_diskgroup.sql
│       │           │   │   ├── drop_edition.sql
│       │           │   │   ├── drop_flashback_archive.sql
│       │           │   │   ├── drop_hierarchy.sql
│       │           │   │   ├── drop_indextype.sql
│       │           │   │   ├── drop_inmemory_join_group.sql
│       │           │   │   ├── drop_java.sql
│       │           │   │   ├── drop_library.sql
│       │           │   │   ├── drop_lockdown_profile.sql
│       │           │   │   ├── drop_materialized_view.sql
│       │           │   │   ├── drop_materialized_view.sql.tree
│       │           │   │   ├── drop_materialized_zonemap.sql
│       │           │   │   ├── drop_operator.sql
│       │           │   │   ├── drop_outline.sql
│       │           │   │   ├── drop_pmem_filestore.sql
│       │           │   │   ├── drop_restore_point.sql
│       │           │   │   ├── drop_role.sql
│       │           │   │   ├── drop_rollback_segment.sql
│       │           │   │   ├── drop_synonym01.sql
│       │           │   │   ├── drop_table.sql
│       │           │   │   ├── drop_tablespace.sql
│       │           │   │   ├── drop_tablespace_set.sql
│       │           │   │   ├── drop_user.sql
│       │           │   │   ├── drop_view.sql
│       │           │   │   ├── editionable_function.sql
│       │           │   │   ├── editionable_packagebody_function.sql
│       │           │   │   ├── editionable_packagespec_function.sql
│       │           │   │   ├── explain01.sql
│       │           │   │   ├── fetch_clause01.sql
│       │           │   │   ├── fetch_clause02.sql
│       │           │   │   ├── fetch_clause03.sql
│       │           │   │   ├── fetch_clause04.sql
│       │           │   │   ├── fetch_statement.sql
│       │           │   │   ├── flashback01.sql
│       │           │   │   ├── flashback_table.sql
│       │           │   │   ├── for_update01.sql
│       │           │   │   ├── for_update02.sql
│       │           │   │   ├── for_update03.sql
│       │           │   │   ├── for_update04.sql
│       │           │   │   ├── for_update05.sql
│       │           │   │   ├── for_update06.sql
│       │           │   │   ├── for_update07.sql
│       │           │   │   ├── for_update08.sql
│       │           │   │   ├── forall_bulk_rowcount.sql
│       │           │   │   ├── forall_indices_of.sql
│       │           │   │   ├── forall_statement_and_exception_handling.sql
│       │           │   │   ├── function01.sql
│       │           │   │   ├── function02.sql
│       │           │   │   ├── function03.sql
│       │           │   │   ├── function04.sql
│       │           │   │   ├── function05.sql
│       │           │   │   ├── function06.sql
│       │           │   │   ├── function07.sql
│       │           │   │   ├── general_element_part.sql
│       │           │   │   ├── groupby01.sql
│       │           │   │   ├── groupby02.sql
│       │           │   │   ├── groupby03.sql
│       │           │   │   ├── groupby04.sql
│       │           │   │   ├── groupby05.sql
│       │           │   │   ├── groupby06.sql
│       │           │   │   ├── groupby07.sql
│       │           │   │   ├── index.sql
│       │           │   │   ├── insert_statement.sql
│       │           │   │   ├── interval01.sql
│       │           │   │   ├── interval02.sql
│       │           │   │   ├── interval03.sql
│       │           │   │   ├── interval04.sql
│       │           │   │   ├── join01.sql
│       │           │   │   ├── join02.sql
│       │           │   │   ├── join03.sql
│       │           │   │   ├── join04.sql
│       │           │   │   ├── join05.sql
│       │           │   │   ├── join06.sql
│       │           │   │   ├── join07.sql
│       │           │   │   ├── join08.sql
│       │           │   │   ├── join09.sql
│       │           │   │   ├── join10.sql
│       │           │   │   ├── join11.sql
│       │           │   │   ├── join12.sql
│       │           │   │   ├── join13.sql
│       │           │   │   ├── join14.sql
│       │           │   │   ├── join15.sql
│       │           │   │   ├── join16.sql
│       │           │   │   ├── join17.sql
│       │           │   │   ├── join18.sql
│       │           │   │   ├── join19.sql
│       │           │   │   ├── join20.sql
│       │           │   │   ├── join21.sql
│       │           │   │   ├── join22.sql
│       │           │   │   ├── join23.sql
│       │           │   │   ├── json_query.sql
│       │           │   │   ├── json_query.sql.tree
│       │           │   │   ├── json_sql.sql
│       │           │   │   ├── keywordasidentifier01.sql
│       │           │   │   ├── keywordasidentifier02.sql
│       │           │   │   ├── keywordasidentifier03.sql
│       │           │   │   ├── keywordasidentifier04.sql
│       │           │   │   ├── keywordasidentifier05.sql
│       │           │   │   ├── keywordasidentifier06.sql
│       │           │   │   ├── least_greatest.sql
│       │           │   │   ├── lexer01.sql
│       │           │   │   ├── lexer02.sql
│       │           │   │   ├── lexer02.sql.tree
│       │           │   │   ├── lexer03.sql
│       │           │   │   ├── lexer04.sql
│       │           │   │   ├── lexer05.sql
│       │           │   │   ├── like01.sql
│       │           │   │   ├── lob-item.sql
│       │           │   │   ├── lob-item.sql.tree
│       │           │   │   ├── materialized_views.sql
│       │           │   │   ├── max_001.sql
│       │           │   │   ├── merge01.sql
│       │           │   │   ├── merge02.sql
│       │           │   │   ├── merge03.sql
│       │           │   │   ├── merge04.sql
│       │           │   │   ├── merge05.sql
│       │           │   │   ├── model_clause01.sql
│       │           │   │   ├── model_clause02.sql
│       │           │   │   ├── model_clause03.sql
│       │           │   │   ├── model_clause04.sql
│       │           │   │   ├── model_clause05.sql
│       │           │   │   ├── multiset_operators.sql
│       │           │   │   ├── noaudit_statement.sql
│       │           │   │   ├── numbers01.sql
│       │           │   │   ├── nvl_001.sql
│       │           │   │   ├── object_access01.sql
│       │           │   │   ├── object_access_expressions.sql
│       │           │   │   ├── offset_clause.sql
│       │           │   │   ├── order_by01.sql
│       │           │   │   ├── order_by02.sql
│       │           │   │   ├── order_by03.sql
│       │           │   │   ├── order_by04.sql
│       │           │   │   ├── order_by05.sql
│       │           │   │   ├── order_by06.sql
│       │           │   │   ├── package_body.sql
│       │           │   │   ├── package_body.sql.tree
│       │           │   │   ├── packagebody_function.sql
│       │           │   │   ├── packagespec_function.sql
│       │           │   │   ├── partitioned_tables.sql
│       │           │   │   ├── pivot01.sql
│       │           │   │   ├── pivot02.sql
│       │           │   │   ├── pivot03.sql
│       │           │   │   ├── pivot04.sql
│       │           │   │   ├── pivot05.sql
│       │           │   │   ├── pivot06.sql
│       │           │   │   ├── pivot07.sql
│       │           │   │   ├── pivot08.sql
│       │           │   │   ├── pivot09.sql
│       │           │   │   ├── pivot10.sql
│       │           │   │   ├── pivot11.sql
│       │           │   │   ├── pivot12.sql
│       │           │   │   ├── pivot13.sql
│       │           │   │   ├── purge_statement.sql
│       │           │   │   ├── query_factoring01.sql
│       │           │   │   ├── query_factoring02.sql
│       │           │   │   ├── query_factoring03.sql
│       │           │   │   ├── query_factoring04.sql
│       │           │   │   ├── query_factoring05.sql
│       │           │   │   ├── query_factoring06.sql
│       │           │   │   ├── query_factoring08.sql
│       │           │   │   ├── query_factoring09.sql
│       │           │   │   ├── query_factoring10.sql
│       │           │   │   ├── query_factoring11.sql
│       │           │   │   ├── quntitative_expression.sql
│       │           │   │   ├── rename_objects.sql
│       │           │   │   ├── revoke_statement.sql
│       │           │   │   ├── round_001.sql
│       │           │   │   ├── round_decode_001.sql
│       │           │   │   ├── row_number_001.sql
│       │           │   │   ├── sample01.sql
│       │           │   │   ├── select_all_some_any.sql
│       │           │   │   ├── select_analytic_view.sql
│       │           │   │   ├── select_cte.sql
│       │           │   │   ├── select_dense_rank.sql
│       │           │   │   ├── select_flashback_query.sql
│       │           │   │   ├── select_hierarchical_query.sql
│       │           │   │   ├── select_package_function.sql
│       │           │   │   ├── select_time.sql
│       │           │   │   ├── select_without_from.sql
│       │           │   │   ├── seq_token_error.sql
│       │           │   │   ├── simple02.sql
│       │           │   │   ├── simple03.sql
│       │           │   │   ├── simple04.sql
│       │           │   │   ├── simple05.sql
│       │           │   │   ├── simple06.sql
│       │           │   │   ├── simple07.sql
│       │           │   │   ├── simple08.sql
│       │           │   │   ├── simple09.sql
│       │           │   │   ├── simple10.sql
│       │           │   │   ├── simple11.sql
│       │           │   │   ├── simple12.sql
│       │           │   │   ├── simple13.sql
│       │           │   │   ├── single_statement.sql
│       │           │   │   ├── string01.sql
│       │           │   │   ├── timing.sql
│       │           │   │   ├── timing.sql.tree
│       │           │   │   ├── to_binary_double.sql
│       │           │   │   ├── to_binary_float.sql
│       │           │   │   ├── to_char.sql
│       │           │   │   ├── to_char_001.sql
│       │           │   │   ├── to_char_002.sql
│       │           │   │   ├── to_date.sql
│       │           │   │   ├── to_dsinterval.sql
│       │           │   │   ├── to_number.sql
│       │           │   │   ├── to_timestamp.sql
│       │           │   │   ├── to_timestamp_tz.sql
│       │           │   │   ├── to_yminterval.sql
│       │           │   │   ├── truncate_cluster.sql
│       │           │   │   ├── truncate_table.sql
│       │           │   │   ├── unified.sql
│       │           │   │   ├── union01.sql
│       │           │   │   ├── union02.sql
│       │           │   │   ├── union03.sql
│       │           │   │   ├── union04.sql
│       │           │   │   ├── union05.sql
│       │           │   │   ├── union06.sql
│       │           │   │   ├── union07.sql
│       │           │   │   ├── union08.sql
│       │           │   │   ├── union09.sql
│       │           │   │   ├── union10.sql
│       │           │   │   ├── validate_conversion.sql
│       │           │   │   ├── values_clause.sql
│       │           │   │   ├── varray_type_def.sql
│       │           │   │   ├── views.sql
│       │           │   │   ├── whenever_sqlerror.sql
│       │           │   │   ├── whenever_sqlerror.sql.tree
│       │           │   │   ├── xml_function.sql
│       │           │   │   ├── xmltable01.sql
│       │           │   │   ├── xmltable02.sql
│       │           │   │   └── xmltable03.sql
│       │           │   ├── examples-sql-script/
│       │           │   │   ├── anonymous_block.sql
│       │           │   │   ├── cursor-attributes-with-spaces.sql
│       │           │   │   ├── declare_procedure_no_args.sql
│       │           │   │   ├── delete_as_regular_id.pkb
│       │           │   │   ├── deterministic_function.pks
│       │           │   │   ├── e_in_out_parameters.pks
│       │           │   │   ├── grants.sql
│       │           │   │   ├── green_run.sql
│       │           │   │   ├── green_table.sql
│       │           │   │   ├── green_tools.pkb
│       │           │   │   ├── green_tools.pks
│       │           │   │   ├── green_tools_review.sql
│       │           │   │   ├── in_out_parameters.pks
│       │           │   │   ├── key_word_as_param.pkb
│       │           │   │   ├── logical_expressions.sql
│       │           │   │   ├── package_body_null.pkb
│       │           │   │   ├── package_with_cursor.sql
│       │           │   │   ├── package_with_schema.pkb
│       │           │   │   ├── package_with_schema.pks
│       │           │   │   ├── package_with_simple_init_block.pkb
│       │           │   │   ├── pipe_row.pkb
│       │           │   │   ├── pltables.sql
│       │           │   │   ├── pragma_autonomous_transaction.sql
│       │           │   │   ├── pragma_exception_init.pkb
│       │           │   │   ├── pragma_exception_init.pks
│       │           │   │   ├── proc_over_dblink_as_nvl_param.pkb
│       │           │   │   ├── procedure_with_cursor_and_limit.sql
│       │           │   │   ├── result_cache_function.pks
│       │           │   │   ├── select_into.sql
│       │           │   │   ├── show_errors.pks
│       │           │   │   ├── substr_as_regular_id.pkb
│       │           │   │   ├── synonym_with_database_link.sql
│       │           │   │   ├── trigger_examples.sql
│       │           │   │   ├── type_body_elements.sql
│       │           │   │   ├── user.sql
│       │           │   │   └── with_clause_in_exists_block_in_procedure.sql
│       │           │   ├── hw-examples/
│       │           │   │   ├── alter_operator.sql
│       │           │   │   ├── alter_outline.sql
│       │           │   │   ├── drop_operator.sql
│       │           │   │   ├── keywordasidentifier02.sql
│       │           │   │   ├── lexer01.sql
│       │           │   │   ├── lexer02.sql
│       │           │   │   ├── lexer03.sql
│       │           │   │   ├── lexer04.sql
│       │           │   │   ├── lexer05.sql
│       │           │   │   ├── simple11.sql
│       │           │   │   └── truncate_table.sql
│       │           │   └── long-running/
│       │           │       ├── aggregate01.sql
│       │           │       ├── cast_multiset07.sql
│       │           │       ├── datetime02.sql
│       │           │       ├── order_by07.sql
│       │           │       └── query_factoring07.sql
│       │           └── oracle-database_23/
│       │               ├── adjsn/
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-0.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-1.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-2.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-3.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-4.sql
│       │               │   ├── adding-and-dropping-virtual-columns-json-fields-based-data-guide-information-5.sql
│       │               │   ├── change-triggers-data-guide-enabled-search-index-0.sql
│       │               │   ├── change-triggers-data-guide-enabled-search-index-1.sql
│       │               │   ├── columns-clause-sql-json-function-json_table-3.sql
│       │               │   ├── creating-b-tree-indexes-json_value-0.sql
│       │               │   ├── creating-b-tree-indexes-json_value-1.sql
│       │               │   ├── creating-b-tree-indexes-json_value-2.sql
│       │               │   ├── creating-b-tree-indexes-json_value-3.sql
│       │               │   ├── creating-bitmap-indexes-json_value-0.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-0.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-1.sql
│       │               │   ├── creating-multivalue-function-based-indexes-json_exists-2.sql
│       │               │   ├── creating-view-json-data-based-data-guide-information-2.sql
│       │               │   ├── creating-view-json-data-based-data-guide-information-3.sql
│       │               │   ├── creating-view-json-data-using-json_table-0.sql
│       │               │   ├── creating-view-json-data-using-json_table-1.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-0.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-1.sql
│       │               │   ├── data-type-considerations-json_value-indexing-and-querying-2.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-0.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-1.sql
│       │               │   ├── error-clause-sql-query-functions-and-conditions-3.sql
│       │               │   ├── handling-dependent-objects-0.sql
│       │               │   ├── handling-dependent-objects-1.sql
│       │               │   ├── handling-dependent-objects-2.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-0.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-1.sql
│       │               │   ├── handling-input-values-sql-json-generation-functions-2.sql
│       │               │   ├── indexing-multiple-json-fields-using-composite-b-tree-index-1.sql
│       │               │   ├── json-collections-2.sql
│       │               │   ├── json-collections-3.sql
│       │               │   ├── json-collections-4.sql
│       │               │   ├── json-data-type-2.sql
│       │               │   ├── json-data-type-3.sql
│       │               │   ├── json-data-type-4.sql
│       │               │   ├── json-data-type-5.sql
│       │               │   ├── json-data-type-6.sql
│       │               │   ├── json-data-type-7.sql
│       │               │   ├── json-data-type-8.sql
│       │               │   ├── json-data-type-9.sql
│       │               │   ├── json-query-rewrite-use-materialized-view-json_table-0.sql
│       │               │   ├── json-query-rewrite-use-materialized-view-json_table-2.sql
│       │               │   ├── json-schema-1.sql
│       │               │   ├── json-schema-10.sql
│       │               │   ├── json-schema-11.sql
│       │               │   ├── json-schema-13.sql
│       │               │   ├── json-schema-14.sql
│       │               │   ├── json-schema-16.sql
│       │               │   ├── json-schema-18.sql
│       │               │   ├── json-schema-2.sql
│       │               │   ├── json-schema-22.sql
│       │               │   ├── json-schema-24.sql
│       │               │   ├── json-schema-25.sql
│       │               │   ├── json-schema-3.sql
│       │               │   ├── json-schema-4.sql
│       │               │   ├── json-schema-5.sql
│       │               │   ├── json-schema-7.sql
│       │               │   ├── json-schema-9.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-0.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-1.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-10.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-2.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-3.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-5.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-6.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-7.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-8.sql
│       │               │   ├── json-search-index-ad-hoc-queries-and-full-text-search-9.sql
│       │               │   ├── json_table-generalizes-sql-json-query-functions-and-conditions-0.sql
│       │               │   ├── json_table-generalizes-sql-json-query-functions-and-conditions-1.sql
│       │               │   ├── json_transform-operation-handlers-0.sql
│       │               │   ├── json_transform-operation-handlers-1.sql
│       │               │   ├── json_transform-operation-handlers-2.sql
│       │               │   ├── json_transform-operation-handlers-3.sql
│       │               │   ├── json_transform-operation-handlers-4.sql
│       │               │   ├── json_transform-operation-handlers-5.sql
│       │               │   ├── json_transform-operation-handlers-6.sql
│       │               │   ├── json_transform-operator-0.sql
│       │               │   ├── json_transform-operator-append-0.sql
│       │               │   ├── json_transform-operator-append-2.sql
│       │               │   ├── json_transform-operator-append-3.sql
│       │               │   ├── json_transform-operator-append-5.sql
│       │               │   ├── json_transform-operator-copy-0.sql
│       │               │   ├── json_transform-operator-insert-0.sql
│       │               │   ├── json_transform-operator-insert-1.sql
│       │               │   ├── json_transform-operator-insert-2.sql
│       │               │   ├── json_transform-operator-intersect-0.sql
│       │               │   ├── json_transform-operator-intersect-1.sql
│       │               │   ├── json_transform-operator-keep-0.sql
│       │               │   ├── json_transform-operator-keep-1.sql
│       │               │   ├── json_transform-operator-merge-0.sql
│       │               │   ├── json_transform-operator-nested-path-3.sql
│       │               │   ├── json_transform-operator-prepend-0.sql
│       │               │   ├── json_transform-operator-prepend-1.sql
│       │               │   ├── json_transform-operator-prepend-3.sql
│       │               │   ├── json_transform-operator-remove-0.sql
│       │               │   ├── json_transform-operator-rename-0.sql
│       │               │   ├── json_transform-operator-replace-0.sql
│       │               │   ├── json_transform-operator-set-0.sql
│       │               │   ├── json_transform-operator-set-1.sql
│       │               │   ├── json_transform-operator-set-2.sql
│       │               │   ├── json_transform-operator-set-4.sql
│       │               │   ├── json_transform-operator-set-5.sql
│       │               │   ├── json_transform-operator-set-6.sql
│       │               │   ├── json_transform-operator-set-7.sql
│       │               │   ├── json_transform-operator-sort-0.sql
│       │               │   ├── json_transform-operator-sort-3.sql
│       │               │   ├── json_transform-operator-union-0.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-0.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-1.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-2.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-4.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-5.sql
│       │               │   ├── json_transform-right-hand-side-rhs-path-expressions-9.sql
│       │               │   ├── loading-external-json-data-0.sql
│       │               │   ├── loading-external-json-data-1.sql
│       │               │   ├── loading-external-json-data-2.sql
│       │               │   ├── loading-external-json-data-3.sql
│       │               │   ├── loading-external-json-data-4.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-0.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-1.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-2.sql
│       │               │   ├── mismatch-clause-sql-json-query-functions-3.sql
│       │               │   ├── multiple-data-guides-document-set-0.sql
│       │               │   ├── multiple-data-guides-document-set-1.sql
│       │               │   ├── multiple-data-guides-document-set-2.sql
│       │               │   ├── oracle-sql-condition-json_textcontains-0.sql
│       │               │   ├── oracle-sql-condition-json_textcontains-1.sql
│       │               │   ├── oracle-sql-function-json_mergepatch-2.sql
│       │               │   ├── oracle-sql-function-json_mergepatch-3.sql
│       │               │   ├── oracle-sql-function-json_transform-0.sql
│       │               │   ├── oracle-sql-function-json_transform-1.sql
│       │               │   ├── oracle-sql-function-json_transform-4.sql
│       │               │   ├── overview-json-generation-0.sql
│       │               │   ├── overview-json-generation-2.sql
│       │               │   ├── overview-json-generation-3.sql
│       │               │   ├── overview-json-oracle-database-0.sql
│       │               │   ├── overview-memory-json-data-0.sql
│       │               │   ├── partitioning-json-data-0.sql
│       │               │   ├── partitioning-json-data-1.sql
│       │               │   ├── passing-clause-sql-functions-and-conditions-0.sql
│       │               │   ├── passing-clause-sql-functions-and-conditions-1.sql
│       │               │   ├── performing-migration-check-1.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-0.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-1.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-2.sql
│       │               │   ├── persistent-data-guide-information-part-json-search-index-3.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-0.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-1.sql
│       │               │   ├── populate-json-type-column-querying-textual-json-2.sql
│       │               │   ├── populating-json-data-memory-column-store-0.sql
│       │               │   ├── populating-json-data-memory-column-store-1.sql
│       │               │   ├── querying-data-guide-0.sql
│       │               │   ├── querying-data-guide-1.sql
│       │               │   ├── read-only-views-based-json-generation-0.sql
│       │               │   ├── read-only-views-based-json-generation-1.sql
│       │               │   ├── read-only-views-based-json-generation-2.sql
│       │               │   ├── simple-dot-notation-access-json-data-0.sql
│       │               │   ├── simple-dot-notation-access-json-data-1.sql
│       │               │   ├── simple-dot-notation-access-json-data-2.sql
│       │               │   ├── simple-dot-notation-access-json-data-3.sql
│       │               │   ├── simple-dot-notation-access-json-data-4.sql
│       │               │   ├── simple-dot-notation-access-json-data-5.sql
│       │               │   ├── simple-dot-notation-access-json-data-6.sql
│       │               │   ├── simple-dot-notation-access-json-data-7.sql
│       │               │   ├── simple-dot-notation-access-json-data-8.sql
│       │               │   ├── specifying-preferred-name-field-column-0.sql
│       │               │   ├── sql-json-condition-json_exists-0.sql
│       │               │   ├── sql-json-condition-json_exists-1.sql
│       │               │   ├── sql-json-conditions-is-json-and-is-not-json-6.sql
│       │               │   ├── sql-json-function-json_array-0.sql
│       │               │   ├── sql-json-function-json_array-1.sql
│       │               │   ├── sql-json-function-json_array-3.sql
│       │               │   ├── sql-json-function-json_arrayagg-0.sql
│       │               │   ├── sql-json-function-json_arrayagg-1.sql
│       │               │   ├── sql-json-function-json_object-0.sql
│       │               │   ├── sql-json-function-json_object-10.sql
│       │               │   ├── sql-json-function-json_object-11.sql
│       │               │   ├── sql-json-function-json_object-13.sql
│       │               │   ├── sql-json-function-json_object-14.sql
│       │               │   ├── sql-json-function-json_object-16.sql
│       │               │   ├── sql-json-function-json_object-18.sql
│       │               │   ├── sql-json-function-json_object-19.sql
│       │               │   ├── sql-json-function-json_object-21.sql
│       │               │   ├── sql-json-function-json_object-7.sql
│       │               │   ├── sql-json-function-json_object-8.sql
│       │               │   ├── sql-json-function-json_objectagg-0.sql
│       │               │   ├── sql-json-function-json_query-0.sql
│       │               │   ├── sql-json-function-json_query-1.sql
│       │               │   ├── sql-json-function-json_table-2.sql
│       │               │   ├── sql-json-function-json_table-3.sql
│       │               │   ├── sql-json-path-expression-item-methods-0.sql
│       │               │   ├── sql-json-path-expression-item-methods-1.sql
│       │               │   ├── sql-json-path-expression-item-methods-2.sql
│       │               │   ├── sql-json-path-expression-item-methods-3.sql
│       │               │   ├── sql-json-path-expression-item-methods-4.sql
│       │               │   ├── sql-json-path-expression-item-methods-5.sql
│       │               │   ├── sql-json-path-expression-item-methods-6.sql
│       │               │   ├── sql-json-path-expression-syntax-2.sql
│       │               │   ├── sql-json-path-expression-syntax-4.sql
│       │               │   ├── sql-json-path-expression-syntax-7.sql
│       │               │   ├── sql-nested-clause-instead-json_table-2.sql
│       │               │   ├── sql-nested-clause-instead-json_table-4.sql
│       │               │   ├── tables-json-columns-0.sql
│       │               │   ├── tables-json-columns-1.sql
│       │               │   ├── tables-json-columns-2.sql
│       │               │   ├── tables-json-columns-3.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-0.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-1.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-2.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-3.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-4.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-5.sql
│       │               │   ├── type-clause-sql-functions-and-conditions-6.sql
│       │               │   ├── types-filter-condition-comparisons-0.sql
│       │               │   ├── use-bind-variables-json_transform-0.sql
│       │               │   ├── use-bind-variables-json_transform-1.sql
│       │               │   ├── use-bind-variables-json_transform-2.sql
│       │               │   ├── using-filters-json_exists-0.sql
│       │               │   ├── using-filters-json_exists-1.sql
│       │               │   ├── using-filters-json_exists-2.sql
│       │               │   ├── using-filters-json_exists-3.sql
│       │               │   ├── using-filters-json_exists-4.sql
│       │               │   ├── using-geojson-geographic-data-0.sql
│       │               │   ├── using-geojson-geographic-data-1.sql
│       │               │   ├── using-geojson-geographic-data-3.sql
│       │               │   ├── using-geojson-geographic-data-5.sql
│       │               │   ├── using-geojson-geographic-data-6.sql
│       │               │   ├── using-json_table-json-arrays-0.sql
│       │               │   ├── using-json_table-json-arrays-1.sql
│       │               │   ├── using-json_table-json-arrays-2.sql
│       │               │   ├── using-json_table-json-arrays-4.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-0.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-1.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-2.sql
│       │               │   ├── using-json_value-function-based-index-json_exists-queries-3.sql
│       │               │   ├── using-json_value-function-based-index-json_table-queries-0.sql
│       │               │   ├── using-multivalue-function-based-index-0.sql
│       │               │   ├── using-multivalue-function-based-index-1.sql
│       │               │   ├── using-multivalue-function-based-index-2.sql
│       │               │   ├── using-multivalue-function-based-index-3.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-0.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-1.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-2.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-3.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-4.sql
│       │               │   ├── using-online-redefinition-migrate-json-data-type-7.sql
│       │               │   ├── using-oracle-data-pump-migrate-json-data-type-0.sql
│       │               │   ├── using-pl-sql-object-types-json-0.sql
│       │               │   ├── using-pl-sql-object-types-json-1.sql
│       │               │   ├── using-pl-sql-object-types-json-2.sql
│       │               │   ├── using-sql-json-function-json_value-boolean-json-value-0.sql
│       │               │   ├── using-sql-json-function-json_value-boolean-json-value-1.sql
│       │               │   └── using-sql-json-function-json_value-boolean-json-value-3.sql
│       │               ├── lnpls/
│       │               │   ├── ALTER-FUNCTION-statement-0.sql
│       │               │   ├── ALTER-LIBRARY-statement-0.sql
│       │               │   ├── ALTER-PACKAGE-statement-0.sql
│       │               │   ├── ALTER-PACKAGE-statement-1.sql
│       │               │   ├── ALTER-PROCEDURE-statement-0.sql
│       │               │   ├── ALTER-TRIGGER-statement-0.sql
│       │               │   ├── ALTER-TRIGGER-statement-1.sql
│       │               │   ├── ALTER-TYPE-statement-0.sql
│       │               │   ├── ALTER-TYPE-statement-1.sql
│       │               │   ├── ALTER-TYPE-statement-10.sql
│       │               │   ├── ALTER-TYPE-statement-11.sql
│       │               │   ├── ALTER-TYPE-statement-12.sql
│       │               │   ├── ALTER-TYPE-statement-13.sql
│       │               │   ├── ALTER-TYPE-statement-14.sql
│       │               │   ├── ALTER-TYPE-statement-2.sql
│       │               │   ├── ALTER-TYPE-statement-3.sql
│       │               │   ├── ALTER-TYPE-statement-4.sql
│       │               │   ├── ALTER-TYPE-statement-5.sql
│       │               │   ├── ALTER-TYPE-statement-6.sql
│       │               │   ├── ALTER-TYPE-statement-7.sql
│       │               │   ├── ALTER-TYPE-statement-8.sql
│       │               │   ├── ALTER-TYPE-statement-9.sql
│       │               │   ├── CONTINUE-statement-0.sql
│       │               │   ├── CONTINUE-statement-2.sql
│       │               │   ├── COVERAGE-pragma-3.sql
│       │               │   ├── CREATE-FUNCTION-statement-0.sql
│       │               │   ├── CREATE-FUNCTION-statement-1.sql
│       │               │   ├── CREATE-FUNCTION-statement-2.sql
│       │               │   ├── CREATE-FUNCTION-statement-3.sql
│       │               │   ├── CREATE-FUNCTION-statement-4.sql
│       │               │   ├── CREATE-FUNCTION-statement-5.sql
│       │               │   ├── CREATE-FUNCTION-statement-6.sql
│       │               │   ├── CREATE-FUNCTION-statement-7.sql
│       │               │   ├── CREATE-FUNCTION-statement-8.sql
│       │               │   ├── CREATE-LIBRARY-statement-0.sql
│       │               │   ├── CREATE-LIBRARY-statement-1.sql
│       │               │   ├── CREATE-LIBRARY-statement-2.sql
│       │               │   ├── CREATE-LIBRARY-statement-3.sql
│       │               │   ├── CREATE-LIBRARY-statement-4.sql
│       │               │   ├── CREATE-PACKAGE-BODY-statement-0.sql
│       │               │   ├── CREATE-PACKAGE-statement-0.sql
│       │               │   ├── CREATE-PROCEDURE-statement-0.sql
│       │               │   ├── CREATE-PROCEDURE-statement-1.sql
│       │               │   ├── CREATE-PROCEDURE-statement-2.sql
│       │               │   ├── CREATE-PROCEDURE-statement-3.sql
│       │               │   ├── CREATE-PROCEDURE-statement-5.sql
│       │               │   ├── CREATE-PROCEDURE-statement-6.sql
│       │               │   ├── CREATE-TYPE-statement-0.sql
│       │               │   ├── CREATE-TYPE-statement-1.sql
│       │               │   ├── CREATE-TYPE-statement-10.sql
│       │               │   ├── CREATE-TYPE-statement-11.sql
│       │               │   ├── CREATE-TYPE-statement-12.sql
│       │               │   ├── CREATE-TYPE-statement-13.sql
│       │               │   ├── CREATE-TYPE-statement-15.sql
│       │               │   ├── CREATE-TYPE-statement-16.sql
│       │               │   ├── CREATE-TYPE-statement-17.sql
│       │               │   ├── CREATE-TYPE-statement-2.sql
│       │               │   ├── CREATE-TYPE-statement-3.sql
│       │               │   ├── CREATE-TYPE-statement-4.sql
│       │               │   ├── CREATE-TYPE-statement-6.sql
│       │               │   ├── CREATE-TYPE-statement-7.sql
│       │               │   ├── CREATE-TYPE-statement-8.sql
│       │               │   ├── CREATE-TYPE-statement-9.sql
│       │               │   ├── DEPRECATE-pragma-0.sql
│       │               │   ├── DEPRECATE-pragma-1.sql
│       │               │   ├── DEPRECATE-pragma-10.sql
│       │               │   ├── DEPRECATE-pragma-13.sql
│       │               │   ├── DEPRECATE-pragma-18.sql
│       │               │   ├── DEPRECATE-pragma-3.sql
│       │               │   ├── DEPRECATE-pragma-32.sql
│       │               │   ├── DEPRECATE-pragma-34.sql
│       │               │   ├── DEPRECATE-pragma-6.sql
│       │               │   ├── DEPRECATE-pragma-8.sql
│       │               │   ├── DROP-FUNCTION-statement-0.sql
│       │               │   ├── DROP-LIBRARY-statement-0.sql
│       │               │   ├── DROP-PACKAGE-statement-0.sql
│       │               │   ├── DROP-PROCEDURE-statement-0.sql
│       │               │   ├── DROP-TRIGGER-statement-0.sql
│       │               │   ├── DROP-TYPE-BODY-statement-0.sql
│       │               │   ├── DROP-TYPE-statement-0.sql
│       │               │   ├── EXECUTE-IMMEDIATE-statement-0.sql
│       │               │   ├── EXIT-statement-0.sql
│       │               │   ├── EXIT-statement-2.sql
│       │               │   ├── FOR-LOOP-statement-0.sql
│       │               │   ├── FOR-LOOP-statement-1.sql
│       │               │   ├── FOR-LOOP-statement-2.sql
│       │               │   ├── GOTO-statement-0.sql
│       │               │   ├── GOTO-statement-4.sql
│       │               │   ├── GOTO-statement-5.sql
│       │               │   ├── GOTO-statement-7.sql
│       │               │   ├── PIPELINED-clause-1.sql
│       │               │   ├── SQLERRM-function-1.sql
│       │               │   ├── SQLERRM-function-4.sql
│       │               │   ├── SQL_MACRO-clause-1.sql
│       │               │   ├── SQL_MACRO-clause-11.sql
│       │               │   ├── SQL_MACRO-clause-13.sql
│       │               │   ├── SQL_MACRO-clause-14.sql
│       │               │   ├── SQL_MACRO-clause-16.sql
│       │               │   ├── SQL_MACRO-clause-17.sql
│       │               │   ├── SQL_MACRO-clause-19.sql
│       │               │   ├── SQL_MACRO-clause-2.sql
│       │               │   ├── SQL_MACRO-clause-20.sql
│       │               │   ├── SQL_MACRO-clause-22.sql
│       │               │   ├── SQL_MACRO-clause-24.sql
│       │               │   ├── SQL_MACRO-clause-25.sql
│       │               │   ├── SQL_MACRO-clause-27.sql
│       │               │   ├── SQL_MACRO-clause-29.sql
│       │               │   ├── SQL_MACRO-clause-3.sql
│       │               │   ├── SQL_MACRO-clause-31.sql
│       │               │   ├── SQL_MACRO-clause-4.sql
│       │               │   ├── SQL_MACRO-clause-5.sql
│       │               │   ├── SQL_MACRO-clause-6.sql
│       │               │   ├── SQL_MACRO-clause-7.sql
│       │               │   ├── SQL_MACRO-clause-9.sql
│       │               │   ├── Supresses-warning-pragma-6009-0.sql
│       │               │   ├── Supresses-warning-pragma-6009-1.sql
│       │               │   ├── Supresses-warning-pragma-6009-10.sql
│       │               │   ├── Supresses-warning-pragma-6009-11.sql
│       │               │   ├── Supresses-warning-pragma-6009-2.sql
│       │               │   ├── Supresses-warning-pragma-6009-3.sql
│       │               │   ├── Supresses-warning-pragma-6009-4.sql
│       │               │   ├── Supresses-warning-pragma-6009-5.sql
│       │               │   ├── Supresses-warning-pragma-6009-6.sql
│       │               │   ├── Supresses-warning-pragma-6009-7.sql
│       │               │   ├── Supresses-warning-pragma-6009-8.sql
│       │               │   ├── Supresses-warning-pragma-6009-9.sql
│       │               │   ├── WHILE-LOOP-statement-0.sql
│       │               │   ├── assigning-values-collection-variables-0.sql
│       │               │   ├── assigning-values-collection-variables-2.sql
│       │               │   ├── assigning-values-collection-variables-4.sql
│       │               │   ├── assigning-values-record-variables-1.sql
│       │               │   ├── assigning-values-record-variables-10.sql
│       │               │   ├── assigning-values-record-variables-12.sql
│       │               │   ├── assigning-values-record-variables-13.sql
│       │               │   ├── assigning-values-record-variables-15.sql
│       │               │   ├── assigning-values-record-variables-17.sql
│       │               │   ├── assigning-values-record-variables-3.sql
│       │               │   ├── assigning-values-record-variables-5.sql
│       │               │   ├── assigning-values-record-variables-7.sql
│       │               │   ├── assigning-values-record-variables-9.sql
│       │               │   ├── assigning-values-variables-1.sql
│       │               │   ├── assigning-values-variables-3.sql
│       │               │   ├── assigning-values-variables-5.sql
│       │               │   ├── assigning-values-variables-7.sql
│       │               │   ├── autonomous-transactions-0.sql
│       │               │   ├── autonomous-transactions-1.sql
│       │               │   ├── autonomous-transactions-2.sql
│       │               │   ├── autonomous-transactions-3.sql
│       │               │   ├── autonomous-transactions-4.sql
│       │               │   ├── autonomous-transactions-6.sql
│       │               │   ├── autonomous-transactions-7.sql
│       │               │   ├── autonomous-transactions-9.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-0.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-10.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-2.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-3.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-4.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-5.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-6.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-7.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-8.sql
│       │               │   ├── avoiding-inner-capture-select-and-dml-statements-9.sql
│       │               │   ├── basic-LOOP-statement-0.sql
│       │               │   ├── basic-LOOP-statement-2.sql
│       │               │   ├── bulk-sql-and-bulk-binding-0.sql
│       │               │   ├── bulk-sql-and-bulk-binding-1.sql
│       │               │   ├── bulk-sql-and-bulk-binding-10.sql
│       │               │   ├── bulk-sql-and-bulk-binding-12.sql
│       │               │   ├── bulk-sql-and-bulk-binding-14.sql
│       │               │   ├── bulk-sql-and-bulk-binding-15.sql
│       │               │   ├── bulk-sql-and-bulk-binding-17.sql
│       │               │   ├── bulk-sql-and-bulk-binding-19.sql
│       │               │   ├── bulk-sql-and-bulk-binding-2.sql
│       │               │   ├── bulk-sql-and-bulk-binding-22.sql
│       │               │   ├── bulk-sql-and-bulk-binding-24.sql
│       │               │   ├── bulk-sql-and-bulk-binding-26.sql
│       │               │   ├── bulk-sql-and-bulk-binding-28.sql
│       │               │   ├── bulk-sql-and-bulk-binding-3.sql
│       │               │   ├── bulk-sql-and-bulk-binding-30.sql
│       │               │   ├── bulk-sql-and-bulk-binding-32.sql
│       │               │   ├── bulk-sql-and-bulk-binding-34.sql
│       │               │   ├── bulk-sql-and-bulk-binding-37.sql
│       │               │   ├── bulk-sql-and-bulk-binding-38.sql
│       │               │   ├── bulk-sql-and-bulk-binding-40.sql
│       │               │   ├── bulk-sql-and-bulk-binding-42.sql
│       │               │   ├── bulk-sql-and-bulk-binding-43.sql
│       │               │   ├── bulk-sql-and-bulk-binding-45.sql
│       │               │   ├── bulk-sql-and-bulk-binding-47.sql
│       │               │   ├── bulk-sql-and-bulk-binding-48.sql
│       │               │   ├── bulk-sql-and-bulk-binding-5.sql
│       │               │   ├── bulk-sql-and-bulk-binding-50.sql
│       │               │   ├── bulk-sql-and-bulk-binding-52.sql
│       │               │   ├── bulk-sql-and-bulk-binding-53.sql
│       │               │   ├── bulk-sql-and-bulk-binding-55.sql
│       │               │   ├── bulk-sql-and-bulk-binding-57.sql
│       │               │   ├── bulk-sql-and-bulk-binding-59.sql
│       │               │   ├── bulk-sql-and-bulk-binding-6.sql
│       │               │   ├── bulk-sql-and-bulk-binding-61.sql
│       │               │   ├── bulk-sql-and-bulk-binding-63.sql
│       │               │   ├── bulk-sql-and-bulk-binding-65.sql
│       │               │   ├── bulk-sql-and-bulk-binding-67.sql
│       │               │   ├── bulk-sql-and-bulk-binding-8.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-0.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-1.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-10.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-12.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-13.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-14.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-16.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-17.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-18.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-2.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-21.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-23.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-3.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-4.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-6.sql
│       │               │   ├── chaining-pipelined-table-functions-multiple-transformations-8.sql
│       │               │   ├── collection-comparisons-0.sql
│       │               │   ├── collection-comparisons-2.sql
│       │               │   ├── collection-comparisons-4.sql
│       │               │   ├── collection-methods-1.sql
│       │               │   ├── collection-methods-11.sql
│       │               │   ├── collection-methods-13.sql
│       │               │   ├── collection-methods-15.sql
│       │               │   ├── collection-methods-17.sql
│       │               │   ├── collection-methods-19.sql
│       │               │   ├── collection-methods-21.sql
│       │               │   ├── collection-methods-23.sql
│       │               │   ├── collection-methods-25.sql
│       │               │   ├── collection-methods-27.sql
│       │               │   ├── collection-methods-29.sql
│       │               │   ├── collection-methods-3.sql
│       │               │   ├── collection-methods-5.sql
│       │               │   ├── collection-methods-7.sql
│       │               │   ├── collection-methods-9.sql
│       │               │   ├── collection-types-defined-package-specifications-0.sql
│       │               │   ├── collection-types-defined-package-specifications-2.sql
│       │               │   ├── column-name-precedence-0.sql
│       │               │   ├── column-name-precedence-2.sql
│       │               │   ├── column-name-precedence-4.sql
│       │               │   ├── column-name-precedence-6.sql
│       │               │   ├── compile-time-warnings-1.sql
│       │               │   ├── compile-time-warnings-11.sql
│       │               │   ├── compile-time-warnings-13.sql
│       │               │   ├── compile-time-warnings-2.sql
│       │               │   ├── compile-time-warnings-3.sql
│       │               │   ├── compile-time-warnings-4.sql
│       │               │   ├── compile-time-warnings-5.sql
│       │               │   ├── compile-time-warnings-6.sql
│       │               │   ├── compile-time-warnings-7.sql
│       │               │   ├── compile-time-warnings-8.sql
│       │               │   ├── compile-time-warnings-9.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-0.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-1.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-2.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-3.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-4.sql
│       │               │   ├── compiling-pl-sql-units-native-execution-5.sql
│       │               │   ├── conditional-compilation1-10.sql
│       │               │   ├── conditional-compilation1-12.sql
│       │               │   ├── conditional-compilation1-13.sql
│       │               │   ├── conditional-compilation1-14.sql
│       │               │   ├── conditional-compilation1-18.sql
│       │               │   ├── conditional-compilation1-20.sql
│       │               │   ├── conditional-compilation1-21.sql
│       │               │   ├── conditional-compilation1-23.sql
│       │               │   ├── conditional-compilation1-25.sql
│       │               │   ├── conditional-selection-statements-10.sql
│       │               │   ├── conditional-selection-statements-14.sql
│       │               │   ├── conditional-selection-statements-16.sql
│       │               │   ├── conditional-selection-statements-19.sql
│       │               │   ├── conditional-selection-statements-21.sql
│       │               │   ├── conditional-selection-statements-24.sql
│       │               │   ├── conditional-selection-statements-26.sql
│       │               │   ├── conditional-selection-statements-5.sql
│       │               │   ├── conditional-selection-statements-8.sql
│       │               │   ├── continuing-execution-handling-exceptions-0.sql
│       │               │   ├── continuing-execution-handling-exceptions-2.sql
│       │               │   ├── correlation-names-and-pseudorecords-11.sql
│       │               │   ├── correlation-names-and-pseudorecords-13.sql
│       │               │   ├── correlation-names-and-pseudorecords-15.sql
│       │               │   ├── correlation-names-and-pseudorecords-16.sql
│       │               │   ├── correlation-names-and-pseudorecords-17.sql
│       │               │   ├── correlation-names-and-pseudorecords-19.sql
│       │               │   ├── correlation-names-and-pseudorecords-2.sql
│       │               │   ├── correlation-names-and-pseudorecords-20.sql
│       │               │   ├── correlation-names-and-pseudorecords-22.sql
│       │               │   ├── correlation-names-and-pseudorecords-3.sql
│       │               │   ├── correlation-names-and-pseudorecords-4.sql
│       │               │   ├── correlation-names-and-pseudorecords-6.sql
│       │               │   ├── correlation-names-and-pseudorecords-8.sql
│       │               │   ├── correlation-names-and-pseudorecords-9.sql
│       │               │   ├── cursor-expressions-1.sql
│       │               │   ├── cursor-variables-1.sql
│       │               │   ├── cursor-variables-10.sql
│       │               │   ├── cursor-variables-12.sql
│       │               │   ├── cursor-variables-14.sql
│       │               │   ├── cursor-variables-15.sql
│       │               │   ├── cursor-variables-16.sql
│       │               │   ├── cursor-variables-17.sql
│       │               │   ├── cursor-variables-18.sql
│       │               │   ├── cursor-variables-19.sql
│       │               │   ├── cursor-variables-2.sql
│       │               │   ├── cursor-variables-3.sql
│       │               │   ├── cursor-variables-5.sql
│       │               │   ├── cursor-variables-8.sql
│       │               │   ├── cursors-overview-0.sql
│       │               │   ├── cursors-overview-10.sql
│       │               │   ├── cursors-overview-12.sql
│       │               │   ├── cursors-overview-14.sql
│       │               │   ├── cursors-overview-16.sql
│       │               │   ├── cursors-overview-18.sql
│       │               │   ├── cursors-overview-2.sql
│       │               │   ├── cursors-overview-20.sql
│       │               │   ├── cursors-overview-22.sql
│       │               │   ├── cursors-overview-24.sql
│       │               │   ├── cursors-overview-25.sql
│       │               │   ├── cursors-overview-27.sql
│       │               │   ├── cursors-overview-29.sql
│       │               │   ├── cursors-overview-6.sql
│       │               │   ├── cursors-overview-7.sql
│       │               │   ├── cursors-overview-8.sql
│       │               │   ├── dbms_sql-package-1.sql
│       │               │   ├── dbms_sql-package-4.sql
│       │               │   ├── dbms_sql-package-6.sql
│       │               │   ├── dbms_sql-package-7.sql
│       │               │   ├── declarations-0.sql
│       │               │   ├── declarations-1.sql
│       │               │   ├── declarations-11.sql
│       │               │   ├── declarations-2.sql
│       │               │   ├── declarations-3.sql
│       │               │   ├── declarations-4.sql
│       │               │   ├── declarations-5.sql
│       │               │   ├── declarations-9.sql
│       │               │   ├── description-static-sql-0.sql
│       │               │   ├── description-static-sql-2.sql
│       │               │   ├── dml-triggers-0.sql
│       │               │   ├── dml-triggers-1.sql
│       │               │   ├── dml-triggers-10.sql
│       │               │   ├── dml-triggers-12.sql
│       │               │   ├── dml-triggers-13.sql
│       │               │   ├── dml-triggers-15.sql
│       │               │   ├── dml-triggers-17.sql
│       │               │   ├── dml-triggers-18.sql
│       │               │   ├── dml-triggers-2.sql
│       │               │   ├── dml-triggers-20.sql
│       │               │   ├── dml-triggers-23.sql
│       │               │   ├── dml-triggers-24.sql
│       │               │   ├── dml-triggers-25.sql
│       │               │   ├── dml-triggers-27.sql
│       │               │   ├── dml-triggers-28.sql
│       │               │   ├── dml-triggers-30.sql
│       │               │   ├── dml-triggers-32.sql
│       │               │   ├── dml-triggers-33.sql
│       │               │   ├── dml-triggers-34.sql
│       │               │   ├── dml-triggers-35.sql
│       │               │   ├── dml-triggers-36.sql
│       │               │   ├── dml-triggers-37.sql
│       │               │   ├── dml-triggers-38.sql
│       │               │   ├── dml-triggers-39.sql
│       │               │   ├── dml-triggers-4.sql
│       │               │   ├── dml-triggers-40.sql
│       │               │   ├── dml-triggers-41.sql
│       │               │   ├── dml-triggers-42.sql
│       │               │   ├── dml-triggers-43.sql
│       │               │   ├── dml-triggers-44.sql
│       │               │   ├── dml-triggers-45.sql
│       │               │   ├── dml-triggers-47.sql
│       │               │   ├── dml-triggers-49.sql
│       │               │   ├── dml-triggers-50.sql
│       │               │   ├── dml-triggers-51.sql
│       │               │   ├── dml-triggers-52.sql
│       │               │   ├── dml-triggers-54.sql
│       │               │   ├── dml-triggers-56.sql
│       │               │   ├── dml-triggers-6.sql
│       │               │   ├── dml-triggers-8.sql
│       │               │   ├── exception-handling-triggers-0.sql
│       │               │   ├── exception-handling-triggers-1.sql
│       │               │   ├── exception-propagation-0.sql
│       │               │   ├── exception-propagation-1.sql
│       │               │   ├── exception-propagation-11.sql
│       │               │   ├── exception-propagation-13.sql
│       │               │   ├── exception-propagation-15.sql
│       │               │   ├── exception-propagation-3.sql
│       │               │   ├── exception-propagation-5.sql
│       │               │   ├── exception-propagation-7.sql
│       │               │   ├── exception-propagation-9.sql
│       │               │   ├── expressions-0.sql
│       │               │   ├── expressions-10.sql
│       │               │   ├── expressions-12.sql
│       │               │   ├── expressions-13.sql
│       │               │   ├── expressions-15.sql
│       │               │   ├── expressions-17.sql
│       │               │   ├── expressions-19.sql
│       │               │   ├── expressions-2.sql
│       │               │   ├── expressions-21.sql
│       │               │   ├── expressions-23.sql
│       │               │   ├── expressions-24.sql
│       │               │   ├── expressions-26.sql
│       │               │   ├── expressions-28.sql
│       │               │   ├── expressions-35.sql
│       │               │   ├── expressions-37.sql
│       │               │   ├── expressions-39.sql
│       │               │   ├── expressions-4.sql
│       │               │   ├── expressions-41.sql
│       │               │   ├── expressions-43.sql
│       │               │   ├── expressions-46.sql
│       │               │   ├── expressions-48.sql
│       │               │   ├── expressions-50.sql
│       │               │   ├── expressions-52.sql
│       │               │   ├── expressions-54.sql
│       │               │   ├── expressions-57.sql
│       │               │   ├── expressions-59.sql
│       │               │   ├── expressions-6.sql
│       │               │   ├── expressions-62.sql
│       │               │   ├── expressions-8.sql
│       │               │   ├── external-subprograms-1.sql
│       │               │   ├── external-subprograms-2.sql
│       │               │   ├── external-subprograms-4.sql
│       │               │   ├── external-subprograms-5.sql
│       │               │   ├── forward-declaration-0.sql
│       │               │   ├── inserting-records-tables-0.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-0.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-2.sql
│       │               │   ├── invokers-rights-and-definers-rights-authid-property-3.sql
│       │               │   ├── lexical-units-0.sql
│       │               │   ├── lexical-units-10.sql
│       │               │   ├── lexical-units-12.sql
│       │               │   ├── lexical-units-15.sql
│       │               │   ├── lexical-units-17.sql
│       │               │   ├── lexical-units-20.sql
│       │               │   ├── lexical-units-23.sql
│       │               │   ├── lexical-units-25.sql
│       │               │   ├── lexical-units-4.sql
│       │               │   ├── lexical-units-6.sql
│       │               │   ├── lexical-units-8.sql
│       │               │   ├── loop-statements-0.sql
│       │               │   ├── loop-statements-10.sql
│       │               │   ├── loop-statements-13.sql
│       │               │   ├── loop-statements-15.sql
│       │               │   ├── loop-statements-17.sql
│       │               │   ├── loop-statements-19.sql
│       │               │   ├── loop-statements-2.sql
│       │               │   ├── loop-statements-25.sql
│       │               │   ├── loop-statements-27.sql
│       │               │   ├── loop-statements-31.sql
│       │               │   ├── loop-statements-33.sql
│       │               │   ├── loop-statements-37.sql
│       │               │   ├── loop-statements-39.sql
│       │               │   ├── loop-statements-4.sql
│       │               │   ├── loop-statements-6.sql
│       │               │   ├── loop-statements-8.sql
│       │               │   ├── main-features-pl-sql-1.sql
│       │               │   ├── minimizing-cpu-overhead-0.sql
│       │               │   ├── minimizing-cpu-overhead-2.sql
│       │               │   ├── multidimensional-collections-0.sql
│       │               │   ├── multidimensional-collections-2.sql
│       │               │   ├── multidimensional-collections-3.sql
│       │               │   ├── native-dynamic-sql-0.sql
│       │               │   ├── native-dynamic-sql-1.sql
│       │               │   ├── native-dynamic-sql-11.sql
│       │               │   ├── native-dynamic-sql-12.sql
│       │               │   ├── native-dynamic-sql-13.sql
│       │               │   ├── native-dynamic-sql-15.sql
│       │               │   ├── native-dynamic-sql-16.sql
│       │               │   ├── native-dynamic-sql-17.sql
│       │               │   ├── native-dynamic-sql-18.sql
│       │               │   ├── native-dynamic-sql-19.sql
│       │               │   ├── native-dynamic-sql-3.sql
│       │               │   ├── native-dynamic-sql-5.sql
│       │               │   ├── native-dynamic-sql-7.sql
│       │               │   ├── native-dynamic-sql-9.sql
│       │               │   ├── overloaded-subprograms-0.sql
│       │               │   ├── overloaded-subprograms-10.sql
│       │               │   ├── overloaded-subprograms-11.sql
│       │               │   ├── overloaded-subprograms-12.sql
│       │               │   ├── overloaded-subprograms-13.sql
│       │               │   ├── overloaded-subprograms-15.sql
│       │               │   ├── overloaded-subprograms-5.sql
│       │               │   ├── overloaded-subprograms-6.sql
│       │               │   ├── overloaded-subprograms-7.sql
│       │               │   ├── overloaded-subprograms-8.sql
│       │               │   ├── overloaded-subprograms-9.sql
│       │               │   ├── overview-exception-handling-1.sql
│       │               │   ├── overview-exception-handling-2.sql
│       │               │   ├── overview-exception-handling-4.sql
│       │               │   ├── overview-exception-handling-6.sql
│       │               │   ├── overview-polymorphic-table-functions-0.sql
│       │               │   ├── overview-polymorphic-table-functions-1.sql
│       │               │   ├── overview-polymorphic-table-functions-10.sql
│       │               │   ├── overview-polymorphic-table-functions-12.sql
│       │               │   ├── overview-polymorphic-table-functions-14.sql
│       │               │   ├── overview-polymorphic-table-functions-16.sql
│       │               │   ├── overview-polymorphic-table-functions-17.sql
│       │               │   ├── overview-polymorphic-table-functions-18.sql
│       │               │   ├── overview-polymorphic-table-functions-19.sql
│       │               │   ├── overview-polymorphic-table-functions-2.sql
│       │               │   ├── overview-polymorphic-table-functions-21.sql
│       │               │   ├── overview-polymorphic-table-functions-23.sql
│       │               │   ├── overview-polymorphic-table-functions-25.sql
│       │               │   ├── overview-polymorphic-table-functions-27.sql
│       │               │   ├── overview-polymorphic-table-functions-29.sql
│       │               │   ├── overview-polymorphic-table-functions-30.sql
│       │               │   ├── overview-polymorphic-table-functions-31.sql
│       │               │   ├── overview-polymorphic-table-functions-4.sql
│       │               │   ├── overview-polymorphic-table-functions-5.sql
│       │               │   ├── overview-polymorphic-table-functions-6.sql
│       │               │   ├── overview-polymorphic-table-functions-8.sql
│       │               │   ├── package-body-0.sql
│       │               │   ├── package-body-2.sql
│       │               │   ├── package-body-4.sql
│       │               │   ├── package-example-0.sql
│       │               │   ├── package-specification-1.sql
│       │               │   ├── package-specification-2.sql
│       │               │   ├── package-writing-guidelines-0.sql
│       │               │   ├── package-writing-guidelines-1.sql
│       │               │   ├── package-writing-guidelines-2.sql
│       │               │   ├── package-writing-guidelines-4.sql
│       │               │   ├── pl-sql-function-result-cache-0.sql
│       │               │   ├── pl-sql-function-result-cache-1.sql
│       │               │   ├── pl-sql-function-result-cache-10.sql
│       │               │   ├── pl-sql-function-result-cache-11.sql
│       │               │   ├── pl-sql-function-result-cache-12.sql
│       │               │   ├── pl-sql-function-result-cache-13.sql
│       │               │   ├── pl-sql-function-result-cache-15.sql
│       │               │   ├── pl-sql-function-result-cache-16.sql
│       │               │   ├── pl-sql-function-result-cache-17.sql
│       │               │   ├── pl-sql-function-result-cache-18.sql
│       │               │   ├── pl-sql-function-result-cache-19.sql
│       │               │   ├── pl-sql-function-result-cache-20.sql
│       │               │   ├── pl-sql-function-result-cache-4.sql
│       │               │   ├── pl-sql-function-result-cache-5.sql
│       │               │   ├── pl-sql-function-result-cache-6.sql
│       │               │   ├── pl-sql-function-result-cache-7.sql
│       │               │   ├── pl-sql-function-result-cache-9.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-0.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-2.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-4.sql
│       │               │   ├── pls_integer-and-binary_integer-data-types-6.sql
│       │               │   ├── plsql-program-limits-0.sql
│       │               │   ├── plsql-program-limits-1.sql
│       │               │   ├── plsql-program-limits-2.sql
│       │               │   ├── predefined-exceptions-0.sql
│       │               │   ├── predefined-exceptions-2.sql
│       │               │   ├── predefined-exceptions-3.sql
│       │               │   ├── predefined-exceptions-4.sql
│       │               │   ├── processing-query-result-sets-0.sql
│       │               │   ├── processing-query-result-sets-10.sql
│       │               │   ├── processing-query-result-sets-2.sql
│       │               │   ├── processing-query-result-sets-4.sql
│       │               │   ├── processing-query-result-sets-6.sql
│       │               │   ├── processing-query-result-sets-8.sql
│       │               │   ├── qualified-names-and-dot-notation-6.sql
│       │               │   ├── raising-exceptions-explicitly-0.sql
│       │               │   ├── raising-exceptions-explicitly-2.sql
│       │               │   ├── raising-exceptions-explicitly-3.sql
│       │               │   ├── raising-exceptions-explicitly-5.sql
│       │               │   ├── raising-exceptions-explicitly-9.sql
│       │               │   ├── record-variables-0.sql
│       │               │   ├── record-variables-1.sql
│       │               │   ├── record-variables-11.sql
│       │               │   ├── record-variables-14.sql
│       │               │   ├── record-variables-16.sql
│       │               │   ├── record-variables-19.sql
│       │               │   ├── record-variables-21.sql
│       │               │   ├── record-variables-22.sql
│       │               │   ├── record-variables-24.sql
│       │               │   ├── record-variables-26.sql
│       │               │   ├── record-variables-28.sql
│       │               │   ├── record-variables-3.sql
│       │               │   ├── record-variables-30.sql
│       │               │   ├── record-variables-5.sql
│       │               │   ├── record-variables-7.sql
│       │               │   ├── record-variables-9.sql
│       │               │   ├── recursive-subprograms-1.sql
│       │               │   ├── recursive-subprograms-3.sql
│       │               │   ├── redeclared-predefined-exceptions-0.sql
│       │               │   ├── redeclared-predefined-exceptions-1.sql
│       │               │   ├── redeclared-predefined-exceptions-3.sql
│       │               │   ├── redeclared-predefined-exceptions-5.sql
│       │               │   ├── references-identifiers-0.sql
│       │               │   ├── release-changes-0.sql
│       │               │   ├── release-changes-2.sql
│       │               │   ├── release-changes-3.sql
│       │               │   ├── release-changes-4.sql
│       │               │   ├── retrieving-error-code-and-error-message-0.sql
│       │               │   ├── retrying-transactions-handling-exceptions-0.sql
│       │               │   ├── scope-and-visibility-identifiers-0.sql
│       │               │   ├── scope-and-visibility-identifiers-1.sql
│       │               │   ├── scope-and-visibility-identifiers-11.sql
│       │               │   ├── scope-and-visibility-identifiers-3.sql
│       │               │   ├── scope-and-visibility-identifiers-5.sql
│       │               │   ├── scope-and-visibility-identifiers-7.sql
│       │               │   ├── scope-and-visibility-identifiers-9.sql
│       │               │   ├── sequential-control-statements-0.sql
│       │               │   ├── sequential-control-statements-1.sql
│       │               │   ├── sequential-control-statements-2.sql
│       │               │   ├── serially_reusable-packages-0.sql
│       │               │   ├── serially_reusable-packages-1.sql
│       │               │   ├── serially_reusable-packages-3.sql
│       │               │   ├── serially_reusable-packages-4.sql
│       │               │   ├── serially_reusable-packages-6.sql
│       │               │   ├── sql-data-types-1.sql
│       │               │   ├── sql-data-types-10.sql
│       │               │   ├── sql-data-types-12.sql
│       │               │   ├── sql-data-types-14.sql
│       │               │   ├── sql-data-types-16.sql
│       │               │   ├── sql-data-types-18.sql
│       │               │   ├── sql-data-types-20.sql
│       │               │   ├── sql-data-types-22.sql
│       │               │   ├── sql-data-types-24.sql
│       │               │   ├── sql-data-types-26.sql
│       │               │   ├── sql-data-types-29.sql
│       │               │   ├── sql-data-types-3.sql
│       │               │   ├── sql-data-types-31.sql
│       │               │   ├── sql-data-types-32.sql
│       │               │   ├── sql-data-types-34.sql
│       │               │   ├── sql-data-types-36.sql
│       │               │   ├── sql-data-types-38.sql
│       │               │   ├── sql-data-types-4.sql
│       │               │   ├── sql-data-types-42.sql
│       │               │   ├── sql-data-types-44.sql
│       │               │   ├── sql-data-types-46.sql
│       │               │   ├── sql-data-types-48.sql
│       │               │   ├── sql-data-types-50.sql
│       │               │   ├── sql-data-types-52.sql
│       │               │   ├── sql-data-types-6.sql
│       │               │   ├── sql-data-types-8.sql
│       │               │   ├── sql-injection-0.sql
│       │               │   ├── sql-injection-1.sql
│       │               │   ├── sql-injection-10.sql
│       │               │   ├── sql-injection-12.sql
│       │               │   ├── sql-injection-13.sql
│       │               │   ├── sql-injection-14.sql
│       │               │   ├── sql-injection-16.sql
│       │               │   ├── sql-injection-18.sql
│       │               │   ├── sql-injection-19.sql
│       │               │   ├── sql-injection-2.sql
│       │               │   ├── sql-injection-21.sql
│       │               │   ├── sql-injection-23.sql
│       │               │   ├── sql-injection-24.sql
│       │               │   ├── sql-injection-26.sql
│       │               │   ├── sql-injection-28.sql
│       │               │   ├── sql-injection-30.sql
│       │               │   ├── sql-injection-31.sql
│       │               │   ├── sql-injection-4.sql
│       │               │   ├── sql-injection-6.sql
│       │               │   ├── sql-injection-7.sql
│       │               │   ├── sql-injection-9.sql
│       │               │   ├── subprogram-invocation-resolution-0.sql
│       │               │   ├── subprogram-parameters-10.sql
│       │               │   ├── subprogram-parameters-12.sql
│       │               │   ├── subprogram-parameters-13.sql
│       │               │   ├── subprogram-parameters-15.sql
│       │               │   ├── subprogram-parameters-17.sql
│       │               │   ├── subprogram-parameters-19.sql
│       │               │   ├── subprogram-parameters-2.sql
│       │               │   ├── subprogram-parameters-21.sql
│       │               │   ├── subprogram-parameters-24.sql
│       │               │   ├── subprogram-parameters-26.sql
│       │               │   ├── subprogram-parameters-27.sql
│       │               │   ├── subprogram-parameters-29.sql
│       │               │   ├── subprogram-parameters-30.sql
│       │               │   ├── subprogram-parameters-32.sql
│       │               │   ├── subprogram-parameters-33.sql
│       │               │   ├── subprogram-parameters-36.sql
│       │               │   ├── subprogram-parameters-37.sql
│       │               │   ├── subprogram-parameters-4.sql
│       │               │   ├── subprogram-parameters-6.sql
│       │               │   ├── subprogram-parameters-8.sql
│       │               │   ├── subprogram-parts-0.sql
│       │               │   ├── subprogram-parts-11.sql
│       │               │   ├── subprogram-parts-2.sql
│       │               │   ├── subprogram-parts-4.sql
│       │               │   ├── subprogram-parts-6.sql
│       │               │   ├── subprogram-parts-7.sql
│       │               │   ├── subprogram-parts-9.sql
│       │               │   ├── subprograms-invoked-triggers-0.sql
│       │               │   ├── system-triggers-0.sql
│       │               │   ├── system-triggers-1.sql
│       │               │   ├── system-triggers-2.sql
│       │               │   ├── system-triggers-3.sql
│       │               │   ├── transaction-processing-and-control-0.sql
│       │               │   ├── transaction-processing-and-control-1.sql
│       │               │   ├── transaction-processing-and-control-11.sql
│       │               │   ├── transaction-processing-and-control-2.sql
│       │               │   ├── transaction-processing-and-control-3.sql
│       │               │   ├── transaction-processing-and-control-5.sql
│       │               │   ├── transaction-processing-and-control-6.sql
│       │               │   ├── transaction-processing-and-control-7.sql
│       │               │   ├── transaction-processing-and-control-8.sql
│       │               │   ├── transaction-processing-and-control-9.sql
│       │               │   ├── trigger-design-guidelines-0.sql
│       │               │   ├── trigger-design-guidelines-1.sql
│       │               │   ├── trigger-restrictions-0.sql
│       │               │   ├── trigger-restrictions-11.sql
│       │               │   ├── trigger-restrictions-12.sql
│       │               │   ├── trigger-restrictions-14.sql
│       │               │   ├── trigger-restrictions-2.sql
│       │               │   ├── trigger-restrictions-4.sql
│       │               │   ├── trigger-restrictions-6.sql
│       │               │   ├── trigger-restrictions-7.sql
│       │               │   ├── trigger-restrictions-9.sql
│       │               │   ├── triggers-publishing-events-0.sql
│       │               │   ├── triggers-publishing-events-10.sql
│       │               │   ├── triggers-publishing-events-12.sql
│       │               │   ├── triggers-publishing-events-14.sql
│       │               │   ├── triggers-publishing-events-16.sql
│       │               │   ├── triggers-publishing-events-18.sql
│       │               │   ├── triggers-publishing-events-2.sql
│       │               │   ├── triggers-publishing-events-20.sql
│       │               │   ├── triggers-publishing-events-24.sql
│       │               │   ├── triggers-publishing-events-28.sql
│       │               │   ├── triggers-publishing-events-30.sql
│       │               │   ├── triggers-publishing-events-34.sql
│       │               │   ├── triggers-publishing-events-36.sql
│       │               │   ├── triggers-publishing-events-38.sql
│       │               │   ├── triggers-publishing-events-4.sql
│       │               │   ├── triggers-publishing-events-42.sql
│       │               │   ├── triggers-publishing-events-48.sql
│       │               │   ├── triggers-publishing-events-50.sql
│       │               │   ├── triggers-publishing-events-52.sql
│       │               │   ├── triggers-publishing-events-6.sql
│       │               │   ├── triggers-publishing-events-8.sql
│       │               │   ├── updating-rows-records-0.sql
│       │               │   ├── user-defined-pl-sql-subtypes-2.sql
│       │               │   ├── user-defined-pl-sql-subtypes-5.sql
│       │               │   ├── user-defined-pl-sql-subtypes-7.sql
│       │               │   ├── user-defined-pl-sql-subtypes-9.sql
│       │               │   ├── views-information-triggers-0.sql
│       │               │   ├── views-information-triggers-1.sql
│       │               │   ├── views-information-triggers-2.sql
│       │               │   ├── views-information-triggers-4.sql
│       │               │   ├── views-information-triggers-5.sql
│       │               │   ├── what-is-capture-0.sql
│       │               │   ├── what-is-capture-1.sql
│       │               │   ├── what-is-capture-2.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-0.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-1.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-2.sql
│       │               │   ├── wrapping-pl-sql-source-text-dbms_ddl-subprograms-3.sql
│       │               │   ├── wrapping-pl-sql-source-text-pl-sql-wrapper-utility-4.sql
│       │               │   └── wrapping-pl-sql-source-text-pl-sql-wrapper-utility-7.sql
│       │               └── sqlrf/
│       │                   ├── ABS-0.sql
│       │                   ├── ACOS-0.sql
│       │                   ├── ADD_MONTHS-0.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-10.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-11.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-12.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-13.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-14.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-15.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-16.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-17.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-18.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-19.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-2.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-20.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-21.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-22.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-23.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-24.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-25.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-26.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-27.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-28.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-29.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-3.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-30.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-31.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-32.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-33.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-34.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-35.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-36.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-37.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-6.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-7.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-8.sql
│       │                   ├── ADMINISTER-KEY-MANAGEMENT-9.sql
│       │                   ├── ALTER-ANALYTIC-VIEW-0.sql
│       │                   ├── ALTER-ANALYTIC-VIEW-1.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-0.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-1.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-10.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-11.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-12.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-13.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-14.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-2.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-3.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-4.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-5.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-6.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-7.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-8.sql
│       │                   ├── ALTER-AUDIT-POLICY-Unified-Auditing-9.sql
│       │                   ├── ALTER-CLUSTER-0.sql
│       │                   ├── ALTER-CLUSTER-1.sql
│       │                   ├── ALTER-CLUSTER-2.sql
│       │                   ├── ALTER-CLUSTER-3.sql
│       │                   ├── ALTER-CLUSTER-4.sql
│       │                   ├── ALTER-CLUSTER-5.sql
│       │                   ├── ALTER-CLUSTER-6.sql
│       │                   ├── ALTER-CLUSTER-7.sql
│       │                   ├── ALTER-DATABASE-0.sql
│       │                   ├── ALTER-DATABASE-1.sql
│       │                   ├── ALTER-DATABASE-10.sql
│       │                   ├── ALTER-DATABASE-11.sql
│       │                   ├── ALTER-DATABASE-12.sql
│       │                   ├── ALTER-DATABASE-13.sql
│       │                   ├── ALTER-DATABASE-14.sql
│       │                   ├── ALTER-DATABASE-15.sql
│       │                   ├── ALTER-DATABASE-16.sql
│       │                   ├── ALTER-DATABASE-17.sql
│       │                   ├── ALTER-DATABASE-18.sql
│       │                   ├── ALTER-DATABASE-19.sql
│       │                   ├── ALTER-DATABASE-2.sql
│       │                   ├── ALTER-DATABASE-20.sql
│       │                   ├── ALTER-DATABASE-21.sql
│       │                   ├── ALTER-DATABASE-22.sql
│       │                   ├── ALTER-DATABASE-23.sql
│       │                   ├── ALTER-DATABASE-24.sql
│       │                   ├── ALTER-DATABASE-25.sql
│       │                   ├── ALTER-DATABASE-26.sql
│       │                   ├── ALTER-DATABASE-27.sql
│       │                   ├── ALTER-DATABASE-28.sql
│       │                   ├── ALTER-DATABASE-3.sql
│       │                   ├── ALTER-DATABASE-4.sql
│       │                   ├── ALTER-DATABASE-5.sql
│       │                   ├── ALTER-DATABASE-6.sql
│       │                   ├── ALTER-DATABASE-7.sql
│       │                   ├── ALTER-DATABASE-8.sql
│       │                   ├── ALTER-DATABASE-9.sql
│       │                   ├── ALTER-DATABASE-LINK-0.sql
│       │                   ├── ALTER-DIMENSION-0.sql
│       │                   ├── ALTER-DISKGROUP-1.sql
│       │                   ├── ALTER-DISKGROUP-10.sql
│       │                   ├── ALTER-DISKGROUP-11.sql
│       │                   ├── ALTER-DISKGROUP-12.sql
│       │                   ├── ALTER-DISKGROUP-13.sql
│       │                   ├── ALTER-DISKGROUP-14.sql
│       │                   ├── ALTER-DISKGROUP-15.sql
│       │                   ├── ALTER-DISKGROUP-16.sql
│       │                   ├── ALTER-DISKGROUP-2.sql
│       │                   ├── ALTER-DISKGROUP-3.sql
│       │                   ├── ALTER-DISKGROUP-4.sql
│       │                   ├── ALTER-DISKGROUP-5.sql
│       │                   ├── ALTER-DISKGROUP-6.sql
│       │                   ├── ALTER-DISKGROUP-7.sql
│       │                   ├── ALTER-DISKGROUP-8.sql
│       │                   ├── ALTER-DISKGROUP-9.sql
│       │                   ├── ALTER-HIERARCHY-0.sql
│       │                   ├── ALTER-INDEX-0.sql
│       │                   ├── ALTER-INDEX-1.sql
│       │                   ├── ALTER-INDEX-10.sql
│       │                   ├── ALTER-INDEX-11.sql
│       │                   ├── ALTER-INDEX-12.sql
│       │                   ├── ALTER-INDEX-2.sql
│       │                   ├── ALTER-INDEX-3.sql
│       │                   ├── ALTER-INDEX-4.sql
│       │                   ├── ALTER-INDEX-5.sql
│       │                   ├── ALTER-INDEX-6.sql
│       │                   ├── ALTER-INDEX-7.sql
│       │                   ├── ALTER-INDEX-8.sql
│       │                   ├── ALTER-INDEX-9.sql
│       │                   ├── ALTER-INDEXTYPE-0.sql
│       │                   ├── ALTER-INMEMORY-JOIN-GROUP-0.sql
│       │                   ├── ALTER-INMEMORY-JOIN-GROUP-1.sql
│       │                   ├── ALTER-JAVA-0.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-10.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-11.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-12.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-13.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-14.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-15.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-16.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-17.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-18.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-19.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-2.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-20.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-21.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-22.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-23.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-24.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-25.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-3.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-4.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-5.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-6.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-7.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-8.sql
│       │                   ├── ALTER-LOCKDOWN-PROFILE-9.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-0.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-1.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-2.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-3.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-4.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-5.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-6.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-7.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-LOG-0.sql
│       │                   ├── ALTER-MATERIALIZED-VIEW-LOG-1.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-0.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-1.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-2.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-3.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-4.sql
│       │                   ├── ALTER-MATERIALIZED-ZONEMAP-5.sql
│       │                   ├── ALTER-OPERATOR-0.sql
│       │                   ├── ALTER-OUTLINE-0.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-0.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-1.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-10.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-11.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-12.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-13.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-14.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-15.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-16.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-17.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-18.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-19.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-2.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-20.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-21.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-3.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-6.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-7.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-8.sql
│       │                   ├── ALTER-PLUGGABLE-DATABASE-9.sql
│       │                   ├── ALTER-PROFILE-0.sql
│       │                   ├── ALTER-PROFILE-1.sql
│       │                   ├── ALTER-PROFILE-2.sql
│       │                   ├── ALTER-PROFILE-3.sql
│       │                   ├── ALTER-PROFILE-4.sql
│       │                   ├── ALTER-PROFILE-5.sql
│       │                   ├── ALTER-PROFILE-6.sql
│       │                   ├── ALTER-PROFILE-7.sql
│       │                   ├── ALTER-PROFILE-8.sql
│       │                   ├── ALTER-PROFILE-9.sql
│       │                   ├── ALTER-RESOURCE-COST-0.sql
│       │                   ├── ALTER-RESOURCE-COST-2.sql
│       │                   ├── ALTER-ROLE-0.sql
│       │                   ├── ALTER-ROLE-1.sql
│       │                   ├── ALTER-ROLE-2.sql
│       │                   ├── ALTER-ROLLBACK-SEGMENT-0.sql
│       │                   ├── ALTER-ROLLBACK-SEGMENT-1.sql
│       │                   ├── ALTER-SEQUENCE-0.sql
│       │                   ├── ALTER-SEQUENCE-1.sql
│       │                   ├── ALTER-SESSION-0.sql
│       │                   ├── ALTER-SESSION-1.sql
│       │                   ├── ALTER-SESSION-13.sql
│       │                   ├── ALTER-SESSION-14.sql
│       │                   ├── ALTER-SESSION-15.sql
│       │                   ├── ALTER-SESSION-16.sql
│       │                   ├── ALTER-SESSION-17.sql
│       │                   ├── ALTER-SESSION-18.sql
│       │                   ├── ALTER-SESSION-19.sql
│       │                   ├── ALTER-SESSION-2.sql
│       │                   ├── ALTER-SESSION-20.sql
│       │                   ├── ALTER-SESSION-21.sql
│       │                   ├── ALTER-SESSION-22.sql
│       │                   ├── ALTER-SESSION-23.sql
│       │                   ├── ALTER-SESSION-24.sql
│       │                   ├── ALTER-SESSION-25.sql
│       │                   ├── ALTER-SYNONYM-0.sql
│       │                   ├── ALTER-SYNONYM-1.sql
│       │                   ├── ALTER-SYNONYM-2.sql
│       │                   ├── ALTER-SYSTEM-0.sql
│       │                   ├── ALTER-SYSTEM-1.sql
│       │                   ├── ALTER-SYSTEM-10.sql
│       │                   ├── ALTER-SYSTEM-11.sql
│       │                   ├── ALTER-SYSTEM-12.sql
│       │                   ├── ALTER-SYSTEM-13.sql
│       │                   ├── ALTER-SYSTEM-14.sql
│       │                   ├── ALTER-SYSTEM-15.sql
│       │                   ├── ALTER-SYSTEM-16.sql
│       │                   ├── ALTER-SYSTEM-17.sql
│       │                   ├── ALTER-SYSTEM-18.sql
│       │                   ├── ALTER-SYSTEM-19.sql
│       │                   ├── ALTER-SYSTEM-20.sql
│       │                   ├── ALTER-SYSTEM-21.sql
│       │                   ├── ALTER-SYSTEM-22.sql
│       │                   ├── ALTER-SYSTEM-23.sql
│       │                   ├── ALTER-SYSTEM-24.sql
│       │                   ├── ALTER-SYSTEM-25.sql
│       │                   ├── ALTER-SYSTEM-26.sql
│       │                   ├── ALTER-SYSTEM-27.sql
│       │                   ├── ALTER-SYSTEM-28.sql
│       │                   ├── ALTER-SYSTEM-3.sql
│       │                   ├── ALTER-SYSTEM-4.sql
│       │                   ├── ALTER-SYSTEM-5.sql
│       │                   ├── ALTER-SYSTEM-7.sql
│       │                   ├── ALTER-SYSTEM-8.sql
│       │                   ├── ALTER-SYSTEM-9.sql
│       │                   ├── ALTER-TABLE-0.sql
│       │                   ├── ALTER-TABLE-10.sql
│       │                   ├── ALTER-TABLE-100.sql
│       │                   ├── ALTER-TABLE-101.sql
│       │                   ├── ALTER-TABLE-102.sql
│       │                   ├── ALTER-TABLE-103.sql
│       │                   ├── ALTER-TABLE-104.sql
│       │                   ├── ALTER-TABLE-105.sql
│       │                   ├── ALTER-TABLE-106.sql
│       │                   ├── ALTER-TABLE-107.sql
│       │                   ├── ALTER-TABLE-108.sql
│       │                   ├── ALTER-TABLE-109.sql
│       │                   ├── ALTER-TABLE-11.sql
│       │                   ├── ALTER-TABLE-110.sql
│       │                   ├── ALTER-TABLE-111.sql
│       │                   ├── ALTER-TABLE-112.sql
│       │                   ├── ALTER-TABLE-113.sql
│       │                   ├── ALTER-TABLE-114.sql
│       │                   ├── ALTER-TABLE-115.sql
│       │                   ├── ALTER-TABLE-116.sql
│       │                   ├── ALTER-TABLE-117.sql
│       │                   ├── ALTER-TABLE-118.sql
│       │                   ├── ALTER-TABLE-119.sql
│       │                   ├── ALTER-TABLE-12.sql
│       │                   ├── ALTER-TABLE-120.sql
│       │                   ├── ALTER-TABLE-121.sql
│       │                   ├── ALTER-TABLE-122.sql
│       │                   ├── ALTER-TABLE-123.sql
│       │                   ├── ALTER-TABLE-124.sql
│       │                   ├── ALTER-TABLE-125.sql
│       │                   ├── ALTER-TABLE-126.sql
│       │                   ├── ALTER-TABLE-127.sql
│       │                   ├── ALTER-TABLE-128.sql
│       │                   ├── ALTER-TABLE-129.sql
│       │                   ├── ALTER-TABLE-13.sql
│       │                   ├── ALTER-TABLE-14.sql
│       │                   ├── ALTER-TABLE-15.sql
│       │                   ├── ALTER-TABLE-16.sql
│       │                   ├── ALTER-TABLE-17.sql
│       │                   ├── ALTER-TABLE-18.sql
│       │                   ├── ALTER-TABLE-19.sql
│       │                   ├── ALTER-TABLE-20.sql
│       │                   ├── ALTER-TABLE-21.sql
│       │                   ├── ALTER-TABLE-22.sql
│       │                   ├── ALTER-TABLE-23.sql
│       │                   ├── ALTER-TABLE-24.sql
│       │                   ├── ALTER-TABLE-25.sql
│       │                   ├── ALTER-TABLE-26.sql
│       │                   ├── ALTER-TABLE-27.sql
│       │                   ├── ALTER-TABLE-28.sql
│       │                   ├── ALTER-TABLE-29.sql
│       │                   ├── ALTER-TABLE-30.sql
│       │                   ├── ALTER-TABLE-31.sql
│       │                   ├── ALTER-TABLE-32.sql
│       │                   ├── ALTER-TABLE-33.sql
│       │                   ├── ALTER-TABLE-34.sql
│       │                   ├── ALTER-TABLE-35.sql
│       │                   ├── ALTER-TABLE-36.sql
│       │                   ├── ALTER-TABLE-37.sql
│       │                   ├── ALTER-TABLE-38.sql
│       │                   ├── ALTER-TABLE-39.sql
│       │                   ├── ALTER-TABLE-4.sql
│       │                   ├── ALTER-TABLE-40.sql
│       │                   ├── ALTER-TABLE-41.sql
│       │                   ├── ALTER-TABLE-42.sql
│       │                   ├── ALTER-TABLE-43.sql
│       │                   ├── ALTER-TABLE-44.sql
│       │                   ├── ALTER-TABLE-45.sql
│       │                   ├── ALTER-TABLE-46.sql
│       │                   ├── ALTER-TABLE-47.sql
│       │                   ├── ALTER-TABLE-48.sql
│       │                   ├── ALTER-TABLE-49.sql
│       │                   ├── ALTER-TABLE-5.sql
│       │                   ├── ALTER-TABLE-50.sql
│       │                   ├── ALTER-TABLE-51.sql
│       │                   ├── ALTER-TABLE-52.sql
│       │                   ├── ALTER-TABLE-53.sql
│       │                   ├── ALTER-TABLE-54.sql
│       │                   ├── ALTER-TABLE-55.sql
│       │                   ├── ALTER-TABLE-56.sql
│       │                   ├── ALTER-TABLE-57.sql
│       │                   ├── ALTER-TABLE-58.sql
│       │                   ├── ALTER-TABLE-59.sql
│       │                   ├── ALTER-TABLE-6.sql
│       │                   ├── ALTER-TABLE-60.sql
│       │                   ├── ALTER-TABLE-61.sql
│       │                   ├── ALTER-TABLE-62.sql
│       │                   ├── ALTER-TABLE-63.sql
│       │                   ├── ALTER-TABLE-64.sql
│       │                   ├── ALTER-TABLE-65.sql
│       │                   ├── ALTER-TABLE-66.sql
│       │                   ├── ALTER-TABLE-67.sql
│       │                   ├── ALTER-TABLE-68.sql
│       │                   ├── ALTER-TABLE-69.sql
│       │                   ├── ALTER-TABLE-7.sql
│       │                   ├── ALTER-TABLE-70.sql
│       │                   ├── ALTER-TABLE-71.sql
│       │                   ├── ALTER-TABLE-72.sql
│       │                   ├── ALTER-TABLE-73.sql
│       │                   ├── ALTER-TABLE-74.sql
│       │                   ├── ALTER-TABLE-75.sql
│       │                   ├── ALTER-TABLE-76.sql
│       │                   ├── ALTER-TABLE-77.sql
│       │                   ├── ALTER-TABLE-78.sql
│       │                   ├── ALTER-TABLE-79.sql
│       │                   ├── ALTER-TABLE-8.sql
│       │                   ├── ALTER-TABLE-80.sql
│       │                   ├── ALTER-TABLE-81.sql
│       │                   ├── ALTER-TABLE-82.sql
│       │                   ├── ALTER-TABLE-83.sql
│       │                   ├── ALTER-TABLE-84.sql
│       │                   ├── ALTER-TABLE-85.sql
│       │                   ├── ALTER-TABLE-86.sql
│       │                   ├── ALTER-TABLE-87.sql
│       │                   ├── ALTER-TABLE-88.sql
│       │                   ├── ALTER-TABLE-89.sql
│       │                   ├── ALTER-TABLE-9.sql
│       │                   ├── ALTER-TABLE-90.sql
│       │                   ├── ALTER-TABLE-91.sql
│       │                   ├── ALTER-TABLE-92.sql
│       │                   ├── ALTER-TABLE-93.sql
│       │                   ├── ALTER-TABLE-94.sql
│       │                   ├── ALTER-TABLE-95.sql
│       │                   ├── ALTER-TABLE-96.sql
│       │                   ├── ALTER-TABLE-97.sql
│       │                   ├── ALTER-TABLE-98.sql
│       │                   ├── ALTER-TABLE-99.sql
│       │                   ├── ALTER-TABLESPACE-0.sql
│       │                   ├── ALTER-TABLESPACE-1.sql
│       │                   ├── ALTER-TABLESPACE-10.sql
│       │                   ├── ALTER-TABLESPACE-11.sql
│       │                   ├── ALTER-TABLESPACE-12.sql
│       │                   ├── ALTER-TABLESPACE-13.sql
│       │                   ├── ALTER-TABLESPACE-14.sql
│       │                   ├── ALTER-TABLESPACE-15.sql
│       │                   ├── ALTER-TABLESPACE-16.sql
│       │                   ├── ALTER-TABLESPACE-2.sql
│       │                   ├── ALTER-TABLESPACE-3.sql
│       │                   ├── ALTER-TABLESPACE-4.sql
│       │                   ├── ALTER-TABLESPACE-5.sql
│       │                   ├── ALTER-TABLESPACE-6.sql
│       │                   ├── ALTER-TABLESPACE-7.sql
│       │                   ├── ALTER-TABLESPACE-8.sql
│       │                   ├── ALTER-TABLESPACE-9.sql
│       │                   ├── ALTER-TABLESPACE-SET-0.sql
│       │                   ├── ALTER-USER-0.sql
│       │                   ├── ALTER-USER-1.sql
│       │                   ├── ALTER-USER-10.sql
│       │                   ├── ALTER-USER-11.sql
│       │                   ├── ALTER-USER-12.sql
│       │                   ├── ALTER-USER-13.sql
│       │                   ├── ALTER-USER-14.sql
│       │                   ├── ALTER-USER-15.sql
│       │                   ├── ALTER-USER-2.sql
│       │                   ├── ALTER-USER-4.sql
│       │                   ├── ALTER-USER-5.sql
│       │                   ├── ALTER-USER-6.sql
│       │                   ├── ALTER-USER-7.sql
│       │                   ├── ALTER-USER-8.sql
│       │                   ├── ALTER-USER-9.sql
│       │                   ├── ALTER-VIEW-0.sql
│       │                   ├── ALTER-VIEW-1.sql
│       │                   ├── ANALYZE-0.sql
│       │                   ├── ANALYZE-1.sql
│       │                   ├── ANALYZE-2.sql
│       │                   ├── ANALYZE-3.sql
│       │                   ├── ANALYZE-4.sql
│       │                   ├── ANALYZE-5.sql
│       │                   ├── ANALYZE-6.sql
│       │                   ├── ANALYZE-7.sql
│       │                   ├── ANY_VALUE-0.sql
│       │                   ├── APPROX_COUNT-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT-1.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-0.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-1.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-2.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-3.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-4.sql
│       │                   ├── APPROX_COUNT_DISTINCT_DETAIL-5.sql
│       │                   ├── APPROX_MEDIAN-0.sql
│       │                   ├── APPROX_MEDIAN-1.sql
│       │                   ├── APPROX_MEDIAN-2.sql
│       │                   ├── APPROX_MEDIAN-3.sql
│       │                   ├── APPROX_PERCENTILE-0.sql
│       │                   ├── APPROX_PERCENTILE-1.sql
│       │                   ├── APPROX_PERCENTILE-2.sql
│       │                   ├── APPROX_PERCENTILE-3.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-0.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-1.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-2.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-3.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-4.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-5.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-6.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-7.sql
│       │                   ├── APPROX_PERCENTILE_DETAIL-8.sql
│       │                   ├── APPROX_RANK-0.sql
│       │                   ├── APPROX_SUM-0.sql
│       │                   ├── ASCII-0.sql
│       │                   ├── ASCIISTR-0.sql
│       │                   ├── ASIN-0.sql
│       │                   ├── ASSOCIATE-STATISTICS-0.sql
│       │                   ├── ASSOCIATE-STATISTICS-1.sql
│       │                   ├── ATAN-0.sql
│       │                   ├── ATAN2-0.sql
│       │                   ├── AUDIT-Unified-Auditing-0.sql
│       │                   ├── AUDIT-Unified-Auditing-1.sql
│       │                   ├── AUDIT-Unified-Auditing-2.sql
│       │                   ├── AUDIT-Unified-Auditing-3.sql
│       │                   ├── AUDIT-Unified-Auditing-4.sql
│       │                   ├── AUDIT-Unified-Auditing-5.sql
│       │                   ├── AUDIT-Unified-Auditing-6.sql
│       │                   ├── AUDIT-Unified-Auditing-7.sql
│       │                   ├── AUDIT-Unified-Auditing-8.sql
│       │                   ├── AVG-0.sql
│       │                   ├── AVG-1.sql
│       │                   ├── About-SQL-Expressions-2.sql
│       │                   ├── About-SQL-Expressions-3.sql
│       │                   ├── About-User-Defined-Functions-1.sql
│       │                   ├── About-User-Defined-Functions-2.sql
│       │                   ├── About-User-Defined-Functions-4.sql
│       │                   ├── Aggregate-Functions-0.sql
│       │                   ├── Arithmetic-Operators-0.sql
│       │                   ├── Arithmetic-Operators-1.sql
│       │                   ├── Arithmetic-Operators-2.sql
│       │                   ├── Automatic-Locks-in-DML-Operations-0.sql
│       │                   ├── BETWEEN-Condition-5.sql
│       │                   ├── BFILENAME-0.sql
│       │                   ├── BIN_TO_NUM-0.sql
│       │                   ├── BIN_TO_NUM-1.sql
│       │                   ├── BITAND-0.sql
│       │                   ├── BITAND-1.sql
│       │                   ├── BITAND-2.sql
│       │                   ├── BIT_AND_AGG-0.sql
│       │                   ├── BIT_AND_AGG-1.sql
│       │                   ├── CALL-0.sql
│       │                   ├── CALL-1.sql
│       │                   ├── CALL-2.sql
│       │                   ├── CALL-3.sql
│       │                   ├── CALL-4.sql
│       │                   ├── CARDINALITY-0.sql
│       │                   ├── CASE-Expressions-0.sql
│       │                   ├── CASE-Expressions-1.sql
│       │                   ├── CAST-0.sql
│       │                   ├── CAST-1.sql
│       │                   ├── CAST-10.sql
│       │                   ├── CAST-11.sql
│       │                   ├── CAST-12.sql
│       │                   ├── CAST-13.sql
│       │                   ├── CAST-14.sql
│       │                   ├── CAST-15.sql
│       │                   ├── CAST-16.sql
│       │                   ├── CAST-17.sql
│       │                   ├── CAST-18.sql
│       │                   ├── CAST-2.sql
│       │                   ├── CAST-3.sql
│       │                   ├── CAST-4.sql
│       │                   ├── CAST-5.sql
│       │                   ├── CAST-6.sql
│       │                   ├── CAST-7.sql
│       │                   ├── CAST-8.sql
│       │                   ├── CAST-9.sql
│       │                   ├── CEIL-0.sql
│       │                   ├── CHARTOROWID-0.sql
│       │                   ├── CHR-0.sql
│       │                   ├── CHR-1.sql
│       │                   ├── CHR-2.sql
│       │                   ├── CHR-3.sql
│       │                   ├── CHR-4.sql
│       │                   ├── CHR-5.sql
│       │                   ├── CLUSTER_DETAILS-0.sql
│       │                   ├── CLUSTER_DETAILS-1.sql
│       │                   ├── CLUSTER_DISTANCE-0.sql
│       │                   ├── CLUSTER_ID-0.sql
│       │                   ├── CLUSTER_ID-1.sql
│       │                   ├── CLUSTER_PROBABILITY-0.sql
│       │                   ├── CLUSTER_SET-0.sql
│       │                   ├── COALESCE-4.sql
│       │                   ├── COLLATE-Operator-0.sql
│       │                   ├── COLLATION-0.sql
│       │                   ├── COLLECT-0.sql
│       │                   ├── COLLECT-1.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-0.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-1.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-2.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-3.sql
│       │                   ├── COLUMN_VALUE-Pseudocolumn-4.sql
│       │                   ├── COMMENT-0.sql
│       │                   ├── COMMENT-1.sql
│       │                   ├── COMMIT-0.sql
│       │                   ├── COMMIT-1.sql
│       │                   ├── COMMIT-2.sql
│       │                   ├── COMMIT-3.sql
│       │                   ├── COMPOSE-0.sql
│       │                   ├── CONCAT-0.sql
│       │                   ├── CONVERT-0.sql
│       │                   ├── CONVERT-1.sql
│       │                   ├── CON_DBID_TO_ID-0.sql
│       │                   ├── CON_DBID_TO_ID-1.sql
│       │                   ├── CON_GUID_TO_ID-0.sql
│       │                   ├── CON_GUID_TO_ID-1.sql
│       │                   ├── CON_NAME_TO_ID-0.sql
│       │                   ├── CON_NAME_TO_ID-1.sql
│       │                   ├── CON_UID_TO_ID-0.sql
│       │                   ├── CON_UID_TO_ID-1.sql
│       │                   ├── CORR-1.sql
│       │                   ├── CORR-2.sql
│       │                   ├── CORR_A-0.sql
│       │                   ├── CORR_A-1.sql
│       │                   ├── COS-0.sql
│       │                   ├── COSH-0.sql
│       │                   ├── COUNT-0.sql
│       │                   ├── COUNT-1.sql
│       │                   ├── COVAR_POP-1.sql
│       │                   ├── COVAR_POP-2.sql
│       │                   ├── CREATE-ANALYTIC-VIEW-0.sql
│       │                   ├── CREATE-ANALYTIC-VIEW-1.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-0.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-1.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-2.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-3.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-4.sql
│       │                   ├── CREATE-ATTRIBUTE-DIMENSION-5.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-1.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-10.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-11.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-14.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-15.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-16.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-17.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-18.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-19.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-2.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-20.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-21.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-22.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-23.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-24.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-25.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-26.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-27.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-28.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-3.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-30.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-4.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-5.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-6.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-7.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-8.sql
│       │                   ├── CREATE-AUDIT-POLICY-Unified-Auditing-9.sql
│       │                   ├── CREATE-CLUSTER-0.sql
│       │                   ├── CREATE-CLUSTER-1.sql
│       │                   ├── CREATE-CLUSTER-10.sql
│       │                   ├── CREATE-CLUSTER-11.sql
│       │                   ├── CREATE-CLUSTER-12.sql
│       │                   ├── CREATE-CLUSTER-13.sql
│       │                   ├── CREATE-CLUSTER-2.sql
│       │                   ├── CREATE-CLUSTER-3.sql
│       │                   ├── CREATE-CLUSTER-4.sql
│       │                   ├── CREATE-CLUSTER-5.sql
│       │                   ├── CREATE-CLUSTER-6.sql
│       │                   ├── CREATE-CLUSTER-7.sql
│       │                   ├── CREATE-CLUSTER-8.sql
│       │                   ├── CREATE-CLUSTER-9.sql
│       │                   ├── CREATE-CONTEXT-0.sql
│       │                   ├── CREATE-CONTEXT-1.sql
│       │                   ├── CREATE-CONTROLFILE-0.sql
│       │                   ├── CREATE-DATABASE-0.sql
│       │                   ├── CREATE-DATABASE-1.sql
│       │                   ├── CREATE-DATABASE-LINK-0.sql
│       │                   ├── CREATE-DATABASE-LINK-1.sql
│       │                   ├── CREATE-DATABASE-LINK-2.sql
│       │                   ├── CREATE-DATABASE-LINK-3.sql
│       │                   ├── CREATE-DATABASE-LINK-4.sql
│       │                   ├── CREATE-DATABASE-LINK-5.sql
│       │                   ├── CREATE-DATABASE-LINK-6.sql
│       │                   ├── CREATE-DATABASE-LINK-7.sql
│       │                   ├── CREATE-DIMENSION-0.sql
│       │                   ├── CREATE-DIMENSION-1.sql
│       │                   ├── CREATE-DIMENSION-2.sql
│       │                   ├── CREATE-DIRECTORY-1.sql
│       │                   ├── CREATE-DIRECTORY-2.sql
│       │                   ├── CREATE-DIRECTORY-3.sql
│       │                   ├── CREATE-DIRECTORY-4.sql
│       │                   ├── CREATE-DISKGROUP-0.sql
│       │                   ├── CREATE-EDITION-0.sql
│       │                   ├── CREATE-EDITION-1.sql
│       │                   ├── CREATE-EDITION-2.sql
│       │                   ├── CREATE-EDITION-3.sql
│       │                   ├── CREATE-EDITION-4.sql
│       │                   ├── CREATE-EDITION-5.sql
│       │                   ├── CREATE-EDITION-6.sql
│       │                   ├── CREATE-EDITION-7.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-0.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-2.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-3.sql
│       │                   ├── CREATE-FLASHBACK-ARCHIVE-4.sql
│       │                   ├── CREATE-HIERARCHY-0.sql
│       │                   ├── CREATE-HIERARCHY-1.sql
│       │                   ├── CREATE-HIERARCHY-2.sql
│       │                   ├── CREATE-INDEX-0.sql
│       │                   ├── CREATE-INDEX-10.sql
│       │                   ├── CREATE-INDEX-11.sql
│       │                   ├── CREATE-INDEX-12.sql
│       │                   ├── CREATE-INDEX-13.sql
│       │                   ├── CREATE-INDEX-14.sql
│       │                   ├── CREATE-INDEX-15.sql
│       │                   ├── CREATE-INDEX-16.sql
│       │                   ├── CREATE-INDEX-17.sql
│       │                   ├── CREATE-INDEX-18.sql
│       │                   ├── CREATE-INDEX-19.sql
│       │                   ├── CREATE-INDEX-20.sql
│       │                   ├── CREATE-INDEX-21.sql
│       │                   ├── CREATE-INDEX-22.sql
│       │                   ├── CREATE-INDEX-23.sql
│       │                   ├── CREATE-INDEX-24.sql
│       │                   ├── CREATE-INDEX-25.sql
│       │                   ├── CREATE-INDEX-26.sql
│       │                   ├── CREATE-INDEX-27.sql
│       │                   ├── CREATE-INDEX-28.sql
│       │                   ├── CREATE-INDEX-29.sql
│       │                   ├── CREATE-INDEX-4.sql
│       │                   ├── CREATE-INDEX-5.sql
│       │                   ├── CREATE-INDEX-6.sql
│       │                   ├── CREATE-INDEX-7.sql
│       │                   ├── CREATE-INDEX-8.sql
│       │                   ├── CREATE-INDEX-9.sql
│       │                   ├── CREATE-INDEXTYPE-0.sql
│       │                   ├── CREATE-INMEMORY-JOIN-GROUP-0.sql
│       │                   ├── CREATE-INMEMORY-JOIN-GROUP-1.sql
│       │                   ├── CREATE-JAVA-0.sql
│       │                   ├── CREATE-JAVA-1.sql
│       │                   ├── CREATE-JAVA-2.sql
│       │                   ├── CREATE-JAVA-3.sql
│       │                   ├── CREATE-LOCKDOWN-PROFILE-0.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-0.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-1.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-10.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-11.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-12.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-2.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-3.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-4.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-5.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-6.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-7.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-8.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-9.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-1.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-2.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-3.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-4.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-5.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-6.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-7.sql
│       │                   ├── CREATE-MATERIALIZED-VIEW-LOG-8.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-4.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-5.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-6.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-7.sql
│       │                   ├── CREATE-MATERIALIZED-ZONEMAP-8.sql
│       │                   ├── CREATE-OPERATOR-0.sql
│       │                   ├── CREATE-OUTLINE-0.sql
│       │                   ├── CREATE-OUTLINE-1.sql
│       │                   ├── CREATE-OUTLINE-2.sql
│       │                   ├── CREATE-PFILE-0.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-10.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-11.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-3.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-4.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-6.sql
│       │                   ├── CREATE-PLUGGABLE-DATABASE-9.sql
│       │                   ├── CREATE-PROFILE-1.sql
│       │                   ├── CREATE-PROFILE-2.sql
│       │                   ├── CREATE-PROFILE-4.sql
│       │                   ├── CREATE-PROFILE-5.sql
│       │                   ├── CREATE-PROFILE-6.sql
│       │                   ├── CREATE-PROFILE-7.sql
│       │                   ├── CREATE-RESTORE-POINT-0.sql
│       │                   ├── CREATE-ROLE-1.sql
│       │                   ├── CREATE-ROLE-2.sql
│       │                   ├── CREATE-ROLE-3.sql
│       │                   ├── CREATE-ROLE-4.sql
│       │                   ├── CREATE-ROLE-5.sql
│       │                   ├── CREATE-ROLE-6.sql
│       │                   ├── CREATE-ROLE-7.sql
│       │                   ├── CREATE-ROLLBACK-SEGMENT-0.sql
│       │                   ├── CREATE-ROLLBACK-SEGMENT-1.sql
│       │                   ├── CREATE-SCHEMA-0.sql
│       │                   ├── CREATE-SEQUENCE-2.sql
│       │                   ├── CREATE-SEQUENCE-3.sql
│       │                   ├── CREATE-SEQUENCE-4.sql
│       │                   ├── CREATE-SPFILE-0.sql
│       │                   ├── CREATE-SPFILE-1.sql
│       │                   ├── CREATE-SPFILE-2.sql
│       │                   ├── CREATE-SPFILE-4.sql
│       │                   ├── CREATE-SYNONYM-0.sql
│       │                   ├── CREATE-SYNONYM-1.sql
│       │                   ├── CREATE-SYNONYM-2.sql
│       │                   ├── CREATE-SYNONYM-3.sql
│       │                   ├── CREATE-SYNONYM-4.sql
│       │                   ├── CREATE-SYNONYM-5.sql
│       │                   ├── CREATE-TABLE-0.sql
│       │                   ├── CREATE-TABLE-1.sql
│       │                   ├── CREATE-TABLE-10.sql
│       │                   ├── CREATE-TABLE-11.sql
│       │                   ├── CREATE-TABLE-12.sql
│       │                   ├── CREATE-TABLE-13.sql
│       │                   ├── CREATE-TABLE-14.sql
│       │                   ├── CREATE-TABLE-15.sql
│       │                   ├── CREATE-TABLE-16.sql
│       │                   ├── CREATE-TABLE-17.sql
│       │                   ├── CREATE-TABLE-18.sql
│       │                   ├── CREATE-TABLE-19.sql
│       │                   ├── CREATE-TABLE-20.sql
│       │                   ├── CREATE-TABLE-21.sql
│       │                   ├── CREATE-TABLE-22.sql
│       │                   ├── CREATE-TABLE-23.sql
│       │                   ├── CREATE-TABLE-24.sql
│       │                   ├── CREATE-TABLE-25.sql
│       │                   ├── CREATE-TABLE-26.sql
│       │                   ├── CREATE-TABLE-27.sql
│       │                   ├── CREATE-TABLE-28.sql
│       │                   ├── CREATE-TABLE-29.sql
│       │                   ├── CREATE-TABLE-30.sql
│       │                   ├── CREATE-TABLE-31.sql
│       │                   ├── CREATE-TABLE-32.sql
│       │                   ├── CREATE-TABLE-33.sql
│       │                   ├── CREATE-TABLE-34.sql
│       │                   ├── CREATE-TABLE-35.sql
│       │                   ├── CREATE-TABLE-36.sql
│       │                   ├── CREATE-TABLE-37.sql
│       │                   ├── CREATE-TABLE-38.sql
│       │                   ├── CREATE-TABLE-39.sql
│       │                   ├── CREATE-TABLE-40.sql
│       │                   ├── CREATE-TABLE-41.sql
│       │                   ├── CREATE-TABLE-42.sql
│       │                   ├── CREATE-TABLE-43.sql
│       │                   ├── CREATE-TABLE-44.sql
│       │                   ├── CREATE-TABLE-45.sql
│       │                   ├── CREATE-TABLE-46.sql
│       │                   ├── CREATE-TABLE-47.sql
│       │                   ├── CREATE-TABLE-48.sql
│       │                   ├── CREATE-TABLE-49.sql
│       │                   ├── CREATE-TABLE-5.sql
│       │                   ├── CREATE-TABLE-50.sql
│       │                   ├── CREATE-TABLE-51.sql
│       │                   ├── CREATE-TABLE-52.sql
│       │                   ├── CREATE-TABLE-53.sql
│       │                   ├── CREATE-TABLE-54.sql
│       │                   ├── CREATE-TABLE-55.sql
│       │                   ├── CREATE-TABLE-56.sql
│       │                   ├── CREATE-TABLE-57.sql
│       │                   ├── CREATE-TABLE-58.sql
│       │                   ├── CREATE-TABLE-59.sql
│       │                   ├── CREATE-TABLE-6.sql
│       │                   ├── CREATE-TABLE-60.sql
│       │                   ├── CREATE-TABLE-61.sql
│       │                   ├── CREATE-TABLE-62.sql
│       │                   ├── CREATE-TABLE-63.sql
│       │                   ├── CREATE-TABLE-64.sql
│       │                   ├── CREATE-TABLE-65.sql
│       │                   ├── CREATE-TABLE-66.sql
│       │                   ├── CREATE-TABLE-67.sql
│       │                   ├── CREATE-TABLE-69.sql
│       │                   ├── CREATE-TABLE-7.sql
│       │                   ├── CREATE-TABLE-70.sql
│       │                   ├── CREATE-TABLE-71.sql
│       │                   ├── CREATE-TABLE-72.sql
│       │                   ├── CREATE-TABLE-73.sql
│       │                   ├── CREATE-TABLE-74.sql
│       │                   ├── CREATE-TABLE-75.sql
│       │                   ├── CREATE-TABLE-8.sql
│       │                   ├── CREATE-TABLE-9.sql
│       │                   ├── CREATE-TABLESPACE-0.sql
│       │                   ├── CREATE-TABLESPACE-1.sql
│       │                   ├── CREATE-TABLESPACE-10.sql
│       │                   ├── CREATE-TABLESPACE-11.sql
│       │                   ├── CREATE-TABLESPACE-12.sql
│       │                   ├── CREATE-TABLESPACE-14.sql
│       │                   ├── CREATE-TABLESPACE-15.sql
│       │                   ├── CREATE-TABLESPACE-16.sql
│       │                   ├── CREATE-TABLESPACE-2.sql
│       │                   ├── CREATE-TABLESPACE-3.sql
│       │                   ├── CREATE-TABLESPACE-4.sql
│       │                   ├── CREATE-TABLESPACE-5.sql
│       │                   ├── CREATE-TABLESPACE-6.sql
│       │                   ├── CREATE-TABLESPACE-7.sql
│       │                   ├── CREATE-TABLESPACE-8.sql
│       │                   ├── CREATE-TABLESPACE-9.sql
│       │                   ├── CREATE-TABLESPACE-SET-0.sql
│       │                   ├── CREATE-USER-0.sql
│       │                   ├── CREATE-USER-1.sql
│       │                   ├── CREATE-USER-2.sql
│       │                   ├── CREATE-USER-3.sql
│       │                   ├── CREATE-USER-4.sql
│       │                   ├── CREATE-USER-5.sql
│       │                   ├── CREATE-USER-6.sql
│       │                   ├── CREATE-USER-7.sql
│       │                   ├── CREATE-USER-8.sql
│       │                   ├── CREATE-USER-9.sql
│       │                   ├── CREATE-VIEW-1.sql
│       │                   ├── CREATE-VIEW-10.sql
│       │                   ├── CREATE-VIEW-11.sql
│       │                   ├── CREATE-VIEW-12.sql
│       │                   ├── CREATE-VIEW-13.sql
│       │                   ├── CREATE-VIEW-14.sql
│       │                   ├── CREATE-VIEW-15.sql
│       │                   ├── CREATE-VIEW-2.sql
│       │                   ├── CREATE-VIEW-3.sql
│       │                   ├── CREATE-VIEW-4.sql
│       │                   ├── CREATE-VIEW-5.sql
│       │                   ├── CREATE-VIEW-6.sql
│       │                   ├── CREATE-VIEW-7.sql
│       │                   ├── CREATE-VIEW-8.sql
│       │                   ├── CREATE-VIEW-9.sql
│       │                   ├── CUBE_TABLE-1.sql
│       │                   ├── CUBE_TABLE-2.sql
│       │                   ├── CUME_DIST-0.sql
│       │                   ├── CUME_DIST-1.sql
│       │                   ├── CURRENT_DATE-0.sql
│       │                   ├── CURRENT_TIMESTAMP-0.sql
│       │                   ├── CURRENT_TIMESTAMP-1.sql
│       │                   ├── CURRENT_TIMESTAMP-2.sql
│       │                   ├── CURRENT_TIMESTAMP-3.sql
│       │                   ├── CURSOR-Expressions-0.sql
│       │                   ├── CURSOR-Expressions-1.sql
│       │                   ├── CURSOR-Expressions-2.sql
│       │                   ├── CV-0.sql
│       │                   ├── Comments-0.sql
│       │                   ├── Comments-1.sql
│       │                   ├── Comments-10.sql
│       │                   ├── Comments-12.sql
│       │                   ├── Comments-13.sql
│       │                   ├── Comments-15.sql
│       │                   ├── Comments-16.sql
│       │                   ├── Comments-17.sql
│       │                   ├── Comments-18.sql
│       │                   ├── Comments-19.sql
│       │                   ├── Comments-2.sql
│       │                   ├── Comments-20.sql
│       │                   ├── Comments-21.sql
│       │                   ├── Comments-22.sql
│       │                   ├── Comments-23.sql
│       │                   ├── Comments-24.sql
│       │                   ├── Comments-25.sql
│       │                   ├── Comments-26.sql
│       │                   ├── Comments-27.sql
│       │                   ├── Comments-28.sql
│       │                   ├── Comments-29.sql
│       │                   ├── 
Download .txt
SYMBOL INDEX (474 symbols across 352 files)

FILE: plsql-custom-rules/src/main/java/com/company/plsql/ForbiddenDmlCheck.java
  class ForbiddenDmlCheck (line 11) | @Rule(
    method init (line 21) | @Override
    method visitNode (line 26) | @Override

FILE: plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesDefinition.java
  class PlSqlCustomRulesDefinition (line 5) | public class PlSqlCustomRulesDefinition extends CustomPlSqlRulesDefiniti...
    method repositoryName (line 7) | @Override
    method repositoryKey (line 12) | @Override
    method checkClasses (line 17) | @Override

FILE: plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesPlugin.java
  class PlSqlCustomRulesPlugin (line 5) | public class PlSqlCustomRulesPlugin implements Plugin {
    method define (line 7) | @Override

FILE: plsql-custom-rules/src/test/java/com/company/plsql/ForbiddenDmlCheckTest.java
  class ForbiddenDmlCheckTest (line 6) | public class ForbiddenDmlCheckTest {
    method test (line 8) | @Test

FILE: plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesDefinitionTest.java
  class PlSqlCustomRulesDefinitionTest (line 12) | public class PlSqlCustomRulesDefinitionTest {
    method test (line 14) | @Test

FILE: plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesPluginTest.java
  class PlSqlCustomRulesPluginTest (line 7) | public class PlSqlCustomRulesPluginTest {
    method testRepository (line 9) | @Test

FILE: sonar-zpa-plugin/src/test/resources/metrics/cpd.sql
  type foo (line 23) | create view foo as

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples-sql-script/green_table.sql
  type green_table (line 3) | create table green_table
  type green_table (line 11) | Create Table green_table

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/cluster.sql
  type idx_personnel (line 6) | CREATE INDEX idx_personnel ON CLUSTER personnel;

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/create_index.sql
  type "NORTHWIND" (line 1) | CREATE INDEX "NORTHWIND"."IDX_CUSTOMERS_REGION" ON "NORTHWIND"."CUSTOMER...
  type INDEX_SYS_LOG_YEAR (line 8) | CREATE INDEX INDEX_SYS_LOG_YEAR ON SYS_LOG (YEAR)
  type order_index (line 15) | CREATE UNIQUE INDEX order_index ON t_order (order_id)
  type order_index (line 16) | CREATE UNIQUE INDEX order_index ON t_order (order_id)
  type ON (line 18) | CREATE INDEX the_index IF NOT EXISTS ON t_order (order_id);

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/create_table.sql
  type employee (line 1) | CREATE TABLE employee (
  type employee (line 7) | CREATE TABLE employee (
  type persons (line 14) | CREATE TABLE persons OF person
  type purchaseorder_as_table (line 20) | CREATE TABLE purchaseorder_as_table OF XMLType
  type TEST (line 43) | CREATE TABLE TEST
  type DEMO (line 52) | CREATE TABLE DEMO (
  type DEMO (line 57) | CREATE TABLE DEMO (
  type DEMO (line 62) | CREATE TABLE DEMO (
  type products (line 67) | CREATE TABLE products (
  type products (line 75) | CREATE TABLE products (
  type "DVSADM" (line 83) | create table "DVSADM".CMP3$58238005 nocompress tablespace "DVS_PROOF" no...
  type CATEGORIES (line 123) | CREATE TABLE CATEGORIES (
  type "t_ddl_0027" (line 130) | CREATE TABLE "t_ddl_0027"(
  type "C##RCUSER" (line 139) | CREATE TABLE "C##RCUSER"."JSON_TRANS"(
  type "ASEDBUSR" (line 146) | CREATE TABLE "ASEDBUSR"."ECLAIMPROCESS"
  type "ASEDBUSR" (line 286) | CREATE UNIQUE INDEX "ASEDBUSR"."PK1019008" ON "ASEDBUSR"."ECLAIMPROCESS"...
  type "ASEDBUSR" (line 295) | CREATE TABLE "ASEDBUSR"."DOCBESTPARAMATTR"
  type t_order (line 342) | CREATE TABLE t_order
  type "A" (line 346) | CREATE TABLE "A"."B" ( "FIELD1" NUMBER(19,0)
  type bank_ledger (line 349) | CREATE BLOCKCHAIN TABLE bank_ledger (bank VARCHAR2(128)
  type bctab_part (line 354) | CREATE BLOCKCHAIN TABLE bctab_part (trans_id number primary key, sender ...
  type T_ORDER (line 365) | CREATE TABLE T_ORDER
  type print_media_demo (line 373) | CREATE TABLE print_media_demo
  type T (line 399) | CREATE TABLE T (
  type "D1
" (line 404) | CREATE TABLE "D1
  type T (line 408) | CREATE TABLE T (
  type tab (line 413) | CREATE TABLE tab (ID number(9)
  type tab (line 414) | CREATE TABLE tab (ID number(9)
  type tab (line 415) | CREATE TABLE tab (ID number(9)
  type tab (line 416) | CREATE TABLE tab (ID number(9)
  type tab (line 418) | CREATE TABLE tab IF NOT EXISTS (ID number(9)
  type T1 (line 420) | CREATE TABLE T1 (
  type PROCESSED (line 428) | create TABLE PROCESSED AS (
  type part_idx (line 434) | CREATE INDEX part_idx ON partitioned_by_index (part, val)

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/create_view.sql
  type VIEW_TEST_ROLE (line 1) | CREATE OR REPLACE VIEW VIEW_TEST_ROLE AS
  type VIEW_TEST_ROLE (line 6) | CREATE OR REPLACE FORCE VIEW VIEW_TEST_ROLE AS
  type VIEW_TEST_ROLE (line 11) | CREATE OR REPLACE NO FORCE VIEW VIEW_TEST_ROLE AS
  type warehouse_view (line 16) | CREATE VIEW warehouse_view OF XMLTYPE

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/ctas.sql
  type junk (line 1) | create table junk as select sysdate from dual
  type junk1 (line 3) | create table junk1 INITRANS 10 as select sysdate from dual

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/forall_indices_of.sql
  type tbl (line 1) | CREATE TABLE tbl (id NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/index.sql
  type IDX (line 1) | create index IDX on OBJ (CODE, DOCUMENT)
  type ord_customer_ix (line 9) | CREATE INDEX ord_customer_ix
  type ord_customer_ix_demo (line 12) | CREATE INDEX ord_customer_ix_demo
  type ord_customer_ix_demo (line 16) | CREATE INDEX ord_customer_ix_demo
  type idx_personnel (line 21) | CREATE INDEX idx_personnel ON CLUSTER personnel;
  type income_ix (line 25) | CREATE INDEX income_ix
  type src_idx (line 28) | CREATE INDEX src_idx ON print_media(text_length(ad_sourcetext))
  type area_idx (line 30) | CREATE INDEX area_idx ON rect_tab x (x.area())
  type cust_last_name_ix (line 32) | CREATE INDEX cust_last_name_ix ON customers (cust_last_name)
  type prod_idx (line 36) | CREATE INDEX prod_idx ON hash_products(category_id) LOCAL
  type product_bm_ix (line 39) | CREATE BITMAP INDEX product_bm_ix
  type nested_tab_ix (line 43) | CREATE UNIQUE INDEX nested_tab_ix

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/partitioned_tables.sql
  type sales (line 2) | CREATE TABLE sales
  type sales (line 23) | CREATE TABLE sales
  type interval_sales (line 46) | CREATE TABLE interval_sales
  type customers_demo (line 62) | CREATE TABLE customers_demo (
  type list_customers (line 71) | CREATE TABLE list_customers
  type hash_products (line 84) | CREATE TABLE hash_products
  type composite_sales (line 107) | CREATE TABLE composite_sales
  type customers_part (line 138) | CREATE TABLE customers_part (

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/single_statement.sql
  type PROCESSED (line 1) | create TABLE PROCESSED AS (

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/examples/views.sql
  type emp_view (line 1) | CREATE VIEW emp_view AS
  type ed_orders_view (line 6) | CREATE EDITIONING VIEW ed_orders_view (o_id, o_date, o_status)
  type emp_sal (line 10) | CREATE VIEW emp_sal (emp_id, last_name,
  type clerk (line 15) | CREATE VIEW clerk AS
  type clerk (line 22) | CREATE VIEW clerk AS
  type locations_view (line 30) | CREATE VIEW locations_view AS
  type customer_ro (line 35) | CREATE VIEW customer_ro (name, language, credit)
  type oc_inventories (line 40) | CREATE OR REPLACE VIEW oc_inventories OF inventory_typ
  type TEST (line 48) | CREATE EDITIONABLE VIEW TEST (A, B, C)
  type TEST (line 52) | CREATE VIEW TEST (A, B, C)

FILE: zpa-checks/src/integrationTest/resources/sources/antlr-grammars-v4/long-running/order_by07.sql
  type testview (line 1) | create or replace view testview

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-b-tree-indexes-json_value-0.sql
  type po_num_idx1 (line 2) | CREATE UNIQUE INDEX po_num_idx1 ON j_purchaseorder po

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-b-tree-indexes-json_value-1.sql
  type po_num_idx1 (line 2) | CREATE INDEX po_num_idx1 ON j_purchaseorder po

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-b-tree-indexes-json_value-2.sql
  type po_num_idx2 (line 2) | CREATE UNIQUE INDEX po_num_idx2 ON j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-b-tree-indexes-json_value-3.sql
  type po_ref_idx1 (line 2) | CREATE UNIQUE INDEX po_ref_idx1 ON j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-bitmap-indexes-json_value-0.sql
  type cost_ctr_idx (line 2) | CREATE BITMAP INDEX cost_ctr_idx ON j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-multivalue-function-based-indexes-json_exists-0.sql
  type parts_tab (line 2) | CREATE TABLE parts_tab (id NUMBER, jparts JSON)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-multivalue-function-based-indexes-json_exists-1.sql
  type mvi (line 2) | CREATE MULTIVALUE INDEX mvi ON parts_tab t

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-multivalue-function-based-indexes-json_exists-2.sql
  type cmvi_1 (line 2) | CREATE MULTIVALUE INDEX cmvi_1 ON parts_tab

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/creating-view-json-data-using-json_table-0.sql
  type j_purchaseorder_detail_view (line 2) | CREATE VIEW j_purchaseorder_detail_view

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-collections-4.sql
  type empview (line 2) | CREATE JSON COLLECTION VIEW empview AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-query-rewrite-use-materialized-view-json_table-2.sql
  type mv_idx (line 2) | CREATE INDEX mv_idx ON mv_for_query_rewrite(userid,

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-1.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON VALIDATE '{"type" : "object"}')

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-10.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON VALIDATE '{"type" : "object"}')

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-11.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON CONSTRAINT jchk
  type jtab (line 4) | CREATE TABLE jtab(jcol JSON DOMAIN jd)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-14.sql
  type mytable (line 2) | CREATE TABLE mytable (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-16.sql
  type mytable (line 2) | CREATE TABLE mytable (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-2.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON CONSTRAINT jchk

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-4.sql
  type jtab (line 2) | CREATE TABLE jtab(jcol JSON DOMAIN jd)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-schema-9.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON (OBJECT)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-1.sql
  type po_search_idx (line 2) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-2.sql
  type po_search_idx (line 2) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-3.sql
  type po_search_idx (line 2) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-5.sql
  type po_search_idx (line 2) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-6.sql
  type po_search_idx (line 2) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/json-search-index-ad-hoc-queries-and-full-text-search-7.sql
  type po_search_idx (line 14) | CREATE SEARCH INDEX po_search_idx ON j_purchaseorder (data)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/loading-external-json-data-1.sql
  type json_file_contents (line 2) | CREATE TABLE json_file_contents (data JSON)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/loading-external-json-data-2.sql
  type j_purchaseorder (line 3) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/partitioning-json-data-0.sql
  type orders (line 2) | CREATE JSON COLLECTION TABLE orders

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/persistent-data-guide-information-part-json-search-index-1.sql
  type po_dg_only_idx (line 2) | CREATE SEARCH INDEX po_dg_only_idx

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/populate-json-type-column-querying-textual-json-0.sql
  type j_purchaseorder_new (line 2) | CREATE TABLE j_purchaseorder_new PARALLEL NOLOGGING AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/read-only-views-based-json-generation-1.sql
  type department_view (line 2) | CREATE VIEW department_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/sql-json-conditions-is-json-and-is-not-json-6.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/sql-json-function-json_object-14.sql
  type po_ship (line 2) | CREATE TABLE po_ship

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/sql-json-function-json_object-19.sql
  type t1 (line 8) | CREATE TABLE t1 (col1 my_mailing_address_type)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/sql-json-path-expression-item-methods-4.sql
  type tab (line 2) | CREATE TABLE tab (data JSON)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/tables-json-columns-0.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/tables-json-columns-1.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/tables-json-columns-3.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/using-geojson-geographic-data-0.sql
  type j_geo (line 2) | CREATE TABLE j_geo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/using-geojson-geographic-data-5.sql
  type geo_first_feature_idx (line 2) | CREATE INDEX geo_first_feature_idx

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/using-online-redefinition-migrate-json-data-type-1.sql
  type j_purchaseorder_new (line 2) | CREATE TABLE j_purchaseorder_new (id VARCHAR2(32)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/adjsn/using-oracle-data-pump-migrate-json-data-type-0.sql
  type j_purchaseorder_new (line 2) | CREATE TABLE j_purchaseorder_new (id VARCHAR2(32)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/ALTER-TYPE-statement-2.sql
  type text (line 2) | CREATE TABLE text (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/CREATE-TYPE-statement-10.sql
  type demo_tab1 (line 4) | CREATE TABLE demo_tab1 (b1 NUMBER, b2 demo_typ1)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/CREATE-TYPE-statement-12.sql
  type demo_tab2 (line 2) | CREATE TABLE demo_tab2(col demo_typ2)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/autonomous-transactions-3.sql
  type emp (line 3) | CREATE TABLE emp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/autonomous-transactions-4.sql
  type emp (line 3) | CREATE TABLE emp AS SELECT * FROM employees
  type log (line 5) | CREATE TABLE log (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/autonomous-transactions-6.sql
  type temp (line 3) | CREATE TABLE temp (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/autonomous-transactions-9.sql
  type debug_output (line 3) | CREATE TABLE debug_output (message VARCHAR2(200)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/avoiding-inner-capture-select-and-dml-statements-0.sql
  type tab1 (line 5) | CREATE TABLE tab1 (tab2 type1)
  type tab2 (line 8) | CREATE TABLE tab2 (x NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/avoiding-inner-capture-select-and-dml-statements-4.sql
  type tb1 (line 5) | CREATE TABLE tb1 (col1 t1)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-1.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-15.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-2.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-28.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-3.sql
  type parts1 (line 3) | CREATE TABLE parts1 (
  type parts2 (line 8) | CREATE TABLE parts2 (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-30.sql
  type emp_by_dept (line 3) | CREATE TABLE emp_by_dept AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-42.sql
  type numbers1 (line 2) | CREATE OR REPLACE TYPE numbers_type IS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-5.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-59.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-6.sql
  type valid_orders (line 3) | CREATE TABLE valid_orders (
  type big_orders (line 8) | CREATE TABLE big_orders AS
  type rejected_orders (line 12) | CREATE TABLE rejected_orders AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-61.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-63.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/bulk-sql-and-bulk-binding-65.sql
  type emp_temp (line 3) | CREATE TABLE emp_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/chaining-pipelined-table-functions-multiple-transformations-16.sql
  type gradereport (line 3) | CREATE TABLE gradereport (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/collection-types-defined-package-specifications-2.sql
  type OF (line 2) | CREATE OR REPLACE TYPE NumList IS TABLE OF NUMBER;

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/column-name-precedence-0.sql
  type employees2 (line 3) | CREATE TABLE employees2 AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/column-name-precedence-2.sql
  type employees2 (line 3) | CREATE TABLE employees2 AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/column-name-precedence-4.sql
  type employees2 (line 3) | CREATE TABLE employees2 AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/continuing-execution-handling-exceptions-0.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/correlation-names-and-pseudorecords-15.sql
  type tab1 (line 3) | CREATE TABLE tab1 (c1 CLOB)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/correlation-names-and-pseudorecords-16.sql
  type new (line 2) | CREATE TABLE new (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/correlation-names-and-pseudorecords-2.sql
  type Emp_log (line 3) | CREATE TABLE Emp_log (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/cursors-overview-0.sql
  type dept_temp (line 3) | CREATE TABLE dept_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/cursors-overview-2.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/description-static-sql-0.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/description-static-sql-2.sql
  type employees_temp (line 3) | CREATE TABLE employees_temp AS
  type employees_temp2 (line 7) | CREATE TABLE employees_temp2 AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-1.sql
  type order_info (line 2) | CREATE OR REPLACE VIEW order_info AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-12.sql
  type dept_view (line 14) | CREATE OR REPLACE VIEW dept_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-24.sql
  type employee_salaries (line 2) | CREATE TABLE employee_salaries (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-33.sql
  type emp (line 2) | CREATE TABLE emp (
  type dept (line 11) | CREATE TABLE dept (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-39.sql
  type Salgrade (line 2) | CREATE TABLE Salgrade (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-45.sql
  type Book_table (line 3) | CREATE TABLE Book_table (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-47.sql
  type Library_table (line 3) | CREATE TABLE Library_table (Section VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/dml-triggers-49.sql
  type Library_view (line 2) | CREATE OR REPLACE VIEW Library_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/inserting-records-tables-0.sql
  type schedule (line 3) | CREATE TABLE schedule (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/native-dynamic-sql-11.sql
  type employees_temp (line 2) | CREATE TABLE employees_temp AS SELECT * FROM EMPLOYEES

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/package-example-0.sql
  type log (line 3) | CREATE TABLE log (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/pl-sql-function-result-cache-5.sql
  type global_config_params (line 3) | CREATE TABLE global_config_params
  type app_level_config_params (line 8) | CREATE TABLE app_level_config_params
  type role_level_config_params (line 14) | CREATE TABLE role_level_config_params

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/raising-exceptions-explicitly-2.sql
  type t (line 3) | CREATE TABLE t (c NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/record-variables-16.sql
  type t1 (line 12) | CREATE TABLE t1 (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/record-variables-22.sql
  type plch_departure (line 3) | CREATE TABLE plch_departure (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/record-variables-26.sql
  type t (line 2) | CREATE TABLE t (a INT, b INT, c INT INVISIBLE)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/redeclared-predefined-exceptions-0.sql
  type t (line 3) | CREATE TABLE t (c NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/retrieving-error-code-and-error-message-0.sql
  type errors (line 3) | CREATE TABLE errors (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/retrying-transactions-handling-exceptions-0.sql
  type results (line 3) | CREATE TABLE results (
  type res_name_ix (line 7) | CREATE UNIQUE INDEX res_name_ix ON results (res_name)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/serially_reusable-packages-3.sql
  type people (line 3) | CREATE TABLE people (name VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/sql-data-types-29.sql
  type PLS_VEC_TAB (line 2) | CREATE TABLE PLS_VEC_TAB(

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/sql-data-types-32.sql
  type theVectorTable (line 3) | CREATE TABLE theVectorTable (embedding VECTOR(3, float32), id NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/sql-data-types-36.sql
  type vecLogTable (line 4) | CREATE TABLE vecLogTable (embedding VECTOR(3, float32),

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/sql-data-types-48.sql
  type t (line 3) | CREATE TABLE t (c CHAR(3 CHAR))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/sql-injection-0.sql
  type secret_records (line 3) | CREATE TABLE secret_records (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-0.sql
  type accounts (line 3) | CREATE TABLE accounts (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-11.sql
  type emp (line 3) | CREATE TABLE emp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-5.sql
  type emp_name (line 3) | CREATE TABLE emp_name AS
  type empname_ix (line 6) | CREATE UNIQUE INDEX empname_ix
  type emp_sal (line 9) | CREATE TABLE emp_sal AS
  type empsal_ix (line 12) | CREATE UNIQUE INDEX empsal_ix
  type emp_job (line 15) | CREATE TABLE emp_job AS
  type empjobid_ix (line 18) | CREATE UNIQUE INDEX empjobid_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-6.sql
  type emp_name (line 3) | CREATE TABLE emp_name AS
  type empname_ix (line 6) | CREATE UNIQUE INDEX empname_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-7.sql
  type emp_name (line 3) | CREATE TABLE emp_name AS
  type empname_ix (line 6) | CREATE UNIQUE INDEX empname_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/transaction-processing-and-control-9.sql
  type emp (line 3) | CREATE TABLE emp AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/trigger-restrictions-0.sql
  type log (line 3) | CREATE TABLE log (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/trigger-restrictions-6.sql
  type p (line 3) | CREATE TABLE p (p1 NUMBER CONSTRAINT pk_p_p1 PRIMARY KEY)
  type f (line 8) | CREATE TABLE f (f1 NUMBER CONSTRAINT fk_f_f1 REFERENCES p)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/triggers-publishing-events-48.sql
  type event_table (line 2) | CREATE TABLE event_table (col VARCHAR2(2030)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/lnpls/what-is-capture-0.sql
  type tab1 (line 3) | CREATE TABLE tab1 (col1 NUMBER, col2 NUMBER)
  type tab2 (line 6) | CREATE TABLE tab2 (col1 NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-109.sql
  type emptab (line 4) | CREATE TABLE emptab OF emp_t;

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-11.sql
  type JOBS_Temp (line 2) | CREATE TABLE JOBS_Temp AS SELECT * FROM HR.JOBS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-111.sql
  type staff (line 5) | CREATE TABLE staff

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-115.sql
  type t1 (line 2) | CREATE TABLE t1 (n NUMBER, x ANYDATA)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-122.sql
  type table1 (line 2) | CREATE TABLE table1 (T NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-16.sql
  type product (line 2) | CREATE TABLE product(

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-31.sql
  type students (line 2) | CREATE TABLE students (last_name VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-36.sql
  type t1 (line 2) | CREATE TABLE t1 (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-40.sql
  type JOBS_Temp (line 2) | CREATE TABLE JOBS_Temp AS SELECT * FROM HR.JOBS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-52.sql
  type print_media_part (line 2) | CREATE TABLE print_media_part (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-63.sql
  type exchange_table (line 2) | CREATE TABLE exchange_table (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-70.sql
  type cost_ix (line 2) | CREATE INDEX cost_ix ON costs(channel_id)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-71.sql
  type emp (line 4) | CREATE TABLE emp OF emp_t (
  type dept (line 8) | CREATE TABLE dept (dno NUMBER, mgr_ref REF emp_t SCOPE is emp)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-74.sql
  type emp2 (line 2) | CREATE TABLE emp2 AS SELECT * FROM employees

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-77.sql
  type JOBS_TEMP (line 2) | CREATE TABLE JOBS_TEMP AS SELECT * FROM HR.JOBS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-81.sql
  type JOBS_Temp (line 2) | CREATE TABLE JOBS_Temp AS SELECT * FROM HR.JOBS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/ALTER-TABLE-95.sql
  type t1 (line 3) | CREATE TABLE t1 (name VARCHAR2(10)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CAST-10.sql
  type projects (line 2) | CREATE TABLE projects
  type emps_short (line 4) | CREATE TABLE emps_short

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CAST-7.sql
  type cust_address (line 6) | CREATE TABLE cust_address (
  type cust_short (line 14) | CREATE TABLE cust_short (custno NUMBER, name VARCHAR2(31)
  type states (line 16) | CREATE TABLE states (state_id NUMBER, addresses address_array_t)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/COLLATION-0.sql
  type id_table (line 2) | CREATE TABLE id_table

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/COLUMN_VALUE-Pseudocolumn-4.sql
  type my_customers (line 2) | CREATE TABLE my_customers (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-CLUSTER-10.sql
  type emp_dept_index (line 2) | CREATE INDEX emp_dept_index

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-CLUSTER-2.sql
  type dept_10 (line 2) | CREATE TABLE dept_10
  type dept_20 (line 5) | CREATE TABLE dept_20

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-CLUSTER-8.sql
  type dept (line 2) | CREATE TABLE dept (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-CLUSTER-9.sql
  type empl (line 2) | CREATE TABLE empl (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-CONTEXT-1.sql
  type hr_org_secure_view (line 2) | CREATE VIEW hr_org_secure_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-EDITION-2.sql
  type e_view (line 3) | CREATE EDITIONING VIEW e_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-EDITION-3.sql
  type e_view (line 3) | CREATE OR REPLACE EDITIONING VIEW e_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-0.sql
  type mvi_1 (line 2) | CREATE MULTIVALUE INDEX mvi_1 ON mytable t

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-10.sql
  type area_index (line 2) | CREATE INDEX area_index ON xwarehouses e

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-12.sql
  type upper_ix (line 2) | CREATE INDEX upper_ix ON employees (UPPER(last_name))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-14.sql
  type income_ix (line 2) | CREATE INDEX income_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-15.sql
  type src_idx (line 2) | CREATE INDEX src_idx ON print_media(text_length(ad_sourcetext))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-19.sql
  type promo_ix (line 2) | CREATE UNIQUE INDEX promo_ix ON orders

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-20.sql
  type cost_ix (line 2) | CREATE INDEX cost_ix ON sales (amount_sold)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-21.sql
  type cust_last_name_ix (line 2) | CREATE INDEX cust_last_name_ix ON customers (cust_last_name)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-22.sql
  type prod_idx (line 2) | CREATE INDEX prod_idx ON hash_products(category_id) LOCAL

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-23.sql
  type sales_ix (line 2) | CREATE INDEX sales_ix ON composite_sales(time_id, prod_id)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-24.sql
  type product_bm_ix (line 2) | CREATE BITMAP INDEX product_bm_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-25.sql
  type hash_products (line 2) | CREATE TABLE hash_products
  type sales_quota (line 24) | CREATE TABLE sales_quota
  type product_bm_ix (line 30) | CREATE BITMAP INDEX product_bm_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-26.sql
  type nested_tab_ix (line 2) | CREATE UNIQUE INDEX nested_tab_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-27.sql
  type salary_i (line 2) | CREATE INDEX salary_i

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-28.sql
  type salary_func_i (line 2) | CREATE INDEX salary_func_i ON persons p

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-29.sql
  type typeid_i (line 2) | CREATE BITMAP INDEX typeid_i ON books (SYS_TYPEID(author))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-4.sql
  type cust_eff_ix (line 2) | CREATE INDEX cust_eff_ix ON customers

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-6.sql
  type ord_customer_ix (line 2) | CREATE INDEX ord_customer_ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-7.sql
  type ord_customer_ix_demo (line 2) | CREATE INDEX ord_customer_ix_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-INDEX-8.sql
  type ord_customer_ix_demo (line 2) | CREATE INDEX ord_customer_ix_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-MATERIALIZED-VIEW-4.sql
  type sales_sum_table (line 2) | CREATE TABLE sales_sum_table

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-SCHEMA-0.sql
  type new_product (line 3) | CREATE TABLE new_product
  type new_product_view (line 5) | CREATE VIEW new_product_view

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-1.sql
  type trade_ledger (line 2) | CREATE IMMUTABLE TABLE trade_ledger (tr_id NUMBER, user_name VARCHAR2(40)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-10.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-12.sql
  type staging_table (line 2) | CREATE TABLE staging_table (col1 number, col2 varchar2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-13.sql
  type part_staging_table (line 2) | CREATE TABLE part_staging_table (col1 number, col2 varchar2(100))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-14.sql
  type employees_demo (line 2) | CREATE TABLE employees_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-15.sql
  type employees_demo (line 2) | CREATE TABLE employees_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-16.sql
  type myemp (line 2) | CREATE TABLE myemp (employee_id number, last_name varchar2(25),

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-20.sql
  type t1 (line 2) | CREATE TABLE t1 (id NUMBER GENERATED AS IDENTITY)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-21.sql
  type t2 (line 2) | CREATE TABLE t2 (id NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH ...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-22.sql
  type today_sales (line 2) | CREATE GLOBAL TEMPORARY TABLE today_sales

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-23.sql
  type later (line 2) | CREATE TABLE later (col1 NUMBER, col2 VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-26.sql
  type books (line 2) | CREATE TABLE books (title VARCHAR2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-27.sql
  type dept_80 (line 2) | CREATE TABLE dept_80

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-28.sql
  type dept_80 (line 2) | CREATE TABLE dept_80

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-29.sql
  type departments_demo (line 2) | CREATE TABLE departments_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-30.sql
  type departments_demo (line 2) | CREATE TABLE departments_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-31.sql
  type print_media (line 2) | CREATE TABLE print_media

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-34.sql
  type print_media_new (line 2) | CREATE TABLE print_media_new

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-35.sql
  type countries_demo (line 2) | CREATE TABLE countries_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-36.sql
  type dept_external (line 2) | CREATE TABLE dept_external (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-39.sql
  type xwarehouses (line 2) | CREATE TABLE xwarehouses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-40.sql
  type xwarehouses (line 2) | CREATE TABLE xwarehouses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-41.sql
  type xwarehouses (line 2) | CREATE TABLE xwarehouses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-42.sql
  type range_sales (line 2) | CREATE TABLE range_sales

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-43.sql
  type empl_h (line 2) | CREATE TABLE empl_h

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-46.sql
  type parts (line 2) | CREATE TABLE parts (p_name) AS SELECT PARTITION_NAME FROM USER_TAB_PARTI...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-49.sql
  type customers_demo (line 2) | CREATE TABLE customers_demo (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-5.sql
  type bank_ledger (line 2) | CREATE BLOCKCHAIN TABLE bank_ledger (bank VARCHAR2(128)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-53.sql
  type list_customers (line 2) | CREATE TABLE list_customers

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-54.sql
  type print_media_demo (line 2) | CREATE TABLE print_media_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-55.sql
  type hash_products (line 2) | CREATE TABLE hash_products

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-56.sql
  type part_order_items (line 2) | CREATE TABLE part_order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-57.sql
  type composite_sales (line 2) | CREATE TABLE composite_sales

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-58.sql
  type customers_part (line 2) | CREATE TABLE customers_part (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-62.sql
  type employees_obj_t (line 5) | CREATE TABLE employees_obj_t OF employees_typ (e_no PRIMARY KEY)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-63.sql
  type departments_t (line 2) | CREATE TABLE departments_t
  type departments_t (line 5) | CREATE TABLE departments_t (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-64.sql
  type persons (line 15) | CREATE TABLE persons OF person

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-65.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-66.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER) ANNOTATIONS (ADD Hidden)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-67.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER ANNOTATIONS(Operations 'Sort' , Hidden) )

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-7.sql
  type bank_ledger (line 2) | CREATE BLOCKCHAIN TABLE bank_ledger (bank VARCHAR2(128)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-72.sql
  type tm1 (line 2) | CREATE TABLE tm1 (c1 NUMBER, c2 NUMBER, c3 VARCHAR2(15)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-74.sql
  type t2 (line 2) | CREATE TABLE t2 (id NUMBER, doc XMLTYPE)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-8.sql
  type mydoc (line 2) | CREATE TABLE mydoc(id NUMBER, docCreationTime DATE, doc CLOB, json_doc J...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLE-9.sql
  type mydoc (line 2) | CREATE TABLE mydoc(id NUMBER, docCreationTime DATE, doc CLOB, json_doc J...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLESPACE-10.sql
  type lmt_table1 (line 4) | CREATE TABLE lmt_table1 (col1 NUMBER, col2 VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-TABLESPACE-11.sql
  type lmt_table2 (line 4) | CREATE TABLE lmt_table2 (col1 NUMBER, col2 VARCHAR2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-1.sql
  type emp_view (line 2) | CREATE VIEW emp_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-10.sql
  type customer_ro (line 2) | CREATE VIEW customer_ro (name, language, credit)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-11.sql
  type oc_inventories (line 10) | CREATE OR REPLACE VIEW oc_inventories OF inventory_typ

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-12.sql
  type warehouse_view (line 2) | CREATE VIEW warehouse_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-14.sql
  type warehouse_table (line 2) | CREATE TABLE warehouse_table
  type warehouse_view (line 15) | CREATE VIEW warehouse_view OF XMLTYPE

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-2.sql
  type ed_orders_view (line 2) | CREATE EDITIONING VIEW ed_orders_view (o_id, o_date, o_status)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-3.sql
  type emp_sal (line 2) | CREATE VIEW emp_sal (emp_id, last_name,

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-4.sql
  type clerk (line 2) | CREATE VIEW clerk AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-6.sql
  type clerk (line 2) | CREATE VIEW clerk AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CREATE-VIEW-7.sql
  type locations_view (line 2) | CREATE VIEW locations_view AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/CURRENT_TIMESTAMP-1.sql
  type current_test (line 2) | CREATE TABLE current_test (col1 TIMESTAMP WITH TIME ZONE)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Comments-1.sql
  type v (line 2) | CREATE VIEW v AS
  type t (line 6) | CREATE TABLE t AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Comments-44.sql
  type parallel_table (line 2) | CREATE TABLE parallel_table (col1 number, col2 VARCHAR2(10)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Comments-49.sql
  type target_table (line 2) | CREATE /*+ PQ_DISTRIBUTE(target_table, PARTITION) */ TABLE target_table

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Concatenation-Operator-1.sql
  type tab1 (line 2) | CREATE TABLE tab1 (col1 VARCHAR2(6)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/DELETE-7.sql
  type product_price_history (line 2) | CREATE TABLE product_price_history (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-15.sql
  type time_table (line 2) | CREATE TABLE time_table

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-17.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-18.sql
  type example (line 2) | CREATE TABLE example (id NUMBER, c1 BOOLEAN, c2 BOOL)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-21.sql
  type example (line 2) | CREATE TABLE example (id NUMBER, c1 BOOLEAN, c2 BOOL)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-3.sql
  type test (line 2) | CREATE TABLE test (col1 NUMBER(5,2)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-32.sql
  type t (line 2) | CREATE TABLE t (v VECTOR)
  type t (line 3) | CREATE TABLE t (v VECTOR(*, *)
  type t (line 4) | CREATE TABLE t (v VECTOR(100)
  type t (line 5) | CREATE TABLE t (v VECTOR(100, *)
  type t (line 6) | CREATE TABLE t (v VECTOR(*, FLOAT32))
  type t (line 7) | CREATE TABLE t (v VECTOR(100, FLOAT32))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-33.sql
  type my_vect_tab (line 2) | CREATE TABLE my_vect_tab (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-34.sql
  type my_vectors (line 2) | CREATE TABLE my_vectors (id NUMBER, embedding VECTOR)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Data-Types-35.sql
  type my_vectors (line 2) | CREATE TABLE my_vectors (id NUMBER, embedding VECTOR(768, INT8))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/FLASHBACK-TABLE-1.sql
  type employees_test (line 2) | CREATE TABLE employees_test

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/GRANT-14.sql
  type dependent (line 2) | CREATE TABLE dependent

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/HEXTORAW-0.sql
  type test (line 2) | CREATE TABLE test (raw_col RAW(10)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/INSERT-10.sql
  type raises (line 2) | CREATE TABLE raises (emp_id NUMBER, sal NUMBER

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/INSERT-17.sql
  type long_tab (line 2) | CREATE TABLE long_tab (pic_id NUMBER, long_pics LONG RAW)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/INSERT-18.sql
  type lob_tab (line 2) | CREATE TABLE lob_tab (pic_id NUMBER, lob_pics BLOB)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/INSERT-26.sql
  type small_orders (line 2) | CREATE TABLE small_orders
  type medium_orders (line 8) | CREATE TABLE medium_orders AS SELECT * FROM small_orders
  type large_orders (line 9) | CREATE TABLE large_orders AS SELECT * FROM small_orders
  type special_orders (line 10) | CREATE TABLE special_orders

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/INSERT-31.sql
  type people (line 2) | CREATE TABLE people (
  type patients (line 9) | CREATE TABLE patients (
  type staff (line 13) | CREATE TABLE staff (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/JSON_ARRAYAGG-0.sql
  type id_table (line 2) | CREATE TABLE id_table (id NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/JSON_TABLE-4.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/LOCALTIMESTAMP-1.sql
  type local_test (line 2) | CREATE TABLE local_test (col1 TIMESTAMP WITH LOCAL TIME ZONE)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/MERGE-0.sql
  type bonuses (line 2) | CREATE TABLE bonuses (employee_id NUMBER, bonus NUMBER DEFAULT 100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/MERGE-1.sql
  type people_source (line 2) | CREATE TABLE people_source (
  type people_target (line 8) | CREATE TABLE people_target (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Multiset-Operators-0.sql
  type customers_demo (line 2) | CREATE TABLE customers_demo AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/NLSSORT-1.sql
  type test (line 2) | CREATE TABLE test (name VARCHAR2(15)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Object-Access-Expressions-0.sql
  type short_orders (line 2) | CREATE TABLE short_orders (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Pattern-matching-Conditions-10.sql
  type ducks (line 2) | CREATE TABLE ducks (f CHAR(6), v VARCHAR2(6)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REFTOHEX-0.sql
  type warehouse_table (line 2) | CREATE TABLE warehouse_table OF warehouse_typ
  type location_table (line 4) | CREATE TABLE location_table

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REGEXP_COUNT-12.sql
  type regexp_temp (line 2) | CREATE TABLE regexp_temp(empName varchar2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REGEXP_INSTR-6.sql
  type regexp_temp (line 2) | CREATE TABLE regexp_temp(empName varchar2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REGEXP_REPLACE-3.sql
  type regexp_temp (line 2) | CREATE TABLE regexp_temp(empName varchar2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REGEXP_SUBSTR-4.sql
  type regexp_temp (line 2) | CREATE TABLE regexp_temp(empName varchar2(20)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/RENAME-1.sql
  type temporary (line 2) | CREATE TABLE temporary

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/REVOKE-14.sql
  type dependent (line 2) | CREATE TABLE dependent

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-115.sql
  type Ticker (line 2) | CREATE TABLE Ticker (SYMBOL VARCHAR2(10)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-118.sql
  type chunk_table (line 2) | CREATE TABLE chunk_table (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-64.sql
  type sales_view_ref (line 2) | CREATE OR REPLACE VIEW sales_view_ref AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-75.sql
  type pivot_table (line 2) | CREATE TABLE pivot_table AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-82.sql
  type new_departments (line 2) | CREATE TABLE new_departments

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SELECT-90.sql
  type inventory (line 2) | CREATE TABLE inventory (time_id    DATE,

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-0.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON VALIDATE '{"type" : "object"}')

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-1.sql
  type tab (line 2) | CREATE TABLE tab (jcol JSON CONSTRAINT jchk

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-14.sql
  type t (line 2) | CREATE TABLE t (col1 VARCHAR2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-19.sql
  type t (line 2) | CREATE TABLE t (col1 VARCHAR2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-23.sql
  type j_purchaseorder (line 2) | CREATE TABLE j_purchaseorder

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-28.sql
  type t (line 2) | CREATE TABLE t (name VARCHAR2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-3.sql
  type jtab (line 2) | CREATE TABLE jtab(jcol JSON DOMAIN jd)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-35.sql
  type families (line 2) | CREATE TABLE families (family_doc VARCHAR2(200)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-36.sql
  type ix (line 2) | CREATE INDEX ix

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/SQL-JSON-Conditions-5.sql
  type jtab (line 2) | CREATE TABLE jtab (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Syntax-for-Schema-Objects-and-Parts-in-SQL-Statements-3.sql
  type Q1_2000_sales (line 2) | CREATE VIEW Q1_2000_sales AS

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TO_BINARY_DOUBLE-0.sql
  type float_point_demo (line 2) | CREATE TABLE float_point_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TO_CHAR-character-2.sql
  type empl_temp (line 2) | CREATE TABLE empl_temp

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TO_CHAR-datetime-1.sql
  type date_tab (line 2) | CREATE TABLE date_tab (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TO_CHAR-datetime-10.sql
  type empl_temp (line 2) | CREATE TABLE empl_temp

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TO_CHAR-number-5.sql
  type empl_temp (line 2) | CREATE TABLE empl_temp

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/TRANSLATE-USING-0.sql
  type translate_tab (line 2) | CREATE TABLE translate_tab (char_col  VARCHAR2(100)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Using-Extensible-Indexing-6.sql
  type salary_index (line 2) | CREATE INDEX salary_index ON employees(salary)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Using-XML-in-SQL-Statements-8.sql
  type xwarehouses (line 2) | CREATE TABLE xwarehouses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/Using-XML-in-SQL-Statements-9.sql
  type xwarehouses (line 2) | CREATE TABLE xwarehouses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/XMLTRANSFORM-0.sql
  type xsl_tab (line 2) | CREATE TABLE xsl_tab (col1 XMLTYPE)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/annotations_clause-0.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/annotations_clause-1.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER) ANNOTATIONS (ADD Hidden)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/annotations_clause-3.sql
  type t1 (line 2) | CREATE TABLE t1 (T NUMBER ANNOTATIONS(Operations 'Sort' , Hidden) )

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/annotations_clause-4.sql
  type employee (line 2) | CREATE TABLE employee (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-0.sql
  type promotions_var1 (line 2) | CREATE TABLE promotions_var1

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-1.sql
  type promotions_var2 (line 2) | CREATE TABLE promotions_var2

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-12.sql
  type dept_20 (line 2) | CREATE TABLE dept_20

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-13.sql
  type order_detail (line 2) | CREATE TABLE order_detail

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-14.sql
  type Product (line 2) | CREATE TABLE Product(

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-21.sql
  type products (line 2) | CREATE TABLE products
  type product_components (line 8) | CREATE TABLE product_components

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-27.sql
  type customer_addresses (line 11) | CREATE TABLE customer_addresses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-28.sql
  type customer_addresses (line 2) | CREATE TABLE customer_addresses (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-29.sql
  type employees_obj (line 2) | CREATE TABLE employees_obj

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-3.sql
  type locations_demo (line 2) | CREATE TABLE locations_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-30.sql
  type employees_obj (line 2) | CREATE TABLE employees_obj

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-31.sql
  type promotions_var3 (line 2) | CREATE TABLE promotions_var3

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-32.sql
  type games (line 2) | CREATE TABLE games (scores NUMBER CHECK (scores >= 0))

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-33.sql
  type games (line 2) | CREATE TABLE games

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-4.sql
  type locations_demo (line 2) | CREATE TABLE locations_demo

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-7.sql
  type dept_20 (line 2) | CREATE TABLE dept_20

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-8.sql
  type dept_20 (line 2) | CREATE TABLE dept_20

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/constraint-9.sql
  type dept_20 (line 2) | CREATE TABLE dept_20

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-domain-17.sql
  type tax_report (line 2) | CREATE TABLE tax_report(id NUMBER, income JSON DOMAIN w2_form)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-domain-28.sql
  type jtab (line 2) | CREATE TABLE jtab(

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-domain-32.sql
  type orders (line 2) | CREATE TABLE orders (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-vector-index-0.sql
  type galaxies_hnsw_idx (line 2) | CREATE VECTOR INDEX galaxies_hnsw_idx ON galaxies (embedding)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-vector-index-1.sql
  type galaxies_hnsw_idx (line 2) | CREATE VECTOR INDEX galaxies_hnsw_idx ON galaxies (embedding) ORGANIZATI...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-vector-index-2.sql
  type galaxies_ivf_idx (line 2) | CREATE VECTOR INDEX galaxies_ivf_idx ON galaxies (embedding)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/create-vector-index-3.sql
  type galaxies_ivf_idx (line 2) | CREATE VECTOR INDEX galaxies_ivf_idx ON galaxies (embedding) ORGANIZATIO...

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check-6.sql
  type calendar_dates (line 3) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check-7.sql
  type calendar_dates (line 5) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check-9.sql
  type order_items (line 2) | CREATE TABLE order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check_type-5.sql
  type calendar_dates (line 3) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check_type-6.sql
  type calendar_dates (line 5) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_check_type-8.sql
  type order_items (line 2) | CREATE TABLE order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_display-1.sql
  type calendar_dates (line 2) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_display-5.sql
  type order_items (line 2) | CREATE TABLE order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_name-1.sql
  type hr (line 2) | CREATE TABLE hr.calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_name-5.sql
  type co (line 2) | CREATE TABLE co.order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_order-1.sql
  type calendar_dates (line 2) | CREATE TABLE calendar_dates (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/domain_order-5.sql
  type order_items (line 2) | CREATE TABLE order_items (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/graph_table-operator-0.sql
  type university (line 2) | CREATE TABLE university (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/graph_table-operator-1.sql
  type persons (line 2) | CREATE TABLE persons (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/graph_table-operator-2.sql
  type students (line 2) | CREATE TABLE students (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/graph_table-operator-3.sql
  type friendships (line 2) | CREATE TABLE friendships (

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/storage_clause-0.sql
  type divisions (line 2) | CREATE TABLE divisions

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/sys_row_etag-0.sql
  type foo (line 2) | CREATE TABLE foo (c1 NUMBER, c2 NUMBER, c3 NUMBER)

FILE: zpa-checks/src/integrationTest/resources/sources/oracle-database_23/sqlrf/vector_chunks-2.sql
  type documentation_tab (line 2) | CREATE TABLE documentation_tab (
Condensed preview — 5068 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,087K chars).
[
  {
    "path": ".editorconfig",
    "chars": 363,
    "preview": "root = true\n\n[*]\ncharset=utf-8\ninsert_final_newline=true\nindent_style=space\nindent_size=4\n\n[*.xml]\nindent_size=2\n\n[*.yml"
  },
  {
    "path": ".gitattributes",
    "chars": 100,
    "preview": "*.sql linguist-language=PLSQL\nzpa-checks/src/integrationTest/resources/sources/** linguist-vendored\n"
  },
  {
    "path": ".github/renovate.json",
    "chars": 387,
    "preview": "{\n    \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n    \"extends\": [\n        \"config:best-practices\",\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 5110,
    "preview": "name: Build\n\non:\n  push:\n    branches:\n      - \"*\"\n  pull_request:\n    branches:\n      - main\n\nenv:\n  JAVA_VERSION: 21\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 805,
    "preview": "*.pydevproject\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.settings/\n.loadpath\ntarget/\ndependency-red"
  },
  {
    "path": ".gitmodules",
    "chars": 849,
    "preview": "[submodule \"its/sources/pljson\"]\n\tpath = zpa-checks/src/integrationTest/resources/sources/pljson\n\turl = https://github.c"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5493,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1452,
    "preview": "# Contributing\r\n\r\nThank you for your interest in contributing to our project! We appreciate your time and effort.\r\n\r\n## "
  },
  {
    "path": "LICENSE",
    "chars": 7652,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "LICENSE_HEADER",
    "chars": 806,
    "preview": "Z PL/SQL Analyzer\nCopyright (C) 2015-${year} Felipe Zorzo\nmailto:felipe AT felipezorzo DOT com DOT br\n\nThis program is f"
  },
  {
    "path": "README.md",
    "chars": 4265,
    "preview": "# ZPA\n\n[![Latest release](https://img.shields.io/github/release/felipebz/zpa.svg) ](https://github.com/felipebz/zpa/rele"
  },
  {
    "path": "build-logic/build.gradle.kts",
    "chars": 346,
    "preview": "plugins {\n    `kotlin-dsl`\n}\n\nrepositories {\n    gradlePluginPortal()\n    mavenCentral()\n}\n\ndependencies {\n    implement"
  },
  {
    "path": "build-logic/settings.gradle.kts",
    "chars": 219,
    "preview": "dependencyResolutionManagement {\n    // Reuse version catalog from the main build.\n    versionCatalogs {\n        create("
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/build-conventions.gradle.kts",
    "chars": 228,
    "preview": "package com.felipebz.zpa\n\nplugins {\n    id(\"com.felipebz.zpa.kotlin-conventions\")\n    id(\"com.felipebz.zpa.testing-conve"
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/jreleaser-conventions.gradle.kts",
    "chars": 2535,
    "preview": "package com.felipebz.zpa\n\nplugins {\n    id(\"org.jreleaser\")\n}\n\njreleaser {\n    project {\n        description.set(\"ZPA - "
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/kotlin-conventions.gradle.kts",
    "chars": 458,
    "preview": "package com.felipebz.zpa\n\nplugins {\n    id(\"java\")\n    id(\"org.jetbrains.kotlin.jvm\")\n}\n\nrepositories {\n    mavenCentral"
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/license-conventions.gradle.kts",
    "chars": 624,
    "preview": "package com.felipebz.zpa\n\nimport com.hierynomus.gradle.license.tasks.LicenseCheck\nimport com.hierynomus.gradle.license.t"
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/publishing-conventions.gradle.kts",
    "chars": 2308,
    "preview": "package com.felipebz.zpa\n\nimport org.gradle.api.publish.maven.MavenPublication\nimport org.gradle.kotlin.dsl.create\nimpor"
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/sonarqube-conventions.gradle.kts",
    "chars": 145,
    "preview": "package com.felipebz.zpa\n\nplugins {\n    id(\"org.sonarqube\")\n}\n\nsonarqube {\n    properties {\n        property(\"sonar.proj"
  },
  {
    "path": "build-logic/src/main/kotlin/com/felipebz/zpa/testing-conventions.gradle.kts",
    "chars": 998,
    "preview": "package com.felipebz.zpa\n\nplugins {\n    id(\"com.felipebz.zpa.kotlin-conventions\")\n    id(\"jacoco\")\n}\n\nval libs = extensi"
  },
  {
    "path": "build.gradle.kts",
    "chars": 119,
    "preview": "plugins {\n    base\n    id(\"com.felipebz.zpa.jreleaser-conventions\")\n    id(\"com.felipebz.zpa.sonarqube-conventions\")\n}\n"
  },
  {
    "path": "gradle/libs.versions.toml",
    "chars": 2710,
    "preview": "[versions]\nkotlin = \"2.3.21\"\ndokka = \"2.2.0\"\ndownload = \"5.7.0\"\njreleaser = \"1.23.0\"\nlicense = \"0.16.1\"\nshadow = \"9.4.1\""
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 281,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "gradle.properties",
    "chars": 292,
    "preview": "group=com.felipebz.zpa\nversion=4.2.0-SNAPSHOT\n\n# Workaround for Dokka issue: https://github.com/Kotlin/dokka/issues/1405"
  },
  {
    "path": "gradlew",
    "chars": 8631,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
  },
  {
    "path": "gradlew.bat",
    "chars": 2846,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "plsql-custom-rules/README.md",
    "chars": 1655,
    "preview": "# plsql-custom-rules\n\nThis repository contains examples of custom rules for PL/SQL code analysis using SonarQube. The ex"
  },
  {
    "path": "plsql-custom-rules/build.gradle.kts",
    "chars": 2289,
    "preview": "import java.time.ZoneId\nimport java.time.format.DateTimeFormatter\nimport java.util.*\n\nplugins {\n    java\n}\n\nrepositories"
  },
  {
    "path": "plsql-custom-rules/gradle/wrapper/gradle-wrapper.properties",
    "chars": 281,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "plsql-custom-rules/gradlew",
    "chars": 8631,
    "preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
  },
  {
    "path": "plsql-custom-rules/gradlew.bat",
    "chars": 2846,
    "preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
  },
  {
    "path": "plsql-custom-rules/pom.xml",
    "chars": 3169,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
  },
  {
    "path": "plsql-custom-rules/settings.gradle.kts",
    "chars": 40,
    "preview": "rootProject.name = \"plsql-custom-rules\"\n"
  },
  {
    "path": "plsql-custom-rules/src/main/java/com/company/plsql/ForbiddenDmlCheck.java",
    "chars": 1198,
    "preview": "package com.company.plsql;\n\nimport org.sonar.plugins.plsqlopen.api.annotations.Priority;\nimport org.sonar.plugins.plsqlo"
  },
  {
    "path": "plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesDefinition.java",
    "chars": 481,
    "preview": "package com.company.plsql;\n\nimport org.sonar.plugins.plsqlopen.api.CustomPlSqlRulesDefinition;\n\npublic class PlSqlCustom"
  },
  {
    "path": "plsql-custom-rules/src/main/java/com/company/plsql/PlSqlCustomRulesPlugin.java",
    "chars": 255,
    "preview": "package com.company.plsql;\n\nimport org.sonar.api.Plugin;\n\npublic class PlSqlCustomRulesPlugin implements Plugin {\n    \n "
  },
  {
    "path": "plsql-custom-rules/src/main/resources/META-INF/extensions.idx",
    "chars": 45,
    "preview": "com.company.plsql.PlSqlCustomRulesDefinition\n"
  },
  {
    "path": "plsql-custom-rules/src/test/java/com/company/plsql/ForbiddenDmlCheckTest.java",
    "chars": 310,
    "preview": "package com.company.plsql;\n\nimport org.junit.jupiter.api.Test;\nimport com.felipebz.zpa.checks.verifier.PlSqlCheckVerifie"
  },
  {
    "path": "plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesDefinitionTest.java",
    "chars": 712,
    "preview": "package com.company.plsql;\n\nimport org.junit.jupiter.api.Test;\nimport org.sonar.api.Plugin;\nimport org.sonar.api.SonarEd"
  },
  {
    "path": "plsql-custom-rules/src/test/java/com/company/plsql/PlSqlCustomRulesPluginTest.java",
    "chars": 472,
    "preview": "package com.company.plsql;\n\nimport org.junit.jupiter.api.Test;\n\nimport static org.junit.jupiter.api.Assertions.assertEqu"
  },
  {
    "path": "plsql-custom-rules/src/test/resources/forbidden-dml.sql",
    "chars": 236,
    "preview": "select * \n  from user u inner join profile p on (u.id = p.user_id); -- Noncompliant {{Replace this query by a function o"
  },
  {
    "path": "settings.gradle.kts",
    "chars": 207,
    "preview": "pluginManagement {\n    includeBuild(\"build-logic\")\n}\n\nrootProject.name = \"zpa\"\ninclude(\":sonar-zpa-plugin\")\ninclude(\":zp"
  },
  {
    "path": "sonar-zpa-plugin/build.gradle.kts",
    "chars": 3805,
    "preview": "import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar\nimport groovy.util.Node\nimport groovy.util.NodeList\nim"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/IssueTest.kt",
    "chars": 2537,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/MetricsTest.kt",
    "chars": 9942,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/kotlin/com/felipebz/zpa/it/Tests.kt",
    "chars": 2824,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/com/felipebz/zpa/it/empty-profile.xml",
    "chars": 101,
    "preview": "<profile>\n    <name>empty-profile</name>\n    <language>plsqlopen</language>\n    <rules />\n</profile>\n"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/com/felipebz/zpa/it/it-profile.xml",
    "chars": 425,
    "preview": "<profile>\n    <name>it-profile</name>\n    <language>plsqlopen</language>\n    <rules>\n        <rule>\n            <reposit"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/coverage.xml",
    "chars": 323,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<coverage version=\"1\">\n  <file path=\"function ut3_demo.betwnstr\">\n    <lineToCove"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/betwnstr.sql",
    "chars": 296,
    "preview": "CREATE OR REPLACE FUNCTION BETWNSTR(A_STRING VARCHAR2, A_START_POS INTEGER, A_END_POS INTEGER) RETURN VARCHAR2 IS\n  L_ST"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/custom_rule.sql",
    "chars": 68,
    "preview": "declare\n  x number;\nbegin\n  select x\n    into x\n    from user;\nend;\n"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/source1.sql",
    "chars": 49,
    "preview": "begin\n  null;\nend;\nbegin\n  null; -- NOSONAR\nend;\n"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/src/source2.sql",
    "chars": 89,
    "preview": "declare\n  i number;\nbegin\n  -- a comment\n  select count(*)\n    into i\n    from dual;\nend;"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/test/test_betwnstr.sql",
    "chars": 1471,
    "preview": "create or replace package test_betwnstr as\n  -- %suite(Between string function)\n\n  -- %test(Returns substring from start"
  },
  {
    "path": "sonar-zpa-plugin/src/integrationTest/resources/projects/metrics/test_results.xml",
    "chars": 1167,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testExecutions version=\"1\">\n  <file path=\"test_betwnstr\">\n    <testCase name=\"no"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSql.kt",
    "chars": 1718,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlPlugin.kt",
    "chars": 5282,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlProfile.kt",
    "chars": 2019,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlRuleRepository.kt",
    "chars": 1852,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/PlSqlSquidSensor.kt",
    "chars": 4039,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/SonarQubeUtils.kt",
    "chars": 1263,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/api/CustomPlSqlRulesDefinition.kt",
    "chars": 1771,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/highlight/PlSqlHighlighterVisitor.kt",
    "chars": 2310,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/log/SonarQubeLogger.kt",
    "chars": 1858,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/log/SonarQubeLoggers.kt",
    "chars": 1164,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/metrics/CpdVisitor.kt",
    "chars": 1997,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeActiveRuleAdapter.kt",
    "chars": 2026,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeActiveRulesAdapter.kt",
    "chars": 1202,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRepositoryAdapter.kt",
    "chars": 1387,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleAdapter.kt",
    "chars": 3240,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleKeyAdapter.kt",
    "chars": 1507,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleMetadataLoader.kt",
    "chars": 2814,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/rules/SonarQubeRuleParamAdapter.kt",
    "chars": 1459,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/squid/PlSqlAstScanner.kt",
    "chars": 7104,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/squid/SonarQubePlSqlFile.kt",
    "chars": 1762,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/MappedObject.kt",
    "chars": 1416,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/ObjectLocator.kt",
    "chars": 2642,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/symbols/SonarQubeSymbolTable.kt",
    "chars": 1832,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/AbstractReportImporter.kt",
    "chars": 3016,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/CoverageReport.kt",
    "chars": 2380,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/CoverageResultImporter.kt",
    "chars": 4534,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/TestExecutionReport.kt",
    "chars": 3142,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/TestResultImporter.kt",
    "chars": 3811,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/main/kotlin/com/felipebz/zpa/utplsql/UtPlSqlSensor.kt",
    "chars": 2062,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/CustomAnnotationBasedRulesDefinitionTest.kt",
    "chars": 7300,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlChecksTest.kt",
    "chars": 5439,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlPluginTest.kt",
    "chars": 1477,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlProfileTest.kt",
    "chars": 1500,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlSquidSensorTest.kt",
    "chars": 6055,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/PlSqlTest.kt",
    "chars": 1732,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/api/CustomPlSqlRulesDefinitionTest.kt",
    "chars": 2933,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/highlight/PlSqlHighlighterVisitorTest.kt",
    "chars": 3131,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/metrics/CpdVisitorTest.kt",
    "chars": 2332,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/symbols/SonarQubeSymbolTableTest.kt",
    "chars": 3103,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/kotlin/com/felipebz/zpa/utplsql/UtPlSqlSensorTest.kt",
    "chars": 8483,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/code.sql",
    "chars": 346,
    "preview": "begin\n  -- this is a comment\n  /*\n   * another comment\n   */\n  for i in 1..2 loop\n  \n    dbms_output.put_line(i);\n  \n  e"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/test.sql",
    "chars": 76,
    "preview": "begin\n  -- this is a comment\n  /**\n   * another comment\n   */\n  x := 1;\nend;"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/award_bonus.sql",
    "chars": 423,
    "preview": "create or replace procedure award_bonus(emp_id number, sales_amt number) as\n  commission real;\n  comm_missing exception;"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/betwnstr.sql",
    "chars": 386,
    "preview": "/* comment before the code\n   so the lines in the coverage report don't match the file */\ncreate or replace function bet"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/coverage-report-all-uncovered.xml",
    "chars": 327,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<coverage version=\"1\">\n  <file path=\"function ut3_demo.betwnstr\">\n    <lineToCove"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/coverage-report-with-paths.xml",
    "chars": 355,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<coverage version=\"1\">\n  <file path=\"award_bonus.sql\">\n    <lineToCover lineNumbe"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/coverage-report-without-paths.xml",
    "chars": 323,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<coverage version=\"1\">\n  <file path=\"function ut3_demo.betwnstr\">\n    <lineToCove"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/test-report-with-paths.xml",
    "chars": 469,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testExecutions version=\"1\">\n  <file path=\"path/to/file.sql\">\n    <testCase name="
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/com/felipebz/zpa/utplsql/test-report-without-paths.xml",
    "chars": 474,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testExecutions version=\"1\">\n  <file path=\"my.suite.test_package\">\n    <testCase "
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/highlight/highlight.sql",
    "chars": 76,
    "preview": "begin\n  -- this is a comment\n  /**\n   * another comment\n   */\n  x := 1;\nend;"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/metrics/cpd.sql",
    "chars": 415,
    "preview": "begin\n null;\nend;\ncreate package body pkg is\n  procedure foo is\n  begin\n    null;\n  end;\nend;\ncreate procedure foo is\nbe"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/org/sonar/l10n/languageKey/rules/plsql/ruleWithExternalInfo.html",
    "chars": 36,
    "preview": "description for ruleWithExternalInfo"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/org/sonar/l10n/languageKey/rules/repoKey/ruleWithExternalInfo.html",
    "chars": 36,
    "preview": "description for ruleWithExternalInfo"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/org/sonar/l10n/languageKey.properties",
    "chars": 125,
    "preview": "ruleWithExternalInfo.name=external name for ruleWithExternalInfo\nruleWithExternalInfo.param.param1Key=description for pa"
  },
  {
    "path": "sonar-zpa-plugin/src/test/resources/org/sonar/l10n/languageWithoutBundle/empty.txt",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "template/changelog.tpl",
    "chars": 959,
    "preview": "## SonarQube compatibility\n\nThis release is compatible with SonarQube Community Build 26.2 and newer and it has been tes"
  },
  {
    "path": "zpa-checks/build.gradle.kts",
    "chars": 1639,
    "preview": "import de.undercouch.gradle.tasks.download.Download\n\nplugins {\n    id(\"com.felipebz.zpa.build-conventions\")\n    alias(li"
  },
  {
    "path": "zpa-checks/src/integrationTest/kotlin/com/felipebz/zpa/it/InputFile.kt",
    "chars": 1948,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "zpa-checks/src/integrationTest/kotlin/com/felipebz/zpa/it/OracleDocsExtractor.kt",
    "chars": 4577,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "zpa-checks/src/integrationTest/kotlin/com/felipebz/zpa/it/PlSqlRulingTest.kt",
    "chars": 9449,
    "preview": "/**\n * Z PL/SQL Analyzer\n * Copyright (C) 2015-2026 Felipe Zorzo\n * mailto:felipe AT felipezorzo DOT com DOT br\n *\n * Th"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/CharacterDatatypeUsageCheck.json",
    "chars": 208,
    "preview": "{\n  \"extras/hash_util_pkg.pkb\" : [\n    284\n  ],\n  \"ora/ftp_util_pkg.pkb\" : [\n    92\n  ],\n  \"ora/xlsx_builder_pkg.pkb\" : "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/CollapsibleIfStatementsCheck.json",
    "chars": 188,
    "preview": "{\n  \"extras/as_pdf3.pkb\" : [\n    2441,\n    2995\n  ],\n  \"extras/pdfgen_pkg.pkb\" : [\n    3206\n  ],\n  \"ora/amazon_aws_s3_pk"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/CommitRollbackCheck.json",
    "chars": 47,
    "preview": "{\n  \"ora/soap_server_pkg.pkb\" : [\n    772\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/ComparisonWithBooleanCheck.json",
    "chars": 41,
    "preview": "{\n  \"ora/debug_pkg.pkb\" : [\n    184\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/ComparisonWithNullCheck.json",
    "chars": 92,
    "preview": "{\n  \"ora/pdf_builder_pkg.pkb\" : [\n    995\n  ],\n  \"ora/string_util_pkg.pkb\" : [\n    584\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/ConcatenationWithNullCheck.json",
    "chars": 46,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    3166\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/DbmsOutputPutCheck.json",
    "chars": 794,
    "preview": "{\n  \"demos/csv_util_pkg_demo.sql\" : [\n    45,\n    69,\n    74,\n    79\n  ],\n  \"demos/zip_util_pkg_demo.sql\" : [\n    32,\n  "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/DeadCodeCheck.json",
    "chars": 87,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    680\n  ],\n  \"ora/sylk_util_pkg.pkb\" : [\n    96\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/EmptyBlockCheck.json",
    "chars": 142,
    "preview": "{\n  \"demos/employee_service.pkb\" : [\n    70\n  ],\n  \"extras/as_pdf3.pkb\" : [\n    352\n  ],\n  \"extras/pdfgen_pkg.pkb\" : [\n "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/EmptyStringAssignmentCheck.json",
    "chars": 317,
    "preview": "{\n  \"extras/as_pdf3.pkb\" : [\n    749,\n    2429\n  ],\n  \"extras/pdfgen_pkg.pkb\" : [\n    1159,\n    1197,\n    1227,\n    1451"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/ExplicitInParameterCheck.json",
    "chars": 8109,
    "preview": "{\n  \"demos/pdf_builder_pkg_demo.sql\" : [\n    188\n  ],\n  \"extras/as_pdf3.pkb\" : [\n    93,\n    100,\n    107,\n    107,\n    "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/FunctionWithOutParameterCheck.json",
    "chars": 281,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    836,\n    841,\n    1870,\n    1870,\n    1870,\n    1879,\n    1879,\n    1879\n  ],\n  \"ora"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/IfWithExitCheck.json",
    "chars": 45,
    "preview": "{\n  \"ora/date_util_pkg.pkb\" : [\n    618\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/InequalityUsageCheck.json",
    "chars": 881,
    "preview": "{\n  \"demos/pdf_builder_pkg_demo.sql\" : [\n    240\n  ],\n  \"extras/as_pdf3.pkb\" : [\n    1389,\n    1891,\n    1938,\n    2344,"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/InsertWithoutColumnsCheck.json",
    "chars": 244,
    "preview": "{\n  \"demos/01_create_demo_tables.sql\" : [\n    38,\n    41,\n    44,\n    47,\n    50,\n    53,\n    56,\n    59,\n    62,\n    65"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/NvlWithNullParameterCheck.json",
    "chars": 135,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    2835\n  ],\n  \"ora/json_util_pkg.pkb\" : [\n    317\n  ],\n  \"ora/xlsx_builder_pkg.pkb\" : "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/ParsingErrorCheck.json",
    "chars": 89,
    "preview": "{\n  \"demos/string_util_pkg_demo.sql\" : [\n    39\n  ],\n  \"setup/grants.sql\" : [\n    5\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/QueryWithoutExceptionHandlingCheck.json",
    "chars": 156,
    "preview": "{\n  \"demos/employee_service.pkb\" : [\n    109\n  ],\n  \"demos/owa_util_pkg_demo.sql\" : [\n    29\n  ],\n  \"ora/flex_ws_api.pkb"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/SameBranchCheck.json",
    "chars": 88,
    "preview": "{\n  \"ora/rss_util_pkg.pkb\" : [\n    84\n  ],\n  \"ora/string_util_pkg.pkb\" : [\n    585\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/SelectAllColumnsCheck.json",
    "chars": 567,
    "preview": "{\n  \"demos/amazon_aws_s3_pkg_demo.sql\" : [\n    40,\n    61,\n    67\n  ],\n  \"demos/csv_util_pkg_demo.sql\" : [\n    3,\n    15"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UnnecessaryAliasInQueryCheck.json",
    "chars": 50,
    "preview": "{\n  \"demos/csv_util_pkg_demo.sql\" : [\n    34\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UnnecessaryElseCheck.json",
    "chars": 217,
    "preview": "{\n  \"ora/csv_util_pkg.pkb\" : [\n    210\n  ],\n  \"ora/regexp_util_pkg.pkb\" : [\n    42\n  ],\n  \"ora/string_util_pkg.pkb\" : [\n"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UnnecessaryNullStatementCheck.json",
    "chars": 66,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    1037,\n    1052,\n    2942\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UnusedParameterCheck.json",
    "chars": 424,
    "preview": "{\n  \"demos/datapump_cloud_pkg.pkb\" : [\n    85,\n    149,\n    150\n  ],\n  \"demos/employee_service.pkb\" : [\n    66,\n    74\n "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UnusedVariableCheck.json",
    "chars": 1276,
    "preview": "{\n  \"extras/as_pdf3.pkb\" : [\n    350,\n    461,\n    469,\n    634,\n    718,\n    2533,\n    2534,\n    2535,\n    2536,\n    28"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/UselessParenthesisCheck.json",
    "chars": 54,
    "preview": "{\n  \"ora/date_util_pkg.pkb\" : [\n    440,\n    441\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/VariableHidingCheck.json",
    "chars": 391,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    1023,\n    1421,\n    1618,\n    1863,\n    2886\n  ],\n  \"ora/ms_ews_util_pkg.pkb\" : [\n  "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/VariableInitializationWithFunctionCallCheck.json",
    "chars": 1763,
    "preview": "{\n  \"demos/datapump_cloud_pkg.pkb\" : [\n    21,\n    22\n  ],\n  \"demos/plsql_status_web_pkg.pkb\" : [\n    17\n  ],\n  \"extras/"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/alexandria-plsql-utils/VariableInitializationWithNullCheck.json",
    "chars": 472,
    "preview": "{\n  \"extras/pdfgen_pkg.pkb\" : [\n    878,\n    897\n  ],\n  \"extras/utl_file_nonstandard.pkb\" : [\n    26,\n    27\n  ],\n  \"ora"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/AddParenthesesInNestedExpressionCheck.json",
    "chars": 148,
    "preview": "{\n  \"examples/condition03.sql\" : [\n    3,\n    8\n  ],\n  \"examples/condition05.sql\" : [\n    4\n  ],\n  \"examples/query_facto"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/ColumnsShouldHaveTableNameCheck.json",
    "chars": 488,
    "preview": "{\n  \"examples/bindvar05.sql\" : [\n    1,\n    1,\n    4\n  ],\n  \"examples/condition11.sql\" : [\n    1\n  ],\n  \"examples/dblink"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/CommitRollbackCheck.json",
    "chars": 252,
    "preview": "{\n  \"examples-sql-script/procedure_with_cursor_and_limit.sql\" : [\n    34,\n    41\n  ],\n  \"examples-sql-script/with_clause"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/CursorBodyInPackageSpecCheck.json",
    "chars": 65,
    "preview": "{\n  \"examples-sql-script/package_with_cursor.sql\" : [\n    3\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/DbmsOutputPutCheck.json",
    "chars": 932,
    "preview": "{\n  \"examples-sql-script/anonymous_block.sql\" : [\n    4,\n    7\n  ],\n  \"examples-sql-script/green_tools.pkb\" : [\n    7,\n "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/DeclareSectionWithoutDeclarationsCheck.json",
    "chars": 43,
    "preview": "{\n  \"examples/block01.sql\" : [\n    24\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/EmptyBlockCheck.json",
    "chars": 195,
    "preview": "{\n  \"examples-sql-script/declare_procedure_no_args.sql\" : [\n    5\n  ],\n  \"examples-sql-script/package_body_null.pkb\" : ["
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/ExplicitInParameterCheck.json",
    "chars": 664,
    "preview": "{\n  \"examples-sql-script/delete_as_regular_id.pkb\" : [\n    3\n  ],\n  \"examples-sql-script/in_out_parameters.pks\" : [\n    "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/IdenticalExpressionCheck.json",
    "chars": 338,
    "preview": "{\n  \"examples/condition02.sql\" : [\n    4\n  ],\n  \"examples/condition03.sql\" : [\n    4\n  ],\n  \"examples/condition09.sql\" :"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/IfWithExitCheck.json",
    "chars": 76,
    "preview": "{\n  \"examples-sql-script/cursor-attributes-with-spaces.sql\" : [\n    22\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/InequalityUsageCheck.json",
    "chars": 271,
    "preview": "{\n  \"examples/bindvar03.sql\" : [\n    15\n  ],\n  \"examples/connect_by03.sql\" : [\n    4\n  ],\n  \"examples/groupby01.sql\" : ["
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/InsertWithoutColumnsCheck.json",
    "chars": 49,
    "preview": "{\n  \"examples/values_clause.sql\" : [\n    27\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/ParsingErrorCheck.json",
    "chars": 6247,
    "preview": "{\n  \"examples-sql-script/e_in_out_parameters.pks\" : [\n    4\n  ],\n  \"examples-sql-script/grants.sql\" : [\n    5\n  ],\n  \"ex"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/QueryWithoutExceptionHandlingCheck.json",
    "chars": 122,
    "preview": "{\n  \"examples-sql-script/select_into.sql\" : [\n    9,\n    13,\n    17\n  ],\n  \"examples/insert_statement.sql\" : [\n    4\n  ]"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/SelectAllColumnsCheck.json",
    "chars": 3516,
    "preview": "{\n  \"examples-sql-script/green_table.sql\" : [\n    26\n  ],\n  \"examples-sql-script/package_with_cursor.sql\" : [\n    4\n  ],"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/ToDateWithoutFormatCheck.json",
    "chars": 81,
    "preview": "{\n  \"examples/to_date.sql\" : [\n    1,\n    7,\n    10,\n    13,\n    16,\n    19\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/UnnecessaryAliasInQueryCheck.json",
    "chars": 1696,
    "preview": "{\n  \"examples-sql-script/procedure_with_cursor_and_limit.sql\" : [\n    16,\n    17\n  ],\n  \"examples/bindvar03.sql\" : [\n   "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/UnnecessaryLikeCheck.json",
    "chars": 106,
    "preview": "{\n  \"examples/condition06.sql\" : [\n    13,\n    13\n  ],\n  \"examples/query_factoring05.sql\" : [\n    22\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/UnusedParameterCheck.json",
    "chars": 360,
    "preview": "{\n  \"examples-sql-script/substr_as_regular_id.pkb\" : [\n    3\n  ],\n  \"examples-sql-script/with_clause_in_exists_block_in_"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/UnusedVariableCheck.json",
    "chars": 433,
    "preview": "{\n  \"examples-sql-script/anonymous_block.sql\" : [\n    2\n  ],\n  \"examples-sql-script/cursor-attributes-with-spaces.sql\" :"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/antlr-grammars-v4/UselessParenthesisCheck.json",
    "chars": 189,
    "preview": "{\n  \"examples/condition06.sql\" : [\n    13\n  ],\n  \"examples/condition08.sql\" : [\n    5\n  ],\n  \"examples/condition15.sql\" "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/CommitRollbackCheck.json",
    "chars": 36,
    "preview": "{\n  \"UPLOAD_DB.pcd\" : [\n    22\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/DeclareSectionWithoutDeclarationsCheck.json",
    "chars": 47,
    "preview": "{\n  \"WEBUTIL_DEMO/PRE-FORM.tgg\" : [\n    2\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/EmptyStringAssignmentCheck.json",
    "chars": 36,
    "preview": "{\n  \"FILES_WBP.pcd\" : [\n    65\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/ExplicitInParameterCheck.json",
    "chars": 45,
    "preview": "{\n  \"SET_BROWSER_MESSAGE.pcd\" : [\n    1\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/InvalidReferenceToObjectCheck.json",
    "chars": 76,
    "preview": "{\n  \"BUILTINS/BUILTINS__READ_IMAGE__WHEN-BUTTON-PRESSED.tgg\" : [\n    5\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/QueryWithoutExceptionHandlingCheck.json",
    "chars": 103,
    "preview": "{\n  \"F_GET_TIMER_VALUE.fun\" : [\n    6\n  ],\n  \"WEBUTIL_DEMO/WHEN-NEW-FORM-INSTANCE.tgg\" : [\n    20\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/UnnecessaryElseCheck.json",
    "chars": 48,
    "preview": "{\n  \"WEBUTIL_DEMO/PRE-FORM.tgg\" : [\n    26\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/UnusedVariableCheck.json",
    "chars": 37,
    "preview": "{\n  \"DOWNLOAD_AS.pcd\" : [\n    3\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/VariableInitializationWithFunctionCallCheck.json",
    "chars": 70,
    "preview": "{\n  \"C_API/C_API__CALL_C_API__WHEN-BUTTON-PRESSED.tgg\" : [\n    9\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0001/VariableInitializationWithNullCheck.json",
    "chars": 66,
    "preview": "{\n  \"HOST/HOST__RUN_HOST__WHEN-BUTTON-PRESSED.tgg\" : [\n    3\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0002/EmptyBlockCheck.json",
    "chars": 195,
    "preview": "{\n  \"BL_EMPLOYEES.pkb\" : [\n    13,\n    18,\n    23,\n    28,\n    33,\n    38,\n    43,\n    48\n  ],\n  \"BL_MAINBLOCK.pkb\" : [\n"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0002/VariableInitializationWithFunctionCallCheck.json",
    "chars": 62,
    "preview": "{\n  \"CONST_LOCAL.pks\" : [\n    12,\n    13,\n    14,\n    17\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0002_2/EmptyBlockCheck.json",
    "chars": 110,
    "preview": "{\n  \"WNB.pcd\" : [\n    3\n  ],\n  \"WNF.pcd\" : [\n    3\n  ],\n  \"WNI.pcd\" : [\n    3\n  ],\n  \"WNR.pcd\" : [\n    3\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0003/EmptyBlockCheck.json",
    "chars": 102,
    "preview": "{\n  \"BL_MAINBLOCK.pkb\" : [\n    5,\n    10,\n    15,\n    20,\n    25,\n    30,\n    35,\n    40,\n    45\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0003/InequalityUsageCheck.json",
    "chars": 62,
    "preview": "{\n  \"EMPLOYEES_LI/EMPLOYEES_LI__PRE-QUERY.tgg\" : [\n    2\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0003/VariableInitializationWithFunctionCallCheck.json",
    "chars": 70,
    "preview": "{\n  \"CONST_LOCAL.pks\" : [\n    12,\n    13,\n    14,\n    15,\n    18\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/ExplicitInParameterCheck.json",
    "chars": 38,
    "preview": "{\n  \"ERRORMESSAGE.pcd\" : [\n    1\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/InequalityUsageCheck.json",
    "chars": 49,
    "preview": "{\n  \"RELEASE_LOCKS/POST-FORM.tgg\" : [\n    5\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/RaiseStandardExceptionCheck.json",
    "chars": 52,
    "preview": "{\n  \"V$LOCK/V$LOCK__POST-QUERY.tgg\" : [\n    51\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/ReturnOfBooleanExpressionCheck.json",
    "chars": 33,
    "preview": "{\n  \"IS_DBA.fun\" : [\n    11\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/UnnecessaryElseCheck.json",
    "chars": 33,
    "preview": "{\n  \"IS_DBA.fun\" : [\n    13\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/UnusedVariableCheck.json",
    "chars": 90,
    "preview": "{\n  \"V$SESSION/V$SESSION__PB_KILL_SESSION__WHEN-BUTTON-PRESSED.tgg\" : [\n    3,\n    4\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0004/VariableInitializationWithFunctionCallCheck.json",
    "chars": 143,
    "preview": "{\n  \"RELEASE_LOCKS/POST-FORM.tgg\" : [\n    3\n  ],\n  \"STEUERBLOCK/STEUERBLOCK__PB_CONNECT__WHEN-BUTTON-PRESSED.tgg\" : [\n  "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0005/EmptyBlockCheck.json",
    "chars": 50,
    "preview": "{\n  \"TIMEOUTPJC_TEST/ON-LOGON.tgg\" : [\n    2\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0005/EmptyStringAssignmentCheck.json",
    "chars": 443,
    "preview": "{\n  \"TEST/TEST__PRESET1__WHEN-BUTTON-PRESSED.tgg\" : [\n    7\n  ],\n  \"TEST/TEST__PRESET2__WHEN-BUTTON-PRESSED.tgg\" : [\n   "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0005/InvalidReferenceToObjectCheck.json",
    "chars": 64,
    "preview": "{\n  \"TIMEOUTPJC_TEST/WHEN-NEW-FORM-INSTANCE.tgg\" : [\n    3\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0006/QueryWithoutExceptionHandlingCheck.json",
    "chars": 43,
    "preview": "{\n  \"F_GET_TIMER_VALUE.fun\" : [\n    6\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0007/InequalityUsageCheck.json",
    "chars": 83,
    "preview": "{\n  \"ALL_OBJECTS/ALL_OBJECTS__CALL_EXCEL__WHEN-BUTTON-PRESSED.tgg\" : [\n    10\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0008/EmptyBlockCheck.json",
    "chars": 47,
    "preview": "{\n  \"LATENCY_TEST/ON-LOGON.tgg\" : [\n    2\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0008/InvalidReferenceToObjectCheck.json",
    "chars": 99,
    "preview": "{\n  \"P_WHEN_NEW_FORM_INSTANCE.pcd\" : [\n    13,\n    14,\n    15,\n    30,\n    50,\n    70,\n    90\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0008/UnusedVariableCheck.json",
    "chars": 175,
    "preview": "{\n  \"LATENCY_TEST/WHEN-TIMER-EXPIRED.tgg\" : [\n    18\n  ],\n  \"P_DOWNLOAD_DOKUMENT_AS.pcd\" : [\n    3,\n    7,\n    9\n  ],\n  "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0009/CharacterDatatypeUsageCheck.json",
    "chars": 36,
    "preview": "{\n  \"G.pkb\" : [\n    47,\n    62\n  ]\n}"
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0009/CollapsibleIfStatementsCheck.json",
    "chars": 368,
    "preview": "{\n  \"BLK_HANDLG/BLK_HANDLG__BT_COMPILE_SINGLE__WHEN-BUTTON-PRESSED.tgg\" : [\n    22,\n    28,\n    34,\n    40,\n    46,\n    "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0009/DeadCodeCheck.json",
    "chars": 336,
    "preview": "{\n  \"PKG_CONFIG.pkb\" : [\n    500\n  ],\n  \"PRC_CHECK_FAM.pcd\" : [\n    91,\n    131\n  ],\n  \"PRC_GET_CHK_REF_INFO.pcd\" : [\n  "
  },
  {
    "path": "zpa-checks/src/integrationTest/resources/expected/demo0009/DeclareSectionWithoutDeclarationsCheck.json",
    "chars": 55,
    "preview": "{\n  \"FORMSAPI_WIZARD_2905/ON-LOGON.tgg\" : [\n    3\n  ]\n}"
  }
]

// ... and 4868 more files (download for full content)

About this extraction

This page contains the full source code of the felipebz/zpa GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5068 files (3.2 MB), approximately 1.2M tokens, and a symbol index with 474 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!