package Ġorg . elixir _ lang . beam . chunk . debug _ info . v 1 . erl _ abstract _ code . abstract _ code _ compiler _ options . abstract _ code Ċ Ċ import Ġcom . eric sson . otp . erlang . O tp Er lang Object Ċ import Ġcom . eric sson . otp . erlang . O tp Er lang Tuple Ċ import Ġorg . elixir _ lang . beam . chunk . debug _ info . v 1 . erl _ abstract _ code . abstract _ code _ compiler _ options . Abstract Code Ċ import Ġorg . elixir _ lang . beam . chunk . debug _ info . v 1 . erl _ abstract _ code . abstract _ code _ compiler _ options . Abstract Code . if Tag Ċ import Ġorg . elixir _ lang . code . Identifier . inspect As Function ĊĊ Ċ object ĠRemote Ġ{ ĊĠĠĠ Ġfun Ġ< T > Ġif To ( term : ĠO tp Er lang Object ?, Ġif True : Ġ( O tp Er lang Tuple ) Ġ-> ĠT ) Ġ= Ġif Tag ( term , ĠTAG , Ġif True ) ĊĊĠĠĠ Ġfun Ġif To Macro String Declared Scope ( term : ĠO tp Er lang Object ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif To ( term ) Ġ{ Ġto Macro String Declared Scope ( it ) Ġ} ĊĊĠĠĠ Ġfun Ġto Macro String Declared Scope ( term : ĠO tp Er lang Tuple ): ĠMacro String Declared Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodule String Ġ= Ġmodule String ( term ) ĊĠĠĠĠĠĠĠ Ġval Ġfunction String Ġ= Ġfunction String ( term ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMacro String Declared Scope ("$ module String .$ function String ", Ġdo Block Ġ= Ġfalse , ĠScope . EMPTY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" remote " ĊĊĠĠĠ Ġprivate Ġfun Ġfunction String ( term : ĠO tp Er lang Tuple ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Function ( term ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġfunction ToString ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠAbstract Code . missing (" function ", Ġ"${ TAG } Ġfunction ", Ġterm ) ĊĊĠĠĠ Ġprivate Ġfun Ġfunction ToString ( function : ĠO tp Er lang Object ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAtom . to Elixir Atom ( function ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġinspect As Function ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠAbstract Code . unknown (" function ", Ġ"${ TAG } Ġfunction ", Ġfunction ) ĊĊĠĠĠ Ġinternal Ġfun Ġmodule String ( term : ĠO tp Er lang Tuple ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Module ( term ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmodule ToString ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠAbstract Code . error (": missing _ module ", Ġ"${ TAG } Ġmodule ", Ġterm ) ĊĊĠĠĠ Ġprivate Ġfun Ġmodule ToString ( module : ĠO tp Er lang Object ) Ġ= ĠAbstract Code . toString ( module ) ĊĊĠĠĠ Ġinternal Ġfun Ġto Function ( term : ĠO tp Er lang Tuple ): ĠO tp Er lang Object ? Ġ= Ġterm . elementAt ( 3 ) ĊĠĠĠ Ġprivate Ġfun Ġto Module ( term : ĠO tp Er lang Tuple ): ĠO tp Er lang Object ? Ġ= Ġterm . elementAt ( 2 ) Ċ } Ċ