[Releng] Show identify hash code in Net4j Introspector view
diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
index 5bccb52..9204b6d 100644
--- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
+++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/internal/ui/views/Net4jIntrospectorView.java
@@ -11,7 +11,9 @@
 package org.eclipse.net4j.util.internal.ui.views;
 
 import org.eclipse.net4j.ui.shared.SharedIcons;
+import org.eclipse.net4j.util.HexUtil;
 import org.eclipse.net4j.util.ReflectUtil;
+import org.eclipse.net4j.util.StringUtil;
 import org.eclipse.net4j.util.WrappedException;
 import org.eclipse.net4j.util.collection.Pair;
 import org.eclipse.net4j.util.container.IPluginContainer;
@@ -85,6 +87,8 @@
 
   private Text classLabel;
 
+  private Text identityLabel;
+
   private Text objectLabel;
 
   private IAction backAction = new BackAction();
@@ -147,7 +151,7 @@
     composite.setLayout(UIUtil.createGridLayout(1));
 
     Composite c = new Composite(composite, SWT.BORDER);
-    c.setLayout(UIUtil.createGridLayout(2));
+    c.setLayout(UIUtil.createGridLayout(3));
     c.setLayoutData(UIUtil.createGridData(true, false));
 
     classLabel = new Text(c, SWT.READ_ONLY);
@@ -155,6 +159,10 @@
     classLabel.setBackground(bg);
     classLabel.setForeground(gray);
 
+    identityLabel = new Text(c, SWT.READ_ONLY);
+    identityLabel.setLayoutData(UIUtil.createGridData(false, false));
+    identityLabel.setBackground(bg);
+
     objectLabel = new Text(c, SWT.READ_ONLY);
     objectLabel.setLayoutData(UIUtil.createGridData(true, false));
     objectLabel.setBackground(bg);
@@ -377,19 +385,32 @@
     if (object == null)
     {
       classLabel.setText(""); //$NON-NLS-1$
+      identityLabel.setText(""); //$NON-NLS-1$
       objectLabel.setText(""); //$NON-NLS-1$
       currentViewer = objectViewer;
     }
     else
     {
       EventUtil.addListener(object, this);
-      String className = object.getClass().getName();
+
+      Class<? extends Object> c = object.getClass();
+      String className = c.isArray() ? c.getComponentType().getName() + "[]" : c.getName();
       classLabel.setText(className);
 
+      String identity = HexUtil.identityHashCode(object);
+      identityLabel.setText(identity);
+
       String value = object.toString();
-      if (value.startsWith(className + "@")) //$NON-NLS-1$
+      String prefix = c.getName() + "@";
+      if (value.startsWith(prefix))
       {
-        objectLabel.setText(value.substring(className.length()));
+        String text = value.substring(prefix.length());
+        if (identity.endsWith(text))
+        {
+          text = StringUtil.EMPTY;
+        }
+
+        objectLabel.setText(text);
       }
       else
       {