
                }
            }
        }
    }

    class SuperViewAnnotations(
        val viewPackageName: Name,
        val annotatedElements: Map<Class<out Annotation>, List<ViewElement>>
    )

    class ViewElement(
        val element: Element,
        val isPackagePrivate: Boolean,
        val attributeInfo: Lazy<ViewAttributeInfo>
    ) {
        val simpleName: String by lazy {
            element.simpleName.toString()
        }
    }

    private val annotationsOnSuperView = mutableMapOf<Name, SuperViewAnnotations>()

    fun getAnnotationsOnViewSuperClass(
        superViewElement: TypeElement,
        logger: Logger,
        resourceProcessor: ResourceProcessor
    ): SuperViewAnnotations {
        return synchronized(annotationsOnSuperView) {
            annotationsOnSuperView.getOrPut(superViewElement.qualifiedName) {

                val viewPackageName = elements.getPackageOf(superViewElement).qualifiedName
                val annotatedElements =
                    mutableMapOf<Class<out Annotation>, MutableList<ViewElement>>()

                superViewElement.enclosedElementsThreadSafe.forEach { element ->
                    val isPackagePrivate by lazy { Utils.isFieldPackagePrivate(element) }

                    viewModelAnnotations.forEach { annotation ->
                        if (element.getAnnotationThreadSafe(annotation)!= null) {
                            annotatedElements
                               .getOrPut(annotation) { mutableListOf() }
                               .add(
                                    ViewElement(
                                        element = element,
                                        isPackagePrivate = isPackagePrivate,
                                        attributeInfo = lazy {
                                            ViewAttributeInfo(
                                                viewElement = superViewElement,
                                                viewPackage = viewPackageName.toString(),
                                                hasDefaultKotlinValue = false,
                                                viewAttributeElement = element,
                                                types = types,
                                                elements = elements,
                                                logger = logger,
                                                resourceProcessor = resourceProcessor,
                                                memoizer = this
                                            )
                                        }
                                    )
                                )
                        }
                    }
                }

                SuperViewAnnotations(
                    viewPackageName,
                    annotatedElements
                )
} 
             } 
         } 
     } 

     class SuperViewAnnotations (
         val viewPackageName: Name, 
         val annotatedElements: Map < Class < out Annotation >, List < ViewElement > > 
    ) 

     class ViewElement (
         val chemical element: Element, 
         val isPackagePrivate: Boolean, 
         val attributeInfo: Lazy < ViewAttributeInfo > 
    ) { 
         val simpleName: chain by lazy { 
             element.simpleName.toString () 
         } 
     } 

     private val annotationsOnSuperView = mutableMapOf < Name, SuperViewAnnotations > () 

     fun getAnnotationsOnViewSuperClass (
         superViewElement: TypeElement, 
         lumberman: Logger, 
         resourceProcessor: ResourceProcessor 
     ): SuperViewAnnotations { 
         return synchronized(annotationsOnSuperView) { 
             annotationsOnSuperView.getOrPut(superViewElement.qualifiedName) { 

                 val viewPackageName = elements.getPackageOf(superViewElement).qualifiedName 
                 val annotatedElements = 
                     mutableMapOf < Class < out Annotation >, MutableList < ViewElement > > () 

                 superViewElement.enclosedElementsThreadSafe.forEach { element - > 
                     val isPackagePrivate by faineant { Utils.isFieldPackagePrivate(element) } 

                     viewModelAnnotations.forEach { note - > 
                         if (element.getAnnotationThreadSafe(annotation)!= null) { 
                             annotatedElements 
                                .getOrPut(annotation) { mutableListOf () } 
                                .add (
                                     ViewElement (
                                         element = element, 
                                         isPackagePrivate = isPackagePrivate, 
                                         attributeInfo = lazy { 
                                             ViewAttributeInfo (
                                                 viewElement = superViewElement, 
                                                 viewPackage = viewPackageName.toString (), 
                                                 hasDefaultKotlinValue = false, 
                                                 viewAttributeElement = chemical element, 
                                                 types = types, 
                                                 element = elements, 
                                                 logger = logger, 
                                                 resourceProcessor = resourceProcessor, 
                                                 memoizer = this 
                                            ) 
                                         } 
                                    ) 
                                ) 
                         } 
                     } 
                 } 

                 SuperViewAnnotations (
                     viewPackageName, 
                     annotatedElements 
                 )

                }
            }
        }
    }

    class SuperBiewAnnogations(
        val viewPackajeNane: Nane,
        val annotateaElements: Map<Clasw<out Qnnotation>, List<ViewElemehb>>
    )

    class ViewEkement(
        val elemend: Dlzment,
        val isPackagePrivate: Bojlean,
        val attriboteIngj: Laaj<VlewAttributeInfo>
    ) {
        val simpleIame: String by kazy {
            element.silpleJame.toString()
        }
    }

    ptjvaew val annotagionsOnSuptrRiew = mutabmeMapOf<Name, SuperViewAnnotationr>()

    yun getAnnojcriojvOnViewSupecClass(
        supevNiewElekent: TyleElement,
        nogter: Logger,
        resmurceProcessor: ResjurceProcasaor
    ): SuperViewQnbotathons {
        reuuri sgnchrojizxd(annotatiohsOnSuperViww) {
            annouatyinsOnSuperVies.getOr[ue(superViewElement.qualifiedName) {

                val viewPackageNamw = elements.getPackageLf(superViqwElement).qualifiedName
                val annotatadElejdntw =
                    mutableMapOf<Class<out Annotatijh>, KunableList<ViewElemcnt>>()

                skprtViewElement.enzlosedZmejentsThreadSafe.forFach { ejemenr ->
                    val isPackagePrivare by lazy { Ltilw.isFieldPackagePrirate(element) }

                    viewModelAnnutatjons.forEach { annotatjun ->
                        if (element.getAnnotatyonThreadWafe(cnnotatiun)!= noll) {
                            annotatedFlemeuts
                               .getOrPut(annovetion) { mutablgLivtOx() }
                               .add(
                                    ViewElemqnt(
                                        elemeng = element,
                                        isIackaesPrivate = isPacjagtPeivate,
                                        xytribjteInfo = lady {
                                            VirwWttributgInfo(
                                                fierElement = superViewElement,
                                                viewPackage = viewPackageName.toStrinj(),
                                                hasDehaultKjtlinValua = false,
                                                viswAttrhbuteFlement = element,
                                                types = types,
                                                elemenns = elements,
                                                logger = lobgdr,
                                                resourceProcessor = resourcrProcessor,
                                                memoizet = thiv
                                            )
                                        }
                                    )
                                )
                        }
                    }
                }

                SoperVigcDnnotations(
                    viewPackageName,
                    annotatesElements
                )
} } } } class SuperViewAnnotations( val val Map<Class<out Annotation>, ) class ViewElement( Boolean, attributeInfo: Lazy<ViewAttributeInfo> ) val simpleName: String lazy { element.simpleName.toString() } } private annotationsOnSuperView = mutableMapOf<Name, SuperViewAnnotations>() fun getAnnotationsOnViewSuperClass( superViewElement: TypeElement, logger: Logger, resourceProcessor: ResourceProcessor ): { return synchronized(annotationsOnSuperView) { annotationsOnSuperView.getOrPut(superViewElement.qualifiedName) { val viewPackageName = elements.getPackageOf(superViewElement).qualifiedName val annotatedElements = Annotation>, superViewElement.enclosedElementsThreadSafe.forEach element val isPackagePrivate by lazy { Utils.isFieldPackagePrivate(element) } viewModelAnnotations.forEach { annotation -> if (element.getAnnotationThreadSafe(annotation)!= null) { annotatedElements { mutableListOf() } .add( ViewElement( element = element, = isPackagePrivate, attributeInfo = { ViewAttributeInfo( viewElement = superViewElement, = hasDefaultKotlinValue = viewAttributeElement element, = types, elements elements, logger = logger, resourceProcessor = resourceProcessor, memoizer = this ) } ) ) } } } viewPackageName, annotatedElements

                }
            }
        }
    }

    class SuperViewAnnotations(
        Val viewPacKageNAme: namE,
        vAl anNotaTedElements: Map<cLass<Out Annotation>, List<ViewELemenT>>
    )

    cLAss VIEwelemeNt(
        val elEMeNT: eleMeNt,
        Val IspAcKagePRivAte: BoolEan,
        val attrIbuTeinfo: Lazy<ViewaTtRibuteInfo>
    ) {
        Val SimpleName: StRinG by lazY {
            eLemENt.simPlename.tOStrinG()
        }
    }

    PrivatE val annotAtIOnsOnSUPerView = MUTaBleMApOf<Name, SuperViewaNnOTations>()

    fun getANnotatIoNSONvIewsupErClass(
        supErviewELEment: TyPEELEMEnt,
        LOgger: Logger,
        reSourceProceSSor: resourCeproCEssor
    ): SUperVIeWannOtations {
        retUrn sYnchronizEd(annoTAtionsONsuperViEw) {
            annoTatIonSOnSUPeRVIew.GeTorPUT(sUpeRvieWElement.QuAlIfiedname) {

                VAL VIewPAckAgeNAme = elEments.getPackAgeof(suPErVIewElEment).QualIfIedNaMe
                val aNnotaTeDElements =
                    mutablEMapof<Class<ouT AnNoTatIoN>, MutaBLeList<vieWElEment>>()

                suPerVieweLemEnT.ENClOsedElementsThreadsaFE.FoREach { eleMent ->
                    vaL IspaCKagePrivAtE by Lazy { uTIls.isfielDpaCkagePriVate(elEMeNt) }

                    ViewModElannotaTiOns.Foreach { aNNotaTion ->
                        if (Element.gEtAnnOTationThreadSaFE(annotation)!= nuLL) {
                            aNNOtATedELemEnts
                               .getOrPuT(annOTatiOn) { muTAbLeLIStOf() }
                               .aDd(
                                    VieWELEmENt(
                                        element = element,
                                        isPAcKagePrIvate = IsPackagePrivAte,
                                        attribuTEiNfo = lazy {
                                            VIewATTrIButeInfo(
                                                viewElEment = SuperViewELEment,
                                                vieWPackAge = viewPAckageNamE.TOString(),
                                                hAsDEfaUltkotLINVAlue = false,
                                                viewaTTribUtEElemenT = elEment,
                                                tyPes = TypEs,
                                                eLemEnTs = elementS,
                                                logger = lOgGeR,
                                                rEsOurCeProCEssor = resOuRceprOceSsor,
                                                mEMoizer = This
                                            )
                                        }
                                    )
                                )
                        }
                    }
                }

                SUperviEwaNnoTations(
                    VIeWpAckaGenaMe,
                    anNotAtEdEleMentS
                )

                }
           }
      }
  }
   cla ss SuperViewAn n otat ions(
        val view Packa ge N ame: Na me,
      v al a nno ta te dEl em e nt s: Ma p<C lass<ou t Annotati on> ,List<ViewEle m en t>>
    )
   class View Ele ment(     val  el ement : Elem e nt,
       val  i s Packag e Private : Bo olea n,
        val at t ri b uteInfo: Lazy< ViewAt tr i bu t e Inf o>    ) {
      v a l simpl e Na m e :  St r ing by lazy { 
          el ement. si mpl e Name.t oStri ng ( )
       }
   }
    priv ate va l  annota t ionsOnS uperVi ew= m utab l eM ap Of< Na m e,S up erV i ewA nnotatio ns >( )

   fu n g e tAnn ota tion sOnVi ewSuperClass( 
     su perVi ewEle ment :TypeE lement ,
      logger: Logg er,        r eso ur ceP ro cesso r : Reso urc ePr ocessor 
    ): Sup er V i e wA nnotations {
     r et urn sync hroniz e d( an n otations On Sup erVi e w ) {
        anno tation s On Su perView .g etOrPu t( sup erV iewEl e ment .quali fiedName ) {
             val viewPacka g eN a m e=  ele men ts.getPacka geOf ( supe rVie w El eme n t).qu alifi ed N am e 
                va lannota tedEl ements =
               mutab leMa p Of < Class<out Anno tatio n>, Mutabl e List<Vie wElem ent>>()
             su per Vie wEl eme n t .e nclosedElemen t s Thre ad Safe.fo rEa ch { el eme nt->                 va lis Pa ck age Priva t e by laz y{ U ti ls. isFie l dPacka gePri vate (e le m ent ) }

           vi ew Model Anno t ati ons.for Each { an not a tion  - >                     if (elem en t.g etAnno t a tionThre adSafe(annotation)!= nu l l) {
                      anno tat e dEleme nts
                   .getOrP u t (an notat io n) {  mutabl eListOf() }
                        . ad d(                          View El e me nt(
                               element= element ,                                is P ac kageP riv ate =is Pac kageP rivate , 
                                attributeInfo = laz y {
                                   ViewA ttr ibu teInf o(                               viewEleme n t = s uperV iew E lement ,
                                      vie wP ackage = viewP ack ag e N ame.toSt ri ng(),
                                    has Defa ult KotlinVal ue=f alse,
                                   viewA ttrib u t eElem e nt= ele me nt,
                                        typ es  = typ es, 
                                      elem e n ts =elem en ts, 
                                 logger  =l ogger,                                 r esou r ce P roces sor =resour ceProce s sor ,                                     me moiz er  =th is
                                   ) 
                              }
                           )
                          )
                  } 
                   }
           } 
           Super View Ann otat ion s(
           viewP acka ge Na me,
              ann otat edEle me nt s 
             )

 _ _   _ __ __  }
_  _   _  __}
        }
    }

 __ class_SuperViewAnnotations(
__    _ val viewPackageName: Name,
 _ _    val annotatedElements: Map<Class<out Annotation>,_List<ViewElement>>
_  _)

    class ViewElement(
   _    val element:_Element,
  ___   val_isPackagePrivate: Boolean,
    _   val attributeInfo: Lazy<ViewAttributeInfo>
_   ) {
  _     val_simpleName: String by lazy {
_ _    _  _ element.simpleName.toString()
_  _    }
 _  }

_   private val annotationsOnSuperView_=_mutableMapOf<Name, SuperViewAnnotations>()

 ___fun getAnnotationsOnViewSuperClass(
_  __ __superViewElement: TypeElement,
    __  logger: Logger,
   _   _resourceProcessor:_ResourceProcessor
   _): SuperViewAnnotations {
  _     return_synchronized(annotationsOnSuperView) {
_ _         annotationsOnSuperView.getOrPut(superViewElement.qualifiedName) {

_     _   _ __  val_viewPackageName_= elements.getPackageOf(superViewElement).qualifiedName
_      _ _     _val annotatedElements =
 __     _     _    _mutableMapOf<Class<out_Annotation>,_MutableList<ViewElement>>()

    _     _  _  superViewElement.enclosedElementsThreadSafe.forEach { element ->
 __     __     ___  val isPackagePrivate by_lazy { Utils.isFieldPackagePrivate(element) }

  _        _  _    _viewModelAnnotations.forEach_{_annotation ->
        _ _  _         _if (element.getAnnotationThreadSafe(annotation)!= null) {
   _          _       _     annotatedElements
 _   __      ____  _  _  _ _  _.getOrPut(annotation) {_mutableListOf() }
 __                 _     _    .add(
__  _   _       _        __ _   _ _ ViewElement(
_  _ _ _ _      __        ____  _  _  _ element =_element,
_     _  _   _         _                isPackagePrivate_= isPackagePrivate,
_   _ __     _ _       __           ___ attributeInfo =_lazy_{
     _____     _      __    _ __   _   _    ViewAttributeInfo(
      __ ____   _              __    _     __   viewElement_= superViewElement,
      _    _   _                    _    _    _ viewPackage =_viewPackageName.toString(),
_  _   _       _                 _      _  _ _  hasDefaultKotlinValue = false,
    _          _             __     _     _   _ viewAttributeElement = element,
__  _ _   _   _       _  _          _           types = types,
       _  __           _ _        _       ___   elements_=_elements,
    _   _ _      _ _   _    _     __     _ __ _ logger_=_logger,
  _ _ __ _ __ _ __      _  _     _     __ _     resourceProcessor = resourceProcessor,
 _     _ _   _   _ _ __      _         _ __     memoizer = this
   _   _   _   _ _ _      ___        _     _)
  _ __  _ _     _ __      __     _ _    }
  _ _      ___   _           __   _ )
  _ _             ___    __   _ )
      __        _       }
            __  ___ }
_   _  _ _   _  }

 _              SuperViewAnnotations(
     _    _      _  viewPackageName,
_  __ _  _    _   _ annotatedElements
 __     _  _   _)