package Ġorg . jetbrains . fortran . lang . types . ty Ċ Ċ open Ġclass ĠFor tran Array Shape ( val Ġdimensions : ĠList < Pair < Int , ĠInt >>) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠFor tran Array Shape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== ĠFor tran Unknown Shape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġother Ġ=== ĠFor tran Unknown Shape ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ=== ĠFor tran Unknown Shape ) Ġ{ Ġ// Ġand Ġthis Ġis Ġnot ĠFor tran Unknown Shape ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdimensions Ġ== Ġother . dimensions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠStringBuilder (" (" ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( p Ġin Ġdimensions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . append ( p . first ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . append ( p . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . append (",") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġres . delete Char At ( res . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġres . append (" )") ĊĠĠĠĠĠĠĠ Ġreturn Ġres . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdimensions . hashCode () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠFor tran Unknown Shape Ġ: ĠFor tran Array Shape ( mutable ListOf ())