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 : [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 : [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 : [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 : [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
}
