/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . metadata . jvm . de serialization Ċ Ċ import Ġorg . jetbrains . kotlin . metadata . de serialization . Binary Version Ċ Ċ /** Ċ Ġ* ĠThe Ġversion Ġof Ġthe Ġmetadata Ġserialized Ġby Ġthe Ġcompiler Ġand Ġdeserialized Ġby Ġthe Ġcompiler Ġand Ġreflection . Ċ Ġ* ĠThis Ġversion Ġincludes Ġthe Ġversion Ġof Ġthe Ġcore Ġprotobuf Ġmessages Ġ( metadata . proto ) Ġas Ġwell Ġas ĠJVM Ġextensions Ġ( jvm _ metadata . proto ). Ċ Ġ*/ Ċ class ĠJ vm Metadata Version ( version Array : ĠInt Array , Ġval Ġis Strict Semantics : ĠBoolean ) Ġ: ĠBinary Version (* version Array ) Ġ{ ĊĠĠĠ Ġconstructor ( var arg Ġnumbers : ĠInt ) Ġ: Ġthis ( numbers , Ġis Strict Semantics Ġ= Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Compatible (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE : Ġ 1 . 0 Ġis Ġa Ġpre - Kotlin - 1 . 0 Ġmetadata Ġversion , Ġwith Ġwhich Ġthe Ġcurrent Ġcompiler Ġis Ġincompatible ĊĠĠĠĠĠĠĠ Ġ( major Ġ!= Ġ 1 Ġ|| Ġminor Ġ!= Ġ 0 ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Strict Semantics ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Compatible To ( INSTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠKotlin Ġ 1 . N Ġis Ġable Ġto Ġread Ġmetadata Ġof Ġversions Ġup Ġto ĠKotlin Ġ 1 .{ N + 1 } Ġ( unless Ġthe Ġversion Ġhas Ġstrict Ġsemantics ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmajor Ġ== ĠINSTANCE . major Ġ&& Ġminor Ġ<= ĠINSTANCE . minor Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠINSTANCE Ġ= ĠJ vm Metadata Version ( 1 , Ġ 4 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠINVALID _ VERSION Ġ= ĠJ vm Metadata Version () ĊĠĠĠ Ġ} Ċ } Ċ