+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0]
   +- Global[@CanonicalImage = null]
      +- ProgramUnit[@CanonicalImage = null, @MethodName = "EXAMPLE_PROCEDURE", @Name = "EXAMPLE_PROCEDURE", @ObjectName = null]
         +- MethodDeclarator[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE", @ParameterCount = 1]
         |  +- ObjectNameDeclaration[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
         |     +- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
         +- DeclarativeSection[@CanonicalImage = null]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- SubTypeDefinition[@CanonicalImage = "T_DATA_KEY", @Image = "t_data_key"]
         |  |     +- QualifiedID[@CanonicalImage = "T_DATA_KEY", @Image = "t_data_key"]
         |  |     +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
         |  |     |  +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
         |  |     +- Datatype[@CanonicalImage = "BINARY_INTEGER", @Image = "BINARY_INTEGER", @TypeImage = "BINARY_INTEGER"]
         |  |        +- ScalarDataTypeName[@CanonicalImage = "BINARY_INTEGER", @Image = "BINARY_INTEGER"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- SubTypeDefinition[@CanonicalImage = "T_DATA_DESCRIPTION", @Image = "t_data_description"]
         |  |     +- QualifiedID[@CanonicalImage = "T_DATA_DESCRIPTION", @Image = "t_data_description"]
         |  |     +- Datatype[@CanonicalImage = "VARCHAR2(100)", @Image = "VARCHAR2(100)", @TypeImage = "VARCHAR2(100)"]
         |  |     |  +- ScalarDataTypeName[@CanonicalImage = "VARCHAR2(100)", @Image = "VARCHAR2(100)"]
         |  |     |     +- NumericLiteral[@CanonicalImage = "100", @Image = "100"]
         |  |     +- Datatype[@CanonicalImage = "BINARY_INTEGER", @Image = "BINARY_INTEGER", @TypeImage = "BINARY_INTEGER"]
         |  |        +- ScalarDataTypeName[@CanonicalImage = "BINARY_INTEGER", @Image = "BINARY_INTEGER"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- VariableOrConstantDeclaration[@CanonicalImage = null]
         |  |     +- VariableOrConstantDeclarator[@CanonicalImage = "L_DATA_KEY T_DATA_KEY", @Image = "l_data_key t_data_key"]
         |  |        +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_DATA_KEY", @Image = "l_data_key"]
         |  |        |  +- ID[@CanonicalImage = "L_DATA_KEY", @Image = "l_data_key"]
         |  |        +- Datatype[@CanonicalImage = "T_DATA_KEY", @Image = "t_data_key", @TypeImage = "t_data_key"]
         |  |           +- QualifiedName[@CanonicalImage = "T_DATA_KEY", @Image = "t_data_key"]
         |  |              +- UnqualifiedID[@CanonicalImage = "T_DATA_KEY", @Image = "t_data_key"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- VariableOrConstantDeclaration[@CanonicalImage = null]
         |  |     +- VariableOrConstantDeclarator[@CanonicalImage = "L_DATA_DESCRIPTION T_DATA_DESCRIPTION", @Image = "l_data_description t_data_description"]
         |  |        +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_DATA_DESCRIPTION", @Image = "l_data_description"]
         |  |        |  +- ID[@CanonicalImage = "L_DATA_DESCRIPTION", @Image = "l_data_description"]
         |  |        +- Datatype[@CanonicalImage = "T_DATA_DESCRIPTION", @Image = "t_data_description", @TypeImage = "t_data_description"]
         |  |           +- QualifiedName[@CanonicalImage = "T_DATA_DESCRIPTION", @Image = "t_data_description"]
         |  |              +- UnqualifiedID[@CanonicalImage = "T_DATA_DESCRIPTION", @Image = "t_data_description"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- VariableOrConstantDeclaration[@CanonicalImage = null]
         |  |     +- VariableOrConstantDeclarator[@CanonicalImage = "L_SQL VARCHAR2(500)", @Image = "l_sql VARCHAR2(500)"]
         |  |        +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_SQL", @Image = "l_sql"]
         |  |        |  +- ID[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |  |        +- Datatype[@CanonicalImage = "VARCHAR2(500)", @Image = "VARCHAR2(500)", @TypeImage = "VARCHAR2(500)"]
         |  |           +- ScalarDataTypeName[@CanonicalImage = "VARCHAR2(500)", @Image = "VARCHAR2(500)"]
         |  |              +- NumericLiteral[@CanonicalImage = "500", @Image = "500"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |  |  +- VariableOrConstantDeclaration[@CanonicalImage = null]
         |  |     +- VariableOrConstantDeclarator[@CanonicalImage = "P_ROWNUM1 NUMBER(20)", @Image = "p_rownum1 NUMBER(20)"]
         |  |        +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |  |        |  +- ID[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |  |        +- Datatype[@CanonicalImage = "NUMBER(20)", @Image = "NUMBER(20)", @TypeImage = "NUMBER(20)"]
         |  |           +- ScalarDataTypeName[@CanonicalImage = "NUMBER(20)", @Image = "NUMBER(20)"]
         |  |              +- NumericLiteral[@CanonicalImage = "20", @Image = "20"]
         |  +- DeclarativeUnit[@CanonicalImage = null]
         |     +- VariableOrConstantDeclaration[@CanonicalImage = null]
         |        +- VariableOrConstantDeclarator[@CanonicalImage = "P_ROWNUM2 NUMBER(20)", @Image = "p_rownum2 NUMBER(20)"]
         |           +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           |  +- ID[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           +- Datatype[@CanonicalImage = "NUMBER(20)", @Image = "NUMBER(20)", @TypeImage = "NUMBER(20)"]
         |              +- ScalarDataTypeName[@CanonicalImage = "NUMBER(20)", @Image = "NUMBER(20)"]
         |                 +- NumericLiteral[@CanonicalImage = "20", @Image = "20"]
         +- Statement[@CanonicalImage = null]
         |  +- UnlabelledStatement[@CanonicalImage = null]
         |     +- Expression[@CanonicalImage = "P_ROWNUM1 := 10", @Image = "p_rownum1 := 10"]
         |        +- Assignment[@CanonicalImage = "P_ROWNUM1 := 10", @Image = "p_rownum1 := 10"]
         |           +- PrimaryPrefix[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1", @SelfModifier = false]
         |           |  +- SimpleExpression[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |           |     +- Column[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |           |        +- ID[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |           +- Expression[@CanonicalImage = "10", @Image = "10"]
         |              +- PrimaryPrefix[@CanonicalImage = "10", @Image = "10", @SelfModifier = false]
         |                 +- Literal[@CanonicalImage = "10", @Image = "10"]
         |                    +- NumericLiteral[@CanonicalImage = "10", @Image = "10"]
         +- Statement[@CanonicalImage = null]
         |  +- UnlabelledStatement[@CanonicalImage = null]
         |     +- Expression[@CanonicalImage = "P_ROWNUM2 := 30", @Image = "p_rownum2 := 30"]
         |        +- Assignment[@CanonicalImage = "P_ROWNUM2 := 30", @Image = "p_rownum2 := 30"]
         |           +- PrimaryPrefix[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2", @SelfModifier = false]
         |           |  +- SimpleExpression[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           |     +- Column[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           |        +- ID[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           +- Expression[@CanonicalImage = "30", @Image = "30"]
         |              +- PrimaryPrefix[@CanonicalImage = "30", @Image = "30", @SelfModifier = false]
         |                 +- Literal[@CanonicalImage = "30", @Image = "30"]
         |                    +- NumericLiteral[@CanonicalImage = "30", @Image = "30"]
         +- Statement[@CanonicalImage = null]
         |  +- UnlabelledStatement[@CanonicalImage = null]
         |     +- Expression[@CanonicalImage = "L_SQL := \'SELECT 1, \' || CHR || \'FIRST KEY\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :P_ROWNUM1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'SECOND KEY \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "l_sql := \'SELECT 1, \' || CHR || \'First key\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :p_rownum1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'Second key \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :p_rownum2 \'"]
         |        +- Assignment[@CanonicalImage = "L_SQL := \'SELECT 1, \' || CHR || \'FIRST KEY\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :P_ROWNUM1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'SECOND KEY \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "l_sql := \'SELECT 1, \' || CHR || \'First key\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :p_rownum1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'Second key \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :p_rownum2 \'"]
         |           +- PrimaryPrefix[@CanonicalImage = "L_SQL", @Image = "l_sql", @SelfModifier = false]
         |           |  +- SimpleExpression[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |           |     +- Column[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |           |        +- ID[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |           +- Expression[@CanonicalImage = "\'SELECT 1, \' || CHR || \'FIRST KEY\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :P_ROWNUM1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'SECOND KEY \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "\'SELECT 1, \' || CHR || \'First key\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :p_rownum1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'Second key \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :p_rownum2 \'"]
         |              +- AdditiveExpression[@CanonicalImage = "\'SELECT 1, \' || CHR || \'FIRST KEY\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :P_ROWNUM1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'SECOND KEY \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "\'SELECT 1, \' || CHR || \'First key\' || CHR || \' FROM DUAL \' || \' WHERE ROWNUM <= :p_rownum1 \' || \'UNION ALL \' || \'SELECT 2, \' || CHR || \'Second key \' || CHR || \' FROM DUAL\' || \' WHERE ROWNUM <= :p_rownum2 \'"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\'SELECT 1, \'", @Image = "\'SELECT 1, \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\'SELECT 1, \'", @Image = "\'SELECT 1, \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\'SELECT 1, \'", @Image = "\'SELECT 1, \'", @String = "SELECT 1, "]
         |                 +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
         |                 |  +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     |  +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
         |                 |        +- ArgumentList[@CanonicalImage = null]
         |                 |           +- Argument[@CanonicalImage = null]
         |                 |              +- Expression[@CanonicalImage = "39", @Image = "39"]
         |                 |                 +- PrimaryPrefix[@CanonicalImage = "39", @Image = "39", @SelfModifier = false]
         |                 |                    +- Literal[@CanonicalImage = "39", @Image = "39"]
         |                 |                       +- NumericLiteral[@CanonicalImage = "39", @Image = "39"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\'FIRST KEY\'", @Image = "\'First key\'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\'FIRST KEY\'", @Image = "\'First key\'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\'FIRST KEY\'", @Image = "\'First key\'", @String = "First key"]
         |                 +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
         |                 |  +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     |  +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
         |                 |        +- ArgumentList[@CanonicalImage = null]
         |                 |           +- Argument[@CanonicalImage = null]
         |                 |              +- Expression[@CanonicalImage = "39", @Image = "39"]
         |                 |                 +- PrimaryPrefix[@CanonicalImage = "39", @Image = "39", @SelfModifier = false]
         |                 |                    +- Literal[@CanonicalImage = "39", @Image = "39"]
         |                 |                       +- NumericLiteral[@CanonicalImage = "39", @Image = "39"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\' FROM DUAL \'", @Image = "\' FROM DUAL \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\' FROM DUAL \'", @Image = "\' FROM DUAL \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\' FROM DUAL \'", @Image = "\' FROM DUAL \'", @String = " FROM DUAL "]
         |                 +- PrimaryPrefix[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM1 \'", @Image = "\' WHERE ROWNUM <= :p_rownum1 \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM1 \'", @Image = "\' WHERE ROWNUM <= :p_rownum1 \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM1 \'", @Image = "\' WHERE ROWNUM <= :p_rownum1 \'", @String = " WHERE ROWNUM <= :p_rownum1 "]
         |                 +- PrimaryPrefix[@CanonicalImage = "\'UNION ALL \'", @Image = "\'UNION ALL \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\'UNION ALL \'", @Image = "\'UNION ALL \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\'UNION ALL \'", @Image = "\'UNION ALL \'", @String = "UNION ALL "]
         |                 +- PrimaryPrefix[@CanonicalImage = "\'SELECT 2, \'", @Image = "\'SELECT 2, \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\'SELECT 2, \'", @Image = "\'SELECT 2, \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\'SELECT 2, \'", @Image = "\'SELECT 2, \'", @String = "SELECT 2, "]
         |                 +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
         |                 |  +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     |  +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
         |                 |        +- ArgumentList[@CanonicalImage = null]
         |                 |           +- Argument[@CanonicalImage = null]
         |                 |              +- Expression[@CanonicalImage = "39", @Image = "39"]
         |                 |                 +- PrimaryPrefix[@CanonicalImage = "39", @Image = "39", @SelfModifier = false]
         |                 |                    +- Literal[@CanonicalImage = "39", @Image = "39"]
         |                 |                       +- NumericLiteral[@CanonicalImage = "39", @Image = "39"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\'SECOND KEY \'", @Image = "\'Second key \'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\'SECOND KEY \'", @Image = "\'Second key \'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\'SECOND KEY \'", @Image = "\'Second key \'", @String = "Second key "]
         |                 +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
         |                 |  +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     |  +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
         |                 |     +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
         |                 |        +- ArgumentList[@CanonicalImage = null]
         |                 |           +- Argument[@CanonicalImage = null]
         |                 |              +- Expression[@CanonicalImage = "39", @Image = "39"]
         |                 |                 +- PrimaryPrefix[@CanonicalImage = "39", @Image = "39", @SelfModifier = false]
         |                 |                    +- Literal[@CanonicalImage = "39", @Image = "39"]
         |                 |                       +- NumericLiteral[@CanonicalImage = "39", @Image = "39"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\' FROM DUAL\'", @Image = "\' FROM DUAL\'", @SelfModifier = false]
         |                 |  +- Literal[@CanonicalImage = "\' FROM DUAL\'", @Image = "\' FROM DUAL\'"]
         |                 |     +- StringLiteral[@CanonicalImage = "\' FROM DUAL\'", @Image = "\' FROM DUAL\'", @String = " FROM DUAL"]
         |                 +- PrimaryPrefix[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "\' WHERE ROWNUM <= :p_rownum2 \'", @SelfModifier = false]
         |                    +- Literal[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "\' WHERE ROWNUM <= :p_rownum2 \'"]
         |                       +- StringLiteral[@CanonicalImage = "\' WHERE ROWNUM <= :P_ROWNUM2 \'", @Image = "\' WHERE ROWNUM <= :p_rownum2 \'", @String = " WHERE ROWNUM <= :p_rownum2 "]
         +- Statement[@CanonicalImage = null]
         |  +- UnlabelledStatement[@CanonicalImage = null]
         |     +- EmbeddedSqlStatement[@CanonicalImage = null]
         |        +- StringExpression[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |        |  +- PrimaryPrefix[@CanonicalImage = "L_SQL", @Image = "l_sql", @SelfModifier = false]
         |        |     +- SimpleExpression[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |        |        +- Column[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |        |           +- ID[@CanonicalImage = "L_SQL", @Image = "l_sql"]
         |        +- BulkCollectIntoClause[@CanonicalImage = null]
         |        |  +- CollectionName[@CanonicalImage = "L_DATA_KEY", @Image = "l_data_key"]
         |        |  |  +- ID[@CanonicalImage = "L_DATA_KEY", @Image = "l_data_key"]
         |        |  +- CollectionName[@CanonicalImage = "L_DATA_DESCRIPTION", @Image = "l_data_description"]
         |        |     +- ID[@CanonicalImage = "L_DATA_DESCRIPTION", @Image = "l_data_description"]
         |        +- Expression[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |        |  +- PrimaryPrefix[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1", @SelfModifier = false]
         |        |     +- SimpleExpression[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |        |        +- Column[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |        |           +- ID[@CanonicalImage = "P_ROWNUM1", @Image = "p_rownum1"]
         |        +- Expression[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |           +- PrimaryPrefix[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2", @SelfModifier = false]
         |              +- SimpleExpression[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |                 +- Column[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         |                    +- ID[@CanonicalImage = "P_ROWNUM2", @Image = "p_rownum2"]
         +- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
