"this" should never be a reference but always be a copy so that changes
to the instance are not shown up on the this so also on the other
instances.
diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/ThisValue.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/ThisValue.java
index c9f2d0c..99914d7 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/ThisValue.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/ThisValue.java
@@ -28,6 +28,11 @@
 	}
 
 	@Override
+	public boolean isReference() {
+		return false;
+	}
+
+	@Override
 	public ReferenceKind getKind() {
 		return ReferenceKind.THIS;
 	}
diff --git a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
index a4a2d64..4a54506 100644
--- a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
+++ b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/typeinference/TypeInferenceTests.java
@@ -1315,4 +1315,30 @@
 		assertNotNull(o);
 		assertEquals(ITypeNames.STRING, o.getName());
 	}
+	
+	public void testBaseTypeWith2SubClasses() {
+		final StringList code = new StringList();
+		
+		code.add("/** @constructor */");
+		code.add("function base() {");
+		code.add("	this.baseVar = 10;");
+		code.add("	this.baseMethod = function(){};");
+		code.add("}");
+		code.add("/** @constructor ");
+		code.add(" * @extends {base} */");
+		code.add("function A1() {};");
+		code.add("A1.prototype =  new base();");
+		code.add("A1.prototype.constructor = A1;");
+		code.add("A1.prototype.methodAddedToA1Prototype = function() {};");
+		code.add("/** @constructor ");
+		code.add(" * @extends {base} */");
+		code.add("function A2() {};");
+		code.add("A2.prototype =  new base();");
+		code.add("A2.prototype.constructor = A2;");
+		code.add("var x = new A2();");
+		final IValueCollection collection = inference(code.toString());
+		IValueReference test = collection.getChild("x");
+		Set<String> directChildren = test.getDirectChildren();
+		assertEquals(2, directChildren.size());
+	}
 }