title: @DSLMarker not limiting the scope of DSL
body: <p>i'm building a Kotlin DSL for HTML that caters for very specific requirements i have (hence not using kotlinx.html)</p>
  
  <pre><code>        DIV(classes = "div1") {
              +"text1"
              a(href = "#0") {
                  +"text2"
                  div(classes = "div2") {
                      +"text3"
                      href = "#1"
                  }
                  div(classes = "div3") {
                      +"text4"
                      href = "#2"
                  }
              }
              hr(classes = "hr1")
              span(classes = "span1") {
                  +"text5"
              }
          }
  </code></pre>
  
  <p>In the example above, i'm able to call <code>href</code> in any of the child elements of <code>a</code> instead of having to do <code>this@a.href = ""</code>. How do i limit the scope so that <code>this</code> will only be of type <code>DIV</code> in this example and throw a compiler error when calling <code>href</code> since <code>DIV</code> doesn't have an <code>href</code> property?</p>
  
  <p>Here's a shortened version of the <code>DIV</code> class
  <a href="https://github.com/persephone-unframework/dsl/blob/master/src/main/kotlin/io/persephone/dsl/element/DIV.kt" rel="nofollow noreferrer">https://github.com/persephone-unframework/dsl/blob/master/src/main/kotlin/io/persephone/dsl/element/DIV.kt</a></p>
  
  <pre><code>@DslMarker
  annotation class DivMarker
  
  @DivMarker
  class DIV(
      classes: String? = null,
      ....
      init: (DIV.() -&gt; Unit)? = null
  ) : Tag(
      tagName = "div",
      selfClosing = false
  ) {
  
      fun a(
          classes: String? = null,
          ....
          init: (A.() -&gt; Unit)? = null
      ) = A().let {
  
          this.children.add(it)
          ....
          init?.invoke(it)
          it
      }
  
      ....
  
  }
  </code></pre>
  
  <p>Similarly, class A is also marked:
  <a href="https://github.com/persephone-unframework/dsl/blob/master/src/main/kotlin/io/persephone/dsl/element/A.kt" rel="nofollow noreferrer">https://github.com/persephone-unframework/dsl/blob/master/src/main/kotlin/io/persephone/dsl/element/A.kt</a></p>
  
  <pre><code>@DslMarker
  annotation class AMarker
  
  @AMarker
  class A(
      href: String? = null,
      ...
      init: (A.() -&gt; Unit)? = null
  ) : Tag(
      tagName = "a",
      selfClosing = false
  ) {
  
      fun div(
          classes: String? = null,
          init: (DIV.() -&gt; Unit)? = null
      ) = DIV().let {
  
          this.children.add(it)
  
          ....
  
          init?.invoke(it)
          it
      }
  
      ....
  }
  </code></pre>
  
  <p>Any idea why the <code>@DslMarker</code> annotation is not limiting the scope in this scenario and how i can fix it?</p>