* Only assign setters if present
Rather than generating
```kotlin
val result: Content
result = Content()
result.content = if (contentSet) content else result.content
result.text = if (textSet) text else result.text
```
This will now conditionally set
```kotlin
val result: Content
result = Content()
if (contentSet) {
result.content = content
}
if (textSet) {
result.text = text
}
```
* Spotless
* Standardize around JDK 8
* Update GJF to support newer JDKs
* Fix misc java 8 issues in tests
* Prepare java 16/records checking at runtime
* Implement real RecordJsonAdapter
* Spotless
* Prepare build for JDK 16+
* Fix property name for kapt
* Small cleanup
* Make FallbackEnum java-8 happy
* Remove animalsniffer
* Fix format
* Add opens for ExtendsPlatformClassWithProtectedFields
* Return null every time in shim for main tests
* Use JDK 16 + release 8 to replace animalsniffer
* Simplify accessor accessible handling
* Remove manifest attrs
* Fix typo
* Fix KCT tests + upgrade it
* Cover another
* Try explicit kotlin daemon args for java 17?
* Disable 17-ea for now until kotlin 1.5.30
* Add JsonQualifier and Json(name) tests + fix qualifiers
* Ensure constructor is accessible
* GJF it properly
* GJF 1.11
* Unwrap InvocationTargetException
* Use MethodHandle for constructor
* Use MethodHandle for accessor too
* Revert "Remove manifest attrs"
This reverts commit 3eb768fd6904bb5c979aa01c3c182e0fb9329d62.
* Proper MR jar
* *actually* fix GJF, which wasn't getting applied before
We can just enable this everywhere now since we require JDK 16 anyway
* Make IDE happy about modules access
* Fixup records tests to play nice with modules
Gotta be public
* Add complex smoke test
* Remove comment
Not a regression test in this case
One example I found for this is when a property is annotated with android's `@SuppressLint`, which is only available from the android jar and not visible during apt. This should just be a warning (if even?) and not a hard error.
* Update KotlinPoet to 1.7.2
* Fix a Java NPE crash when processing a parameter annotated with an annotation that placed in annotation package
This problem happens with KotlinPoet 1.7.x.
From KotlinPoet 1.7.x, `TypeName.toString()` is escaped with backquotes if the package name contains keywords.
So NPE will be thrown if an annotation is placed in `annotation` package because `elements.getTypeElement(it.typeName.toString())` returns `null`.
* Reformat imports
* Use rawType().canonicalName instead of toString()
* Fix test case
* Require getTypeElement
* Exclude com.google.guava from shadowJar
* Move a test case of processing a qualifier placed in `annotation` package
* Use checkNull instead