=====Code Representation===== type Some[T] = distinct MOption[T] None[T] = distinct MOption[T] MOptionKind* = enum moNone, moSome SporePlaceholder_520095174 = type SporePlaceholder_520095175 = object proc init[T](_: typedesc[None[T]]): None[T] = None[T](MOption[T](kind: moNone)) proc init[T](_: typedesc[Some[T]]; val: T): Some[T] = Some[T](MOption[T](kind: moSome, SomeData: val)) SporePlaceholder_520095175 MOption*[T] {..} = type MOptionSpore[T] {..} = object case kind*: MOptionKind of moNone: NoneData*: void of moSome: SomeData*: T ref MOptionSpore[T] =====Tree Representation===== TypeSection TypeDef Ident "Some" GenericParams IdentDefs Ident "T" Empty Empty DistinctTy BracketExpr Ident "MOption" Ident "T" TypeDef Ident "None" GenericParams IdentDefs Ident "T" Empty Empty DistinctTy BracketExpr Ident "MOption" Ident "T" TypeDef Postfix Ident "*" Ident "MOptionKind" Empty EnumTy Empty Ident "moNone" Ident "moSome" TypeDef Sym "SporePlaceholder" Empty StmtList TypeSection TypeDef Sym "SporePlaceholder" Empty ObjectTy Empty Empty Empty ProcDef Ident "init" Empty GenericParams IdentDefs Ident "T" Empty Empty FormalParams BracketExpr Ident "None" Ident "T" IdentDefs Ident "_" BracketExpr Ident "typedesc" BracketExpr Ident "None" Ident "T" Empty Empty Empty StmtList Empty Call BracketExpr Ident "None" Ident "T" ObjConstr BracketExpr Ident "MOption" Ident "T" ExprColonExpr Ident "kind" Ident "moNone" ProcDef Ident "init" Empty GenericParams IdentDefs Ident "T" Empty Empty FormalParams BracketExpr Ident "Some" Ident "T" IdentDefs Ident "_" BracketExpr Ident "typedesc" BracketExpr Ident "Some" Ident "T" Empty IdentDefs Ident "val" Ident "T" Empty Empty Empty StmtList Empty Call BracketExpr Ident "Some" Ident "T" ObjConstr BracketExpr Ident "MOption" Ident "T" ExprColonExpr Ident "kind" Ident "moSome" ExprColonExpr Ident "SomeData" Ident "val" Sym "SporePlaceholder" TypeDef PragmaExpr Postfix Ident "*" Ident "MOption" Pragma GenericParams IdentDefs Ident "T" Empty Empty StmtList TypeSection TypeDef PragmaExpr Ident "MOptionSpore" Pragma GenericParams IdentDefs Ident "T" Empty Empty ObjectTy Empty Empty RecList RecCase IdentDefs Postfix Ident "*" Ident "kind" Ident "MOptionKind" Empty OfBranch Ident "moNone" RecList IdentDefs Postfix Ident "*" Ident "NoneData" Ident "void" Empty OfBranch Ident "moSome" RecList IdentDefs Postfix Ident "*" Ident "SomeData" Ident "T" Empty RefTy BracketExpr Ident "MOptionSpore" Ident "T"