(TranslationUnit
    [(Program
        program4
        ()
        []
        []
        [(Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            []
            [(x
            []
            []
            ()
            ()
            None
            ())
            (y
            []
            []
            ()
            ()
            None
            ())
            (z
            []
            []
            ()
            ()
            None
            ())]
            ()
        )]
        [(Assignment
            0
            x
            (Real "1.0")
            ()
        )
        (Assignment
            0
            y
            (Real "2.0")
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Assignment
            0
            z
            (FuncCallOrArray
                func1
                []
                [(()
                x
                ()
                0)
                (()
                y
                ()
                0)]
                []
                []
                []
            )
            ()
        )
        (Print
            0
            ()
            [(String "6.0 == ")
            z]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Assignment
            0
            z
            (FuncCallOrArray
                func1
                []
                [(()
                x
                ()
                0)
                (()
                y
                ()
                0)]
                []
                []
                []
            )
            ()
        )
        (Print
            0
            ()
            [(String "7.0 == ")
            z]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Assignment
            0
            z
            (FuncCallOrArray
                func2
                []
                [(()
                x
                ()
                0)
                (()
                y
                ()
                0)]
                []
                []
                []
            )
            ()
        )
        (Print
            0
            ()
            [(String "6.0 == ")
            z]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Assignment
            0
            z
            (FuncCallOrArray
                func2
                []
                [(()
                x
                ()
                0)
                (()
                y
                ()
                0)]
                []
                []
                []
            )
            ()
        )
        (Print
            0
            ()
            [(String "8.0 == ")
            z]
            ()
        )]
        [(Function
            func1
            [(a)
            (b)]
            []
            c
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
            []
            []
            []
            [(Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(AttrIntent
                    In
                )]
                [(a
                []
                []
                ()
                ()
                None
                ())
                (b
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(c
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(SimpleAttribute
                    AttrSave
                )]
                [(saved
                []
                []
                ()
                (Real "2.0")
                Equal
                ())]
                ()
            )]
            [(Assignment
                0
                saved
                (+ saved (Real "1.0"))
                ()
            )
            (Assignment
                0
                c
                (+ (+ (+ c a) b) saved)
                ()
            )]
            []
            []
        )
        (Function
            func2
            [(a)
            (b)]
            []
            c
            ()
            ()
            []
            []
            []
            [(Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(AttrIntent
                    In
                )]
                [(a
                []
                []
                ()
                ()
                None
                ())
                (b
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(c
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(saved1
                []
                []
                ()
                (Real "2.0")
                Equal
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(SimpleAttribute
                    AttrSave
                )]
                [(saved2
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(d
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(Assignment
                0
                saved1
                (+ saved1 (Real "1.0"))
                ()
            )
            (Assignment
                0
                c
                (+ (+ (+ (+ (+ d c) a) b) saved1) saved2)
                ()
            )
            (Assignment
                0
                saved2
                (+ saved2 (Real "1.0"))
                ()
            )
            (Assignment
                0
                d
                (+ d (Real "3.0"))
                ()
            )]
            []
            []
        )]
    )]
)
