Adding further probe to diagnose a reference counting problem
Javadoc says finalize() is never called twice, but adding this just to be sure.
print this with extra indent for better visibility in the dump
typo
Applying indentation elsewhere, too
Fixed doppelganger release problem.

While working on an elusive reference counting bug in remoting, I've found a bug in the reference counting scheme.

Here's the sequence of events that would produce the problem:

  - French side exports object A as #1
  - British side exports object B as #1
  - British sends RemoteInvocationHandler to B in a serialized form to a French.
  - French receives & deserializes that into RemoteInvocationHandler(channel=British,oid=1)
  - French sends this RIH back to British. This can happen if RIH to B is a part of a reference
    graph of another Callable. Such RIH is called "going home" instance, as it's supposed to
    readResolve() into B.
  - British receives & deserializes it into RemoteInvocationHandler(channel=French,oid=1,goingHome=true)
  - ObjectInputStream on the British side immediately calls readResolve(), which returns B.
  - But British JVM still has RemoteInvocationHandler(channel=French,oid=1,goingHome=true),
    and when it later gets finalized, it ends up unexporting oid=1 exported from French,
    which is object A.

The end result is that object A, which should have kept exported, gets unexported.
So later attempt by a proxy to call back to object A will fail, because no such object
is exported any more.

It's unclear if this would solve the root cause of ZD-18447, but I think it's worth a try.

Reference: ZD-18447