public boolean isRemote() {
    return getCause() instanceof ProxyThrowable;
  }
The cause of a ForeignException can be an exception that was generated on a local in process
thread, or a thread from a 'remote' separate process. If the cause is a ProxyThrowable, we know
it came from deserialization which usually means it came from not only another thread, but also
from a remote thread.
@return true if went through deserialization, false if locally generated
hbase-server/src/main/java/org/apache/hadoop/hbase/errorhandling/ForeignException.java