part 1 ------ +-----+ +---------------+ a1 | ---|------------->| 1 | 2 | 3 | 4 | +-----+ /---->+---------------+ | +-----+ | a2 | ---|--------/ +-----+ +-----+ +---------------+ b1 | ---|------------->| 1 | 2 | 3 | 4 | +-----+ +---------------+ +-----+ +---------------+ b2 | ---|------------->| 1 | 2 | 3 | 4 | +-----+ +---------------+ part 2 ------ true part 3 ------ false part 4 ------ Before the call we have: +--------------+ | main | | ---- | | +----+ | +---------------+ | a1 | --|-|------------->| 1 | 2 | 3 | 4 | | +----+ | +---------------+ +--------------+ At the start of the call we have: +--------------+ | mystery | | ------- | | +----+ | | vals2 | | | | +----+ | | +----+ | | vals | --|-|---+ | +----+ | | +--------------+ | | main | | | ---- | | | +----+ | +--------->+---------------+ | a1 | --|-+------------->| 1 | 2 | 3 | 4 | | +----+ | +---------------+ +--------------+ After the first for loop, we have: +--------------+ | mystery | | ------- | | +----+ | | vals2 | | | | +----+ | | +----+ | | vals | --|-|---+ | +----+ | | +--------------+ | | main | | | ---- | | | +----+ | +--------->+---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+ After the creation of vals2, we have: +--------------+ | mystery | | ------- | | +----+ | +---------------+ | vals2 | --|-|------------->| 0 | 0 | 0 | 0 | | +----+ | +---------------+ | +----+ | | vals | --|-|---+ | +----+ | | +--------------+ | | main | | | ---- | | | +----+ | +--------->+---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+ After the second loop, we have: +--------------+ | mystery | | ------- | | +----+ | +---------------+ | vals2 | --|-|------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ | +----+ | | vals | --|-|---+ | +----+ | | +--------------+ | | main | | | ---- | | | +----+ | +--------->+---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+ After the assignment vals = vals2, we have: +--------------+ | mystery | | ------- | | +----+ | +---------------+ | vals2 | --|-|------------->|-1 |-2 |-3 |-4 | | +----+ | +--------->+---------------+ | +----+ | | | vals | --|-|---+ | +----+ | +--------------+ | main | | ---- | | +----+ | +---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+ After the second loop, we have: +--------------+ | mystery | | ------- | | +----+ | +---------------+ | vals2 | --|-|------------->| 1 | 0 |-1 |-2 | | +----+ | +--------->+---------------+ | +----+ | | | vals | --|-|---+ | +----+ | +--------------+ | main | | ---- | | +----+ | +---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+ After the method call completes, we have: +--------------+ | main | | ---- | | +----+ | +---------------+ | a1 | --|-+------------->|-1 |-2 |-3 |-4 | | +----+ | +---------------+ +--------------+