There is a construct called WeakReference which doesn't get enough usage in Java programs. It's important in other languages to avoid circular references. One side is strong and that can use a normal declaration. The other side is of type WeakReference. This can sometimes help untangle things in cases where two objects hold references to each other.