function deepcopy(value) {
    if (!(!!value && typeof value == 'object')) {
        return value;
    }
    if (Object.prototype.toString.call(value) == '[object Date]') {
        return new Date(value.getTime());
    }
    if (Array.isArray(value)) {
        return value.map(deepcopy);
    }
    var result = {};
    Object.keys(value).forEach(
        function (key) { result[key] = deepcopy(value[key]); });
    return result;
}
Render method used to render the lit-html TemplateResult to the element's
DOM.
@param {TemplateResult} Template to render.
@param {Element|DocumentFragment} Node into which to render.
@param {String} Element name.
@nocollapse