(TranslationUnit
    [(Module
        program_parsing_02_submodule
        (TriviaNode
            []
            [(EndOfLine)
            (EndOfLine)]
        )
        []
        [(ImplicitNone
            []
            ()
        )]
        [(Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(complex
            []
            []
            ()
            1
            Equal
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeLogical
                []
                ()
                ()
                None
            )
            []
            [(true
            []
            []
            ()
            (Logical .true.)
            Equal
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeLogical
                []
                ()
                ()
                None
            )
            []
            [(false
            []
            []
            ()
            (Logical .false.)
            Equal
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (DerivedType
            type
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
            []
            [(Declaration
                (AttrType
                    TypeType
                    []
                    ()
                    type
                    None
                )
                [(SimpleAttribute
                    AttrAllocatable
                )]
                [(types
                [(()
                ()
                DimensionExpr)]
                []
                ()
                ()
                None
                ())]
                ()
            )]
            []
        )
        (Interface
            (InterfaceHeader)
            ()
            [(InterfaceProc
                (Subroutine
                    function
                    [(integer)
                    (real)]
                    [(SimpleAttribute
                        AttrModule
                    )]
                    ()
                    ()
                    []
                    []
                    []
                    [(Declaration
                        (AttrType
                            TypeInteger
                            []
                            ()
                            ()
                            None
                        )
                        [(AttrIntent
                            In
                        )]
                        [(integer
                        []
                        []
                        ()
                        ()
                        None
                        ())]
                        ()
                    )
                    (Declaration
                        (AttrType
                            TypeInteger
                            []
                            ()
                            ()
                            None
                        )
                        [(AttrIntent
                            Out
                        )]
                        [(real
                        []
                        []
                        ()
                        ()
                        None
                        ())]
                        ()
                    )]
                    []
                    []
                    []
                )
            )]
        )]
        []
        []
    )
    (Submodule
        program_parsing_02_submodule
        ()
        program_parsing_02_module
        (TriviaNode
            []
            [(EndOfLine)
            (EndOfLine)]
        )
        []
        []
        []
        []
        [(Procedure
            function
            []
            [(SimpleAttribute
                AttrModule
            )]
            ()
            []
            []
            []
            []
            [(Assignment
                0
                real
                (* 2 integer)
                ()
            )]
            []
        )]
    )
    (Program
        program_parsing_02
        (TriviaNode
            [(EndOfLine)
            (EndOfLine)]
            []
        )
        [(Use
            []
            program_parsing_02_submodule
            [(UseSymbol
                complex
                character
            )
            (UseSymbol
                function
                subroutine
            )
            (UseSymbol
                true
                then
            )
            (UseSymbol
                false
                else
            )
            (UseSymbol
                type
                ()
            )]
            .true.
            ()
        )]
        [(ImplicitNone
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        [(Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(integer
            []
            []
            ()
            ()
            None
            ())
            (real
            []
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeType
                []
                ()
                type
                None
            )
            []
            [(types
            []
            []
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        [(Assignment
            0
            integer
            character
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "! Thanks to https://stackoverflow.com/a/57015100/1876449"
                )]
            )
        )
        (Assignment
            0
            types
            (FuncCallOrArray
                type
                []
                []
                [(types
                (ArrayInitializer
                    ()
                    ()
                    [(FuncCallOrArray
                        type
                        []
                        []
                        [(types
                        (ArrayInitializer
                            ()
                            ()
                            [(FuncCallOrArray
                                type
                                []
                                []
                                []
                                []
                                []
                            )
                            (FuncCallOrArray
                                type
                                []
                                []
                                []
                                []
                                []
                            )
                            (FuncCallOrArray
                                type
                                []
                                []
                                []
                                []
                                []
                            )]
                        ))]
                        []
                        []
                    )
                    (FuncCallOrArray
                        type
                        []
                        []
                        []
                        []
                        []
                    )]
                ))]
                []
                []
            )
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Block
            0
            block
            []
            []
            [(Declaration
                (AttrType
                    TypeLogical
                    []
                    ()
                    ()
                    None
                )
                []
                [(if
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(If
                0
                endif
                then
                [(Assignment
                    0
                    if
                    then
                    ()
                )]
                [(If
                    0
                    ()
                    else
                    [(Assignment
                        0
                        if
                        else
                        ()
                    )]
                    [(Assignment
                        0
                        if
                        (BoolOp
                            (not (Parenthesis
                                else
                            ))
                            And
                            (not (Parenthesis
                                if
                            ))
                        )
                        ()
                    )]
                    ()
                    ()
                    ()
                )]
                ()
                ()
                ()
            )
            (Print
                0
                ()
                [if]
                ()
            )]
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (AssociateBlock
            0
            associate
            [(logical
            []
            []
            ()
            character
            Arrow
            ())
            (complex
            []
            []
            ()
            real
            Arrow
            ())]
            [(SubroutineCall
                0
                subroutine
                []
                [(()
                logical
                ()
                0)
                (()
                complex
                ()
                0)]
                []
                []
                ()
            )
            (Print
                0
                ()
                [(Parenthesis
                    complex
                )]
                ()
            )]
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
    )]
)
