Consider the following code: ``` class(*), allocatable :: a(:), a1 integer :: stat allocate(real:: a1) allocate(real :: a1, a(2:4), stat=stat) print*, allocated(a) end ``` `a1` is allocated multiple time, which will result an runtime error. However, the allocation of `a` should complete. If I swap `a1` and `a` in the 2nd allocate statement, `a` is allocated successfully.