library;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

static method test(core::Symbol value) → core::String {
  #L1:
  {
    final synthesized core::Symbol #0#0 = value;
    {
      if(#C1 =={core::Symbol::==}{(core::Object) → core::bool} #0#0) {
        {
          return "foo";
        }
      }
    }
    {
      {
        {
          return "default";
        }
      }
    }
  }
}
static method main() → dynamic {
  self::expect("foo", self::test(new _in::Symbol::•("foo")));
  self::expect("foo", self::test(#C1));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
    throw "Expected ${expected}, actual ${actual}";
  }
}

constants  {
  #C1 = #foo
}
