import { HTMLElementAssembler } from './element'

const { HTMLAnchorElement } = window

export class A extends HTMLElementAssembler {
    /**
     * @param {String} href
     */
    set href(href) {
        this.node.href = href
    }

    /**
     * @returns {String}
     */
    get href() {
        return this.node.href
    }

    /**
     * @param {String} target
     */
    set target(target) {
        this.node.target = target
    }

    /**
     * @returns {String}
     */
    get target() {
        return this.node.target
    }

    /**
     * @param {String} rel
     */
    set rel(rel) {
        this.node.rel = rel
    }

    /**
     * @returns {String}
     */
    get rel() {
        return this.node.rel
    }

    /**
     * @param {String} hreflang
     */
    set hreflang(hreflang) {
        this.node.hreflang = hreflang
    }

    /**
     * @returns {String}
     */
    get hreflang() {
        return this.node.hreflang
    }

    /**
     * @param {String} type
     */
    set type(type) {
        this.node.type = type
    }

    /**
     * @returns {String}
     */
    get type() {
        return this.node.type
    }

    /**
     * @returns {window.HTMLAnchorElement}
     */
    static get interface() {
        return HTMLAnchorElement
    }
}

/**
 * @param {*} [init]
 * @returns {A}
 */
export function a(init) {
    return new A(init)
}

@@ -570,159 +570,576 @@
 ng%7D 
-rel%0A     */%0A    set rel(rel) %7B%0A        this.node.rel = rel%0A    %7D%0A%0A    /**%0A     * @returns %7BString%7D%0A     */%0A    get rel() %7B%0A        return this.node.rel
+download%0A     */%0A    set download(download) %7B%0A        this.node.download = download%0A    %7D%0A%0A    /**%0A     * @returns %7BString%7D%0A     */%0A    get download() %7B%0A        return this.node.download%0A    %7D%0A%0A%0A    /**%0A     * @param %7BString%7D rel%0A     */%0A    set rel(rel) %7B%0A        this.node.rel = rel%0A    %7D%0A%0A    /**%0A     * @returns %7BString%7D%0A     */%0A    get rel() %7B%0A        return this.node.rel%0A    %7D%0A%0A%0A    /**%0A     * @param %7BString%7D rev%0A     */%0A    set rev(rev) %7B%0A        this.node.rev = rev%0A    %7D%0A%0A    /**%0A     * @returns %7BString%7D%0A     */%0A    get rev() %7B%0A        return this.node.rev
 %0A   
@@ -1556,32 +1556,299 @@
 ode.type%0A    %7D%0A%0A
+    /**%0A     * @param %7BString%7D referrerPolicy%0A     */%0A    set referrerPolicy(referrerPolicy) %7B%0A        this.node.referrerPolicy = referrerPolicy%0A    %7D%0A%0A    /**%0A     * @returns %7BString%7D%0A     */%0A    get referrerPolicy() %7B%0A        return this.node.referrerPolicy%0A    %7D%0A%0A
     /**%0A     * @

complete interface implementation