library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;

class Class extends core::Object {
  field core::Map<core::String*, core::Set<core::String*>*>* map = null;
  synthetic constructor •() → self::Class*
    : super core::Object::•()
    ;
  method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
    return set.{core::Set::add}(node) ?{core::List<core::String*>*} block {
      final core::List<core::String*>* #t1 = <core::String*>[];
      #t1.{core::List::add}(node);
      final core::Iterable<core::String*>* #t2 = let final core::Iterable<core::String*>* #t3 = let final core::Set<core::String*>* #t4 = this.{self::Class::map}.{core::Map::[]}(node) in #t4.{core::Object::==}(null) ?{core::Iterable<core::String*>*} null : #t4.{core::Iterable::expand}<core::String*>((core::String* node) → core::List<core::String*>* => this.{self::Class::method}(node, set)) in #t3.{core::Object::==}(null) ?{core::List<core::String*>*} null : #t3.{core::Iterable::toList}();
      if(!#t2.{core::Object::==}(null))
        for (final core::String* #t5 in #t2)
          #t1.{core::List::add}(#t5);
    } =>#t1 : <core::String*>[];
}
static method main(dynamic args) → dynamic {
  if(false)
    new self::Class::•().{self::Class::method}("", let final core::Set<core::String*>* #t6 = col::LinkedHashSet::•<core::String*>() in #t6);
}
