|  | library; | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  |  | 
|  | [217]import "dart:math" show pi; | 
|  |  | 
|  | [261]abstract class Shape extends core::Object { | 
|  | [261]  synthetic constructor •() → self::Shape | 
|  | : [-1] super core::Object::• [-1]() | 
|  | [-1]    ; | 
|  | } | 
|  | [277]class Square extends core::Object implements self::Shape { | 
|  | [318]  final field core::double length; | 
|  | [328]  constructor •([340] core::double length) → self::Square | 
|  | : [340] self::Square::length = [-1] [-1] length, [328] super core::Object::• [328]() | 
|  | [-1]    ; | 
|  | } | 
|  | [358]class Circle extends core::Object implements self::Shape { | 
|  | [399]  final field core::double radius; | 
|  | [409]  constructor •([421] core::double radius) → self::Circle | 
|  | : [421] self::Circle::radius = [-1] [-1] radius, [409] super core::Object::• [409]() | 
|  | [-1]    ; | 
|  | } | 
|  | [440]static method calculateArea([460] self::Shape shape) → core::double | 
|  | [470]  return [470] [470] block { | 
|  | [-1]    [-1] core::double #t1; | 
|  | [478]    [478] final synthesized self::Shape #0#0 = [478] [478] shape; | 
|  | [-1]    [-1] synthesized core::double #0#2; | 
|  | [-1]    [-1] synthesized core::bool #0#2#isSet = [506] [506] false; | 
|  | [-1]    [-1] synthesized core::double #0#4; | 
|  | [-1]    [-1] synthesized core::bool #0#4#isSet = [556] [556] false; | 
|  | [470]    #L1: | 
|  | [470]    { | 
|  | [527]      { | 
|  | [512]        [512] hoisted core::double l; | 
|  | [527]        if([-1] [-1] [493] [493] [493] [493] [-1] [-1] #0#0 is self::Square && [512]([512] let [512] final dynamic #t2 = [512] [512] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final dynamic #t3 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [522] [522] [520] [520] l.{core::num::>=}[522]([525] 0){(core::num) → core::bool}) { | 
|  | [-1]          [-1] [-1] #t1 = [532] [532] [530] [530] l.{core::double::*}[532]([534] l){(core::num) → core::double}; | 
|  | [527]          break #L1; | 
|  | } | 
|  | } | 
|  | [577]      { | 
|  | [562]        [562] hoisted core::double r; | 
|  | [577]        if([-1] [-1] [543] [543] [543] [543] [-1] [-1] #0#0 is self::Circle && [562]([562] let [562] final dynamic #t4 = [562] [562] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final dynamic #t5 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [572] [572] [570] [570] r.{core::num::>=}[572]([575] 0){(core::num) → core::bool}) { | 
|  | [-1]          [-1] [-1] #t1 = [587] [587] [583] [583] [580] [580] #C1.{core::double::*}[583]([585] r){(core::num) → core::double}.{core::double::*}[587]([589] r){(core::num) → core::double}; | 
|  | [577]          break #L1; | 
|  | } | 
|  | } | 
|  | [631]      { | 
|  | [617]        [617] hoisted core::double l; | 
|  | [631]        if([-1] [-1] [598] [598] [598] [598] [-1] [-1] #0#0 is self::Square && [617]([617] let [617] final dynamic #t6 = [617] [617] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final dynamic #t7 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [627] [627] [625] [625] l.{core::num::<}[627]([629] 0){(core::num) → core::bool}) { | 
|  | [-1]          [-1] [-1] #t1 = [634] [634] -1.0; | 
|  | [631]          break #L1; | 
|  | } | 
|  | } | 
|  | [677]      { | 
|  | [663]        [663] hoisted core::double r; | 
|  | [677]        if([-1] [-1] [644] [644] [644] [644] [-1] [-1] #0#0 is self::Circle && [663]([663] let [663] final dynamic #t8 = [663] [663] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final dynamic #t9 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [673] [673] [671] [671] r.{core::num::<}[673]([675] 0){(core::num) → core::bool}) { | 
|  | [-1]          [-1] [-1] #t1 = [680] [680] -1.0; | 
|  | [677]          break #L1; | 
|  | } | 
|  | } | 
|  | [698]      { | 
|  | [698]        if([690] [690] true) { | 
|  | [-1]          [-1] [-1] #t1 = [701] [701] 0.0; | 
|  | [698]          break #L1; | 
|  | } | 
|  | } | 
|  | } | 
|  | } =>[-1] [-1] #t1; | 
|  | [711]static method testMain() → dynamic { | 
|  | [726]  [726] [726] self::calculateArea [739]([740] new self::Circle::• [746]([747] -123.0)); | 
|  | } | 
|  |  | 
|  | constants  { | 
|  | #C1 = 3.141592653589793 | 
|  | } |