title: Nullable types in kotlin annotation processor
body: <p>I'm working on annotation processor for Kotlin and because the processed elements are in Java I don't receive nullables as <code>?</code> instead with a <code>@Nullable</code> annotation  and that's fine, but I'm facing a problem with receiving null parameters in types and in higher order functions, for normal parameters.</p>
  
  <pre><code>var someNullField: String? = "" 
  </code></pre>
  
  <p>I will receive <code>java.lang.String</code> at process with <code>@org.jetbrains.annotations.Nullable</code> in its annotations.</p>
  
  <p>But <code>List&lt;String?&gt;</code> for example will return me <code>java.util.List&lt;java.lang.String&gt;</code> without any annotations not in the main element not in the type arguments which results in a unknown nullability state</p>
  
  <p>I tried using <code>javax.lang.model.util.Types</code> to find some sort of result but nothing. </p>
  
  <p>Some of the code that i'm using now:</p>
  
  <pre><code>val utils = processingEnvironment.typeUtils
  val type = fieldElement.asType()
  if (type is DeclaredType) {
      val typeElement = utils.asElement(type)
      type.typeArguments
              .forEach {
                  //Trying different ways and just printing for possible results
                  val capture = utils.capture(it)
                  val erasure = utils.erasure(it)
                  val element = utils.asElement(it)
                  printMessage("element: $element isNullable: ${element.isNullable()} isNotNull: ${element.isNotNull()}\ncapture: $capture isNullable: ${capture.isNullable()} isNotNull: ${capture.isNotNull()}\nerasure: $erasure isNullable: ${erasure.isNullable()} isNotNull: ${erasure.isNotNull()}")
              }
  }
  </code></pre>
  
  <p>All help will be appreciated.</p>