/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 Ġ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 . parcel ize . ide Ċ Ċ import Ġcom . intellij . psi . impl . light . Light FieldBuilder Ċ import Ġorg . jetbrains . kotlin . parcel ize . serializers . Parcel ize Extension Base Ċ import Ġorg . jetbrains . kotlin . as Java . Ul tra Light Class Modifier Extension Ċ import Ġorg . jetbrains . kotlin . as Java . classes . Kt Ul tra Light Class Ċ import Ġorg . jetbrains . kotlin . as Java . classes . create Generated Method From Descriptor Ċ import Ġorg . jetbrains . kotlin . as Java . elements . Kt Light Field Ċ import Ġorg . jetbrains . kotlin . as Java . elements . Kt Light Field Impl Ċ import Ġorg . jetbrains . kotlin . as Java . elements . Kt Light Method Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Declaration Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . util . module Ċ import Ġorg . jetbrains . kotlin . parcel ize . Parcel ize Synt hetic Component Ċ import Ġorg . jetbrains . kotlin . psi . Kt Declaration Ċ import Ġorg . jetbrains . kotlin . util . is Annotated Ċ import Ġorg . jetbrains . kotlin . util . is Ord inary Class Ċ Ċ class ĠParcel ize Ul tra Light Class Modifier Extension Ġ: ĠParcel ize Extension Base , ĠU l tra Light Class Modifier Extension Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġtry Get Parcel ize Class ( declaration : ĠK t Declaration , Ġdescriptor : ĠLazy < Declaration Descriptor ?> ): ĠClass Descriptor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! declaration . is Ord inary Class Ġ|| Ġ! declaration . is Annotated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġdeclaration . module ĊĠĠĠĠĠĠĠ Ġif Ġ( module Ġ== Ġnull Ġ|| Ġ! Parcel ize Availability . is Available ( module )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Value Ġ= Ġdescriptor . value Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġparcel ize Class Ġ= Ġ( descriptor Value Ġas ? ĠClass Descriptor ) Ġ?: Ġdescriptor Value . containing Declaration Ġas ? ĠClass Descriptor ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parcel ize Class Ġ== Ġnull Ġ|| Ġ! parcel ize Class . is Parcel ize Class Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġparcel ize Class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġintercept Fields Building ( ĊĠĠĠĠĠĠĠ Ġdeclaration : ĠK t Declaration , ĊĠĠĠĠĠĠĠ Ġdescriptor : ĠLazy < Declaration Descriptor ? >, ĊĠĠĠĠĠĠĠ Ġcontaining Declaration : ĠK t Ul tra Light Class , ĊĠĠĠĠĠĠĠ Ġfields List : ĠMutable List < Kt Light Field > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparcel ize Class Ġ= Ġtry Get Parcel ize Class ( declaration , Ġdescriptor ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( parcel ize Class . has Creator Field ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfield Wrapper Ġ= ĠK t Light Field Impl . Kt Light Field For Source Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Delegate Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLight FieldBuilder (" CRE ATOR ", Ġ" android . os . Parcelable . Creator ", Ġcontaining Declaration ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Modifiers (" public ", Ġ" static ", Ġ" final ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Class Ġ= Ġcontaining Declaration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy Delegate Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfields List . add ( field Wrapper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġintercept Methods Building ( ĊĠĠĠĠĠĠĠ Ġdeclaration : ĠK t Declaration , ĊĠĠĠĠĠĠĠ Ġdescriptor : ĠLazy < Declaration Descriptor ? >, ĊĠĠĠĠĠĠĠ Ġcontaining Declaration : ĠK t Ul tra Light Class , ĊĠĠĠĠĠĠĠ Ġmethods List : ĠMutable List < Kt Light Method > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparcel ize Class Ġ= Ġtry Get Parcel ize Class ( declaration , Ġdescriptor ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwith ( parcel ize Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Synt hetic Describe Contents ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Function ( Parcel ize Synt hetic Component . Component Kind . DESCR IBE _ CONTENTS )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethods List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Declaration . create Generated Method From Descriptor ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Synt hetic WriteTo Parcel ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Function ( Parcel ize Synt hetic Component . Component Kind . WRITE _ TO _ PAR CEL )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethods List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Declaration . create Generated Method From Descriptor ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }