Types: PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiArrayAccessExpression:a[0] : int PsiField:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray PsiReferenceExpression:a : java.util.concurrent.atomic.AtomicIntegerArray Conversions: a[0] -> $qualifier$.decrementAndGet($idx$) --$qualifier$[$idx$] --a[0] a[0] -> $qualifier$.get($idx$) $qualifier$[$idx$] a[0] a[0] -> $qualifier$.get($idx$) $qualifier$[$idx$] a[0] a[0] -> $qualifier$.getAndAdd($idx$, ($val$)) $qualifier$[$idx$] += $val$ a[0] += (2) a[0] -> $qualifier$.getAndDecrement($idx$) $qualifier$[$idx$]-- a[0]-- a[0] -> $qualifier$.getAndIncrement($idx$) $qualifier$[$idx$]++ a[0]++ a[0] -> $qualifier$.incrementAndGet($idx$) ++$qualifier$[$idx$] ++a[0] a[0] -> $qualifier$.set($idx$, $qualifier$.get($idx$) * $val$) $qualifier$[$idx$]*=$val$ a[0] *= 2 new int[0] -> new java.util.concurrent.atomic.AtomicIntegerArray($val$) $val$ new int[0] new int[1] -> new java.util.concurrent.atomic.AtomicIntegerArray($val$) $val$ new int[1] New expression type changes: Fails: