'use strict';

var value = require('./valid-value')

  , defineProperty = Object.defineProperty
  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
  , getOwnPropertyNames = Object.getOwnPropertyNames;

module.exports = function (target, source) {
	var error;
	target = Object(value(target));
	getOwnPropertyNames(Object(value(source))).forEach(function (name) {
		try {
			defineProperty(target, name, getOwnPropertyDescriptor(source, name));
		} catch (e) { error = e; }
	});
	if (error !== undefined) throw error;
	return target;
};

@@ -204,16 +204,73 @@
 rtyNames
+%0A  , getOwnPropertySymbols = Object.getOwnPropertySymbols
 ;%0A%0Amodul
@@ -319,16 +319,54 @@
 ar error
+, sourceObject = Object(value(source))
 ;%0A%09targe
@@ -413,37 +413,259 @@
 tyNames(
-Object(value(source))
+sourceObject).forEach(function (name) %7B%0A%09%09try %7B%0A%09%09%09defineProperty(target, name, getOwnPropertyDescriptor(source, name));%0A%09%09%7D catch (e) %7B error = e; %7D%0A%09%7D);%0A%09if (typeof getOwnPropertySymbols === 'function') %7B%0A%09%09getOwnPropertySymbols(sourceObject
 ).forEac
@@ -672,32 +672,35 @@
 h(function (
-name
+symbol
 ) %7B%0A
+%09
 %09%09try %7B%0A%09%09%09d
@@ -690,32 +690,33 @@
 ) %7B%0A%09%09%09try %7B%0A%09%09%09
+%09
 defineProperty(t
@@ -714,36 +714,38 @@
 roperty(target, 
-name
+symbol
 , getOwnProperty
@@ -759,32 +759,35 @@
 tor(source, 
-name
+symbol
 ));%0A
+%09
 %09%09%7D catch (e
@@ -799,29 +799,33 @@
 rror = e; %7D%0A
+%09
 %09%7D);%0A
+%09%7D%0A
 %09if (error !

Copy ES6 symbols in Object.mixin