code: function(obj){
  		// own enumerable&non-enumerable keys (Object.getOwnPropertyNames)
  		var getOwnKeys = obj[canSymbol.for("can.getOwnKeys")];
  		if(getOwnKeys) {
  			return getOwnKeys.call(obj);
  		} else {
  			return Object.getOwnPropertyNames(obj);
  		}
  	}
docs: @function can-reflect.getOwnKeys getOwnKeys
  @parent can-reflect/shape
  @description Return the list of keys on an object, whether or not they can be iterated over
  
  @signature `getOwnKeys(obj)`
  
  Return the Array of all String (not Symbol) keys from `obj`, whether they are enumerable or not.  If
  [can-symbol/symbols/getOwnKeys @@@@can.getOwnKeys] exists on `obj`, it is called to return
  the keys; otherwise, `Object.getOwnPropertyNames()` is used.
  
  ```js
  var foo = new DefineMap({ bar: "baz", [canSymbol.for("quux")]: "thud" });
  Object.defineProperty(foo, "jeek", {
  enumerable: false,
  value: "plonk"
  });
  
  canReflect.getOwnKeys(foo); // -> ["bar", "jeek"]
  ```
  
  @param  {Object} obj Any MapLike object
  @return {Array} the Array of all String keys from the object.