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::• [-1]()
[-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::• [-1]()
[-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
}
