(TranslationUnit
    [(Program
        coarrays_01
        (TriviaNode
            [(EndOfLine)
            (Comment
                "! This test should test most of coarray syntax:"
            )
            (Comment
                "! * declarations"
            )
            (Comment
                "! * allocations"
            )
            (Comment
                "! * coarray operations"
            )
            (Comment
                "!"
            )
            (Comment
                "! You can test the syntax manually with GFortran by:"
            )
            (Comment
                "! gfortran -fcoarray=lib -c coarrays_01.f90 -o a.o"
            )
            (Comment
                "!"
            )]
            []
        )
        [(Use
            []
            iso_fortran_env
            [(UseSymbol
                event_type
                ()
            )]
            .true.
            ()
        )]
        [(ImplicitNone
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "! Coarray Declarations"
                )]
            )
        )]
        [(Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(AttrDimension
                [(1
                100
                DimensionExpr)]
            )
            (AttrCodimension
                [(()
                ()
                CodimensionStar)]
            )]
            [(A
            []
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(B
            []
            [(1
            3
            CodimensionExpr)
            (()
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(c
            []
            [(()
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            []
            [(D
            [(1
            100
            DimensionExpr)
            (1
            2
            DimensionExpr)]
            [(1
            3
            CodimensionExpr)
            (()
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            []
            [(E
            [(1
            1
            DimensionExpr)
            (1
            2
            DimensionExpr)
            (1
            3
            DimensionExpr)]
            [(1
            1
            CodimensionExpr)
            (1
            2
            CodimensionExpr)
            ((u- 1)
            3
            CodimensionExpr)
            (()
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(SimpleAttribute
                AttrAllocatable
            )]
            [(F
            [(()
            ()
            DimensionExpr)]
            [(()
            ()
            CodimensionExpr)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(SimpleAttribute
                AttrAllocatable
            )]
            [(g
            [(()
            ()
            DimensionExpr)
            (()
            ()
            DimensionExpr)
            (()
            ()
            DimensionExpr)]
            [(()
            ()
            CodimensionExpr)
            (()
            ()
            CodimensionExpr)
            (()
            ()
            CodimensionExpr)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(AttrDimension
                [(1
                20
                DimensionExpr)]
            )
            (AttrCodimension
                [(1
                20
                CodimensionExpr)
                (()
                ()
                CodimensionStar)]
            )]
            [(h
            []
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(AttrCodimension
                [(()
                ()
                CodimensionExpr)]
            )
            (SimpleAttribute
                AttrAllocatable
            )]
            [(z
            [(()
            ()
            DimensionExpr)
            (()
            ()
            DimensionExpr)]
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeCharacter
                []
                ()
                ()
                None
            )
            []
            [(r
            [(1
            20
            DimensionExpr)]
            [(1
            20
            CodimensionExpr)
            (0
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeType
                []
                ()
                event_type
                None
            )
            []
            [(ok_to_overwrite
            []
            [(()
            ()
            CodimensionStar)]
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeType
                []
                ()
                event_type
                None
            )
            [(SimpleAttribute
                AttrAllocatable
            )]
            [(greeting_ready
            [(()
            ()
            DimensionExpr)]
            [(()
            ()
            CodimensionExpr)]
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(i
            []
            []
            ()
            ()
            None
            ())
            (n
            []
            []
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "! Allocation"
                )]
            )
        )]
        [(Assignment
            0
            n
            5
            ()
        )
        (Allocate
            0
            [(()
            (CoarrayRef
                F
                []
                [(()
                n
                ()
                0)]
                []
                [(()
                ()
                1
                CodimensionStar)]
                []
            )
            ()
            0)]
            []
            ()
        )
        (Allocate
            0
            [(()
            (CoarrayRef
                greeting_ready
                []
                [(()
                (FuncCallOrArray
                    num_images
                    []
                    []
                    []
                    []
                    []
                )
                ()
                0)]
                []
                [(()
                ()
                1
                CodimensionStar)]
                []
            )
            ()
            0)]
            []
            ()
        )
        (Allocate
            0
            [(()
            (CoarrayRef
                g
                []
                [(()
                50
                ()
                0)
                (()
                50
                ()
                0)
                (()
                50
                ()
                0)]
                []
                [(1
                2
                1
                CodimensionExpr)
                (1
                2
                1
                CodimensionExpr)
                (()
                ()
                1
                CodimensionStar)]
                []
            )
            ()
            0)]
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "! Array access, events, teams"
                )]
            )
        )
        (If
            0
            ()
            (== (FuncCallOrArray
                this_image
                []
                []
                []
                []
                []
            ) 1)
            [(DoLoop
                0
                ()
                0
                i
                2
                (FuncCallOrArray
                    num_images
                    []
                    []
                    []
                    []
                    []
                )
                ()
                [(Assignment
                    0
                    c
                    (+ c (CoarrayRef
                        c
                        []
                        []
                        []
                        [(()
                        i
                        ()
                        CodimensionExpr)]
                        []
                    ))
                    ()
                )
                (EventPost
                    0
                    (CoarrayRef
                        ok_to_overwrite
                        []
                        []
                        []
                        [(()
                        i
                        ()
                        CodimensionExpr)]
                        []
                    )
                    []
                    ()
                )]
                ()
                ()
            )]
            [(EventWait
                0
                ok_to_overwrite
                []
                ()
            )
            (EventPost
                0
                (CoarrayRef
                    greeting_ready
                    []
                    [(()
                    (FuncCallOrArray
                        this_image
                        []
                        []
                        []
                        []
                        []
                    )
                    ()
                    0)]
                    []
                    [(()
                    1
                    ()
                    CodimensionExpr)]
                    []
                )
                []
                ()
            )]
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (SyncAll
            0
            []
            ()
        )
        (SyncAll
            0
            []
            ()
        )
        (SyncAll
            0
            [(AttrStat
                status
            )]
            ()
        )
        (SyncAll
            0
            [(AttrErrmsg
                status
            )]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (EventWait
            0
            variable
            [(AttrEventWaitKwArg
                until_count
                status
            )]
            ()
        )
        (EventWait
            0
            variable
            [(AttrEventWaitKwArg
                until_count
                status
            )
            (AttrErrmsg
                status
            )]
            ()
        )
        (EventWait
            0
            variable
            [(AttrEventWaitKwArg
                errmsg
                status
            )]
            ()
        )
        (EventWait
            0
            variable
            [(AttrEventWaitKwArg
                stat
                status
            )]
            ()
        )
        (EventPost
            0
            (CoarrayRef
                done
                []
                [(()
                (FuncCallOrArray
                    sub
                    []
                    [(()
                    i
                    ()
                    0)]
                    []
                    []
                    []
                )
                ()
                0)]
                []
                [(()
                (FuncCallOrArray
                    parent
                    []
                    [(()
                    i
                    ()
                    0)]
                    []
                    []
                    []
                )
                ()
                CodimensionExpr)]
                []
            )
            [(AttrStat
                status
            )]
            ()
        )
        (EventPost
            0
            variable
            [(AttrStat
                status
            )]
            ()
        )
        (EventPost
            0
            variable
            [(AttrErrmsg
                status
            )]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Assignment
            0
            (FuncCallOrArray
                a
                [(s
                [])]
                [(()
                3
                ()
                0)]
                []
                [(()
                4
                ()
                0)]
                []
            )
            (String "S")
            ()
        )
        (Assignment
            0
            (CoarrayRef
                b
                [(s
                [])]
                []
                []
                [(()
                3
                ()
                CodimensionExpr)]
                []
            )
            (CoarrayRef
                c
                []
                []
                []
                [(()
                4
                ()
                CodimensionExpr)]
                []
            )
            ()
        )
        (Assignment
            0
            (CoarrayRef
                c
                [(s
                [])]
                [(()
                3
                ()
                0)]
                []
                [(()
                4
                ()
                CodimensionExpr)]
                []
            )
            (CoarrayRef
                f
                []
                [(()
                3
                ()
                0)]
                []
                [(()
                4
                ()
                CodimensionExpr)]
                []
            )
            ()
        )
        (Assignment
            0
            (CoarrayRef
                c
                []
                []
                []
                [(()
                3
                ()
                CodimensionExpr)]
                []
            )
            (CoarrayRef
                c
                []
                []
                []
                [(()
                4
                ()
                CodimensionExpr)]
                []
            )
            ()
        )
        (Assignment
            0
            (CoarrayRef
                B
                []
                []
                []
                [(()
                1
                ()
                CodimensionExpr)
                (()
                2
                ()
                CodimensionExpr)]
                []
            )
            (CoarrayRef
                B
                []
                []
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                4
                ()
                CodimensionExpr)]
                []
            )
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                99
                ()
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                4
                ()
                CodimensionExpr)]
                []
            )
            (CoarrayRef
                D
                []
                [(()
                1
                ()
                0)
                (()
                2
                ()
                0)]
                []
                [(()
                1
                ()
                CodimensionExpr)
                (()
                2
                ()
                CodimensionExpr)]
                []
            )
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                99
                ()
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                3
                ()
                CodimensionExpr)]
                []
            )
            5
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                ()
                1
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                3
                ()
                CodimensionExpr)]
                []
            )
            5
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                ()
                1
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                3
                ()
                CodimensionExpr)]
                [(team
                3)]
            )
            5
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                ()
                1
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                3
                ()
                CodimensionExpr)]
                [(team
                3)
                (stat
                i)]
            )
            5
            ()
        )
        (Assignment
            0
            (CoarrayRef
                D
                []
                [(()
                ()
                1
                0)
                (()
                1
                ()
                0)]
                []
                [(()
                3
                ()
                CodimensionExpr)
                (()
                3
                ()
                CodimensionExpr)]
                [(stat
                i)]
            )
            5
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
    )]
)
