(TranslationUnit
    [(Program
        test
        ()
        []
        [(ImplicitNone
            []
            ()
        )]
        [(Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(x
            [(1
            2
            DimensionExpr)
            (1
            2
            DimensionExpr)]
            []
            ()
            (FuncCallOrArray
                reshape
                []
                [(()
                (ArrayInitializer
                    ()
                    ()
                    [1
                    2
                    3
                    4]
                )
                ()
                0)
                (()
                (ArrayInitializer
                    ()
                    ()
                    [2
                    2]
                )
                ()
                0)]
                []
                []
                []
            )
            Equal
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        [(Where
            0
            ()
            (== x 1)
            [(Assignment
                0
                x
                2
                ()
            )]
            [(Where
                0
                ()
                (== x 2)
                [(Assignment
                    0
                    x
                    3
                    ()
                )]
                [(Assignment
                    0
                    x
                    (* x 2)
                    ()
                )]
                ()
                ()
            )]
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (If
            0
            ()
            (FuncCallOrArray
                all
                []
                [(()
                (== x (FuncCallOrArray
                    reshape
                    []
                    [(()
                    (ArrayInitializer
                        ()
                        ()
                        [2
                        3
                        6
                        8]
                    )
                    ()
                    0)
                    (()
                    (ArrayInitializer
                        ()
                        ()
                        [2
                        2]
                    )
                    ()
                    0)]
                    []
                    []
                    []
                ))
                ()
                0)]
                []
                []
                []
            )
            [(Print
                0
                ()
                [(String "pass" ())]
                ()
            )]
            [(Print
                0
                ()
                [(String "fail" ())]
                ()
            )]
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (Where
            0
            ()
            (== x 2)
            [(Assignment
                0
                x
                3
                ()
            )]
            [(Where
                0
                ()
                (== x 3)
                [(Assignment
                    0
                    x
                    4
                    ()
                )]
                [(Where
                    0
                    ()
                    (== x 6)
                    [(Assignment
                        0
                        x
                        (* x 2)
                        ()
                    )]
                    []
                    ()
                    ()
                )]
                ()
                ()
            )]
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )
        (If
            0
            ()
            (FuncCallOrArray
                all
                []
                [(()
                (== x (FuncCallOrArray
                    reshape
                    []
                    [(()
                    (ArrayInitializer
                        ()
                        ()
                        [3
                        4
                        12
                        8]
                    )
                    ()
                    0)
                    (()
                    (ArrayInitializer
                        ()
                        ()
                        [2
                        2]
                    )
                    ()
                    0)]
                    []
                    []
                    []
                ))
                ()
                0)]
                []
                []
                []
            )
            [(Print
                0
                ()
                [(String "pass" ())]
                ()
            )]
            [(Print
                0
                ()
                [(String "fail" ())]
                ()
            )]
            ()
            ()
            ()
        )]
        []
    )]
)
