(function () {
	"use strict";

	// modified from https://github.com/kriskowal/es5-shim
	var has = Object.prototype.hasOwnProperty,
		is = require('is'),
		forEach = require('foreach'),
		hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
		hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),
		dontEnums = [
			"toString",
			"toLocaleString",
			"valueOf",
			"hasOwnProperty",
			"isPrototypeOf",
			"propertyIsEnumerable",
			"constructor"
		],
		keysShim;

	keysShim = function keys(object) {
		var isObject = object !== null && typeof object === 'object',
			isFunction = is.fn(object),
			isArguments = is.arguments(object),
			theKeys = [];

		if (!isObject && !isFunction && !isArguments) {
			throw new TypeError("Object.keys called on a non-object");
		}

		if (isArguments) {
			forEach(object, function (value) {
				theKeys.push(value);
			});
		} else {
			var name,
				skipProto = hasProtoEnumBug && isFunction;
			for (name in object) {
				if (!(skipProto && name === 'prototype') && has.call(object, name)) {
					theKeys.push(name);
				}
			}
		}

		if (hasDontEnumBug) {
			forEach(dontEnums, function (dontEnum) {
				if (has.call(object, dontEnum)) {
					theKeys.push(dontEnum);
				}
			});
		}
		return theKeys;
	};

	module.exports = keysShim;
}());


@@ -461,26 +461,8 @@
 ble%22
-,%0A%09%09%09%22constructor%22
 %0A%09%09%5D
@@ -941,17 +941,106 @@
 Function
-;
+,%0A%09%09%09%09ctor = object.constructor,%0A%09%09%09%09skipConstructor = ctor && ctor.prototype === object;%0A
 %0A%09%09%09for 
@@ -1105,16 +1105,64 @@
 ype') &&
+ !(skipConstructor && name === 'constructor') &&
  has.cal

Make sure that a prototype's constructor property is not enumerable. Fixes #3.