public static void appendJvmAnnotations(TextBuffer buffer, int indent, StructMember mb, boolean isInterface, ConstantPool pool, int targetType) {
    switch (targetType) {
      case TypeAnnotation.METHOD_RETURN_TYPE:
        if (isInterface && !mb.hasModifier(CodeConstants.ACC_ABSTRACT)) {
          buffer.appendIndent(indent).append("@JvmDefault").appendLineSeparator();
        }
        if (mb.hasModifier(CodeConstants.ACC_SYNCHRONIZED)) {
          buffer.appendIndent(indent).append("@Synchronized").appendLineSeparator();
        }
        if (mb.hasAttribute(StructGeneralAttribute.ATTRIBUTE_EXCEPTIONS)) {
          StructExceptionsAttribute attrib = mb.getAttribute(StructGeneralAttribute.ATTRIBUTE_EXCEPTIONS);
          buffer.appendIndent(indent).append("@Throws(");
          buffer.pushNewlineGroup(indent, 1);
          boolean first = true;
          for (int i : attrib.getThrowsExceptions()) {
            if (!first) {
              buffer.append(",").appendPossibleNewline(" ");
            }
            first = false;
            String name = pool.getPrimitiveConstant(i).getString();
            buffer.append(name).append("::class");
          }
          buffer.popNewlineGroup();
          buffer.append(")").appendLineSeparator();
        }
        break;
      case TypeAnnotation.FIELD:
        // TODO: use site targets
        if (mb.hasModifier(CodeConstants.ACC_TRANSIENT)) {
          buffer.appendIndent(indent).append("@Transient").appendLineSeparator();
        }
        if (mb.hasModifier(CodeConstants.ACC_VOLATILE)) {
          buffer.appendIndent(indent).append("@Volatile").appendLineSeparator();
        }
        break;
      case TypeAnnotation.CLASS_TYPE_PARAMETER:
        if (mb.hasAttribute(StructRecordAttribute.ATTRIBUTE_RECORD)) {
          buffer.appendIndent(indent).append("@JvmRecord").appendLineSeparator();
        }
    }

    if (mb.hasModifier(CodeConstants.ACC_STATIC) && targetType != TypeAnnotation.CLASS_TYPE_PARAMETER && KotlinDecompilationContext.getCurrentType() != KotlinDecompilationContext.KotlinType.FILE && !mb.hasModifier(CodeConstants.ACC_ENUM)) {
      buffer.appendIndent(indent).append("@JvmStatic").appendLineSeparator();
    }
    if (mb.hasModifier(CodeConstants.ACC_STRICT)) {
      buffer.appendIndent(indent).append("@Strictfp").appendLineSeparator();
    }
    if (mb.hasModifier(CodeConstants.ACC_SYNTHETIC)) {
      buffer.appendIndent(indent).append("@JvmSynthetic").appendLineSeparator();
    }
  }
").appendLineSeparator();
    for (String s : javaDoc.split("\n")) {
      buffer.appendIndent(indent).append(" * ").append(s).appendLineSeparator();
    }
    buffer.appendIndent(indent).append("
plugins/kotlin/src/main/java/org/vineflower/kotlin/KotlinWriter.java