diff --git a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
index 6057d50..2585112 100644
--- a/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
+++ b/plugins/org.eclipse.dltk.javascript.core/src/org/eclipse/dltk/internal/javascript/ti/TypeInferencerVisitor.java
@@ -288,8 +288,14 @@
 			if (left != null && left.exists()) {
 				if (left.getParent() instanceof ThisValue) {
 					// this is an override, make sure that left is really
-					// created.
+					// created. copy over the variable (so that visibility is used)
+					Object variable = left
+							.getAttribute(IReferenceAttributes.R_VARIABLE);
 					left.getParent().createChild(left.getName());
+					if (variable != null) {
+						left.setAttribute(IReferenceAttributes.R_VARIABLE,
+								variable);
+					}
 					Expression property = node.getLeftExpression();
 					if (property instanceof PropertyExpression) {
 						left.setLocation(ReferenceLocation.create(getSource(),
diff --git a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
index d52498e..1836472 100644
--- a/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
+++ b/tests/org.eclipse.dltk.javascript.core.tests/src/org/eclipse/dltk/javascript/core/tests/validation/TypeInfoValidationTests.java
@@ -3490,6 +3490,31 @@
 		assertEquals(problems.toString(), 1, problems.size());
 	}
 	
+	public void testProtectedMemberInAssignedInSubtype() {
+		if (notYetImplemented(this)) {
+			return;
+		}
+		final StringList code = new StringList();
+		code.add("/** @constructor*/");
+		code.add("function proto() {");
+		code.add(" /** @protected */");
+		code.add(" this.map = null");
+		code.add("}");
+		code.add("/**");
+		code.add(" * @constructor");
+		code.add(" * @extends {proto}");
+		code.add(" */");
+		code.add("function ProtoExt() {");
+		code.add(" this.map = 1");
+		code.add("}");
+		code.add("function testProtoExt() {");
+		code.add(" var x = new ProtoExt()");
+		code.add(" x.map;");
+		code.add("}");
+		final List<IProblem> problems = validate(code.toString());
+		assertEquals(problems.toString(), 1, problems.size());
+	}
+	
 	public void testFunctionTypeExactParam() {
 		final StringList code = new StringList();
 		code.add("/**");
@@ -3620,5 +3645,4 @@
 		assertEquals(problems.toString(), 0, problems.size());
 	}
 
-
 }
