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 1f0c063..1087f11 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
@@ -408,7 +408,7 @@
 										RTypes.localType(name, context
 												.getParent().getChild(name)));
 							}
-						}
+						} 
 						else {
 							left.setKind(ReferenceKind.FIELD);
 							final Comment comment = JSDocSupport
@@ -536,8 +536,7 @@
 			if (methods != null && methods.size() == 1) {
 				final IRMethod method = methods.get(0);
 				IValueReference ref = checkSpecialJavascriptFunctionCalls(
-						reference,
-						arguments, method);
+						reference, arguments, method);
 				if (ref != null)
 					return ref;
 				if (method.isGeneric()) {
@@ -597,10 +596,12 @@
 				}
 			} else if (method.getName().equals("create")
 					&& RTypes.OBJECT.getDeclaration().equals(
-							method.getDeclaringType()) && arguments.length > 0) {
+							method.getDeclaringType()) && arguments.length > 0
+					&& arguments[0] != null) {
 				AnonymousValue value = new AnonymousValue();
 				IValue argumentValue = ((IValueProvider) arguments[0])
 						.getValue();
+
 				if (argumentValue != null)
 					value.getValue().addValue(argumentValue);
 				if (arguments.length == 2) {
@@ -616,9 +617,9 @@
 											.getType()).getMember("value");
 									if (valueMember != null) {
 										newMembers.add(new RRecordMember(member
-												.getName(), valueMember
+														.getName(), valueMember
 														.getType(), member
-												.getSource()));
+														.getSource()));
 									}
 									valueMember = ((IRRecordType) member
 											.getType()).getMember("get");
@@ -639,7 +640,7 @@
 							}
 							if (newMembers.size() > 0) {
 								value.addValue(ConstantValue.of(RTypes
-									.recordType(newMembers)), true);
+										.recordType(newMembers)), true);
 							}
 						}
 					}
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 7bc391a..9dbda10 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
@@ -1367,5 +1367,14 @@
 		assertEquals(20, location.getNameStart());
 		assertEquals(26, location.getNameEnd());
 	}
+	
+	public void testObjectCreateCallWithNull() {
+		final StringList code = new StringList();
+		code.add("var p = Object.create(null)");
+		final IValueCollection collection = inference(code.toString());
+		IValueReference func = collection.getChild("p").getChild("hasOwnProperty");
+		assertTrue(func.exists());
+		
+	}
 
 }
