static clone(value) { const type = typeof(value); if (type !== 'object' || value === null) { return value; } /* eslint-disable indent, no-unreachable */ switch (value.constructor) { case Array: return DeepCloner.cloneArray(value); break; case Date: return DeepCloner.cloneDate(value); break; default: return DeepCloner.cloneRawObject(value); } /* eslint-enable indent no-unreachable */ }