package Ġorg . nb kit . gen . psi Ċ Ċ import Ġcom . intellij . psi . Psi Directory Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . squareup . kotlin po et .* Ċ import Ġorg . nb kit . lang . Scope Rule Ċ import Ġorg . nb kit . gen . Base Spec Ċ import Ġjava . nio . file . Path Ċ Ċ class ĠDirectory Wrapper Spec ( ĊĠĠĠĠĠĠĠ ĠfileName Prefix : ĠString , ĊĠĠĠĠĠĠĠ Ġbase PackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġgen Path : ĠPath , ĊĠĠĠĠĠĠĠ Ġscope Rules : ĠList < Scope Rule > Ċ ) Ġ: ĠBase Spec ( fileName Prefix , Ġbase PackageName , Ġgen Path , Ġscope Rules ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġgenerate () Ġ{ ĊĠĠĠĠĠĠĠ ĠType Spec . class Builder ( className ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Super interface ( named Element Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Super interface ( Psi Directory :: class , ĠCode Block . of (" directory ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. primary Constructor ( Fun Spec . constructor Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter (" directory ", ĠPsi Directory :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addFunction ( Fun Spec . builder (" getReference ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( K Modifier . OVERRIDE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. returns ( reference Class . as Nullable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement (" return Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addFunction ( Fun Spec . builder (" getName Identifier ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( K Modifier . OVERRIDE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. returns ( Psi Element :: class . as ClassName (). as Nullable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement (" return Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġadd Type ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġwrite ToFile () ĊĠĠĠ Ġ} Ċ } Ċ