package Ġorg . elixir _ lang . psi . impl Ċ Ċ import Ġorg . elixir _ lang . psi .* Ċ import Ġorg . elixir _ lang . psi . call . name . Function . DEF MODULE Ċ import Ġorg . elixir _ lang . psi . call . name . Module . KERNEL Ċ Ċ object ĠMaybe ModuleName Impl Ġ{ ĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġis Ġan Ġargument Ġin Ġ` defmodule Ġ< argument > Ġdo Ġend ` Ġcall . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis ModuleName ( access Expression : ĠE lixir Access Expression ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġaccess Expression . parent ĊĠĠĠĠĠĠĠ Ġvar Ġis ModuleName Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġis ĠE lixir No Parent heses One Argument ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ModuleName Ġ= Ġparent . is ModuleName ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis ModuleName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis ModuleName ( qual ifiable Alias : ĠQual ifiable Alias ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġqual ifiable Alias . parent ĊĠĠĠĠĠĠĠ Ġval Ġsibling Count Ġ= Ġparent . children . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġis ModuleName Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/* Ġcheck Ġthat Ġthis Ġqual ifiable Alias Ġis Ġthe Ġonly Ġchild Ġso Ġsub sections Ġof Ġalias Ġchains Ġdon 't Ġsay Ġthey Ġare Ġmodule ĊĠĠĠĠĠĠĠĠĠĠ Ġnames . Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( sibling Count Ġ== Ġ 0 Ġ&& Ġparent Ġis ĠMaybe ModuleName ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ModuleName Ġ= Ġparent . is ModuleName ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis ModuleName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġis Ġan Ġargument Ġin Ġ` defmodule Ġ< argument > Ġdo Ġend ` Ġcall . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis ModuleName ( no Parent heses One Argument : ĠE lixir No Parent heses One Argument ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġno Parent heses One Argument . parent ĊĠĠĠĠĠĠĠ Ġvar Ġis ModuleName Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġis ĠE lixir Un matched Unqualified No Parent heses Call ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ModuleName Ġ= Ġparent . is Calling Macro ( KERNEL , ĠDEF MODULE , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis ModuleName ĊĠĠĠ Ġ} Ċ } Ċ