(TranslationUnit
    [(Module
        template_travel_01_math
        (TriviaNode
            [(EndOfLine)
            (EndOfLine)]
            [(EndOfLine)
            (EndOfLine)]
        )
        []
        [(ImplicitNone
            []
            ()
        )]
        [(Declaration
            ()
            [(SimpleAttribute
                AttrPrivate
            )]
            []
            ()
        )
        (Declaration
            ()
            [(SimpleAttribute
                AttrPublic
            )]
            [(add_real
            []
            []
            ()
            ()
            None
            ())
            (slash_real
            []
            []
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
        [(Function
            add_real
            [(x)
            (y)]
            [(SimpleAttribute
                AttrPure
            )]
            total
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
            []
            []
            []
            [(Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(AttrIntent
                    In
                )]
                [(x
                []
                []
                ()
                ()
                None
                ())
                (y
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(total
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(Assignment
                0
                total
                (+ x y)
                ()
            )]
            []
            []
        )
        (Function
            slash_real
            [(x)
            (y)]
            [(SimpleAttribute
                AttrPure
            )]
            total
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
            []
            []
            []
            [(Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                [(AttrIntent
                    In
                )]
                [(x
                []
                []
                ()
                ()
                None
                ())
                (y
                []
                []
                ()
                ()
                None
                ())]
                ()
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(total
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(Assignment
                0
                total
                (/ x y)
                ()
            )]
            []
            []
        )]
    )
    (Module
        template_travel_01_travel
        (TriviaNode
            [(EndOfLine)
            (EndOfLine)]
            [(EndOfLine)
            (EndOfLine)]
        )
        [(Use
            []
            template_travel_01_math
            []
            .false.
            ()
        )]
        [(ImplicitNone
            []
            ()
        )]
        [(Declaration
            ()
            [(SimpleAttribute
                AttrPrivate
            )]
            []
            ()
        )
        (Declaration
            ()
            [(SimpleAttribute
                AttrPublic
            )]
            [(travel_tmpl
            []
            []
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Requirement
            operations
            [D
            T
            S
            plus_D
            plus_T
            D_divided_by_T
            D_divided_by_S]
            [(DerivedType
                D
                []
                ()
                [(SimpleAttribute
                    AttrDeferred
                )]
                []
                []
            )
            (DerivedType
                T
                []
                ()
                [(SimpleAttribute
                    AttrDeferred
                )]
                []
                []
            )
            (DerivedType
                S
                []
                (TriviaNode
                    []
                    [(EndOfLine)
                    (EndOfLine)]
                )
                [(SimpleAttribute
                    AttrDeferred
                )]
                []
                []
            )]
            [(Function
                plus_D
                [(l)
                (r)]
                [(SimpleAttribute
                    AttrPure
                )]
                total
                ()
                (TriviaNode
                    []
                    [(EndOfLine)
                    (EndOfLine)]
                )
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(l
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (R
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    []
                    [(total
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                []
                []
                []
            )
            (Function
                plus_T
                [(l)
                (r)]
                [(SimpleAttribute
                    AttrPure
                )]
                total
                ()
                (TriviaNode
                    []
                    [(EndOfLine)
                    (EndOfLine)]
                )
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        T
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(l
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (R
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        T
                        None
                    )
                    []
                    [(total
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                []
                []
                []
            )
            (Function
                D_divided_by_T
                [(n)
                (d)]
                [(SimpleAttribute
                    AttrPure
                )]
                quotient
                ()
                (TriviaNode
                    []
                    [(EndOfLine)
                    (EndOfLine)]
                )
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(n
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        T
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(d
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        S
                        None
                    )
                    []
                    [(quotient
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                []
                []
                []
            )
            (Function
                D_divided_by_S
                [(n)
                (d)]
                [(SimpleAttribute
                    AttrPure
                )]
                quotient
                ()
                ()
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(n
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        S
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(d
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        T
                        None
                    )
                    []
                    [(quotient
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                []
                []
                []
            )]
        )
        (Template
            travel_tmpl
            [D
            T
            S
            plus_D
            plus_T
            D_divided_by_T
            D_divided_by_S]
            [(Require
                [(UnitRequire
                    operations
                    [(AttrName
                        D
                    )
                    (AttrName
                        T
                    )
                    (AttrName
                        S
                    )
                    (AttrName
                        plus_D
                    )
                    (AttrName
                        plus_T
                    )
                    (AttrName
                        D_divided_by_T
                    )
                    (AttrName
                        D_divided_by_S
                    )]
                )]
            )
            (Declaration
                ()
                [(SimpleAttribute
                    AttrPrivate
                )]
                []
                ()
            )
            (Declaration
                ()
                [(SimpleAttribute
                    AttrPublic
                )]
                [(avg_S_from_T
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(Function
                avg_S_from_T
                [(d1)
                (t1)
                (d2)
                (t2)]
                [(SimpleAttribute
                    AttrPure
                )]
                avg
                ()
                (TriviaNode
                    []
                    [(EndOfLine)
                    (EndOfLine)]
                )
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(d1
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (d2
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        T
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(t1
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (t2
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        S
                        None
                    )
                    []
                    [(avg
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                [(Assignment
                    0
                    avg
                    (FuncCallOrArray
                        D_divided_by_T
                        []
                        [(()
                        (FuncCallOrArray
                            plus_D
                            []
                            [(()
                            d1
                            ()
                            0)
                            (()
                            d2
                            ()
                            0)]
                            []
                            []
                            []
                        )
                        ()
                        0)
                        (()
                        (FuncCallOrArray
                            plus_T
                            []
                            [(()
                            t1
                            ()
                            0)
                            (()
                            t2
                            ()
                            0)]
                            []
                            []
                            []
                        )
                        ()
                        0)]
                        []
                        []
                        []
                    )
                    ()
                )]
                []
                []
            )
            (Function
                avg_S_from_S
                [(d1)
                (s1)
                (d2)
                (s2)]
                [(SimpleAttribute
                    AttrPure
                )]
                avg
                ()
                ()
                []
                []
                []
                [(Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        D
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(d1
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (d2
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        S
                        None
                    )
                    [(AttrIntent
                        In
                    )]
                    [(s1
                    []
                    []
                    ()
                    ()
                    None
                    ())
                    (s2
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )
                (Declaration
                    (AttrType
                        TypeType
                        []
                        ()
                        S
                        None
                    )
                    []
                    [(avg
                    []
                    []
                    ()
                    ()
                    None
                    ())]
                    ()
                )]
                [(Assignment
                    0
                    avg
                    (FuncCallOrArray
                        avg_S_from_T
                        []
                        [(()
                        d1
                        ()
                        0)
                        (()
                        (FuncCallOrArray
                            D_divided_by_S
                            []
                            [(()
                            d1
                            ()
                            0)
                            (()
                            s1
                            ()
                            0)]
                            []
                            []
                            []
                        )
                        ()
                        0)
                        (()
                        d2
                        ()
                        0)
                        (()
                        (FuncCallOrArray
                            D_divided_by_S
                            []
                            [(()
                            d2
                            ()
                            0)
                            (()
                            s2
                            ()
                            0)]
                            []
                            []
                            []
                        )
                        ()
                        0)]
                        []
                        []
                        []
                    )
                    ()
                )]
                []
                []
            )]
        )]
        []
        []
    )
    (Module
        template_travel_01_m
        (TriviaNode
            [(EndOfLine)
            (EndOfLine)]
            [(EndOfLine)
            (EndOfLine)]
        )
        [(Use
            []
            template_travel_01_math
            []
            .false.
            ()
        )
        (Use
            []
            template_travel_01_travel
            []
            .false.
            ()
        )]
        [(ImplicitNone
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
        []
        [(Subroutine
            test_template
            []
            []
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
            []
            []
            []
            [(Instantiate
                travel_tmpl
                [(AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrName
                    add_real
                )
                (AttrName
                    add_real
                )
                (AttrName
                    slash_real
                )
                (AttrName
                    slash_real
                )]
                [(UseSymbol
                    avg_S_from_T
                    avg_real_S_from_T
                )]
            )
            (Instantiate
                travel_tmpl
                [(AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                (AttrName
                    add_real
                )
                (AttrName
                    add_real
                )
                (AttrName
                    slash_real
                )
                (AttrName
                    slash_real
                )]
                [(UseSymbol
                    avg_S_from_S
                    avg_real_S_from_S
                )]
            )
            (Declaration
                (AttrType
                    TypeReal
                    []
                    ()
                    ()
                    None
                )
                []
                [(s1
                []
                []
                ()
                ()
                None
                ())
                (s2
                []
                []
                ()
                ()
                None
                ())]
                ()
            )]
            [(Assignment
                0
                s1
                (FuncCallOrArray
                    avg_real_S_from_T
                    []
                    [(()
                    (Real "1.0")
                    ()
                    0)
                    (()
                    (Real "3.0")
                    ()
                    0)
                    (()
                    (Real "1.5")
                    ()
                    0)
                    (()
                    (Real "4.0")
                    ()
                    0)]
                    []
                    []
                    []
                )
                ()
            )
            (Assignment
                0
                s2
                (FuncCallOrArray
                    avg_real_S_from_S
                    []
                    [(()
                    (Real "1.1")
                    ()
                    0)
                    (()
                    (Real "0.5")
                    ()
                    0)
                    (()
                    (Real "2.0")
                    ()
                    0)
                    (()
                    (Real "0.75")
                    ()
                    0)]
                    []
                    []
                    []
                )
                ()
            )
            (Print
                0
                ()
                [(String "s1=" ())
                s1]
                ()
            )
            (Print
                0
                ()
                [(String "s2=" ())
                s2]
                ()
            )]
            []
            []
        )]
    )
    (Program
        template_travel_01
        ()
        [(Use
            []
            template_travel_01_m
            []
            .false.
            ()
        )]
        [(ImplicitNone
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
        [(SubroutineCall
            0
            test_template
            []
            []
            []
            []
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
    )]
)
