package Ġorg . elm . ide . ins pe ctions Ċ Ċ import Ġcom . intellij . code Inspection . Local Inspection Tool Ċ import Ġcom . intellij . code Inspection . Problems Holder Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Element Visitor Ċ import Ġorg . elm . lang . core . psi . Elm File Ċ import Ġorg . elm . lang . core . psi . Elm Name Identifier Owner Ċ import Ġorg . elm . lang . core . psi . Elm Named Element Ċ import Ġorg . elm . lang . core . psi . elements . Elm Tuple Expr Ċ import Ġorg . elm . lang . core . psi . elements . Elm Type Alias Declaration Ċ import Ġorg . elm . lang . core . psi . elements . Elm Type Declaration Ċ import Ġorg . elm . lang . core . resolve . scope . Module Scope Ċ Ċ /** Ċ Ġ* ĠReport Ġerrors Ġwhen Ġa Ġfile Ġhas Ġmultiple Ġdeclarations Ġwith Ġthe Ġsame Ġname . Ċ Ġ*/ Ċ class ĠEl m Duplicate Declaration Inspection Ġ: ĠLocal Inspection Tool () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild Visitor ( holder : ĠPro blems Holder , Ġis On The Fly : ĠBoolean ): ĠPsi Element Visitor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠPsi Element Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Element ( element : ĠPsi Element ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Element ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ! is ĠEl m File ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Module Scope . getDeclared Types ( element ) Ġ+ ĠModule Scope . getDeclared Values ( element )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. array ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . size Ġ> Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatten () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġif Ġ( it Ġis ĠEl m Name Identifier Owner ) Ġit . name Identifier Ġelse Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( target , Ġ" Multiple Ġdeclarations Ġwith Ġname Ġ'${ it . name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ