library;
import self as self;
import "dart:core" as core;
import "main_lib1.dart" as mai;
import "main_lib2.dart" as mai2;

import "org-dartlang-testcase:///main_lib1.dart";
import "org-dartlang-testcase:///main_lib2.dart";

class Main1 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::Main1> values = #C7;
  enum-element static const field self::Main1 a = #C3;
  enum-element static const field self::Main1 b = #C6;
  const synthetic constructor •(core::int #index, core::String #name) → self::Main1
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Main1.${this.{core::_Enum::_name}{core::String}}";
}
class Main2 extends core::_Enum /*isEnum*/  {
  static const field core::List<self::Main2> values = #C10;
  enum-element static const field self::Main2 a = #C8;
  enum-element static const field self::Main2 b = #C9;
  const synthetic constructor •(core::int #index, core::String #name) → self::Main2
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Main2.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L1:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L2:
    case #C3:
    case #C6:
      {}
  }
  #L3:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L4:
    case #C8:
    case #C9:
      {}
  }
  #L5:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L6:
    case #C11:
    case #C12:
      {}
  }
  #L7:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L8:
    case #C13:
    case #C14:
      {}
  }
  #L9:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L10:
    case #C15:
    case #C16:
      {}
  }
}
static method method2(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L11:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L12:
    case #C3:
    case #C6:
      {}
  }
  #L13:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L14:
    case #C8:
    case #C9:
      {}
  }
  #L15:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L16:
    case #C11:
    case #C12:
      {}
  }
  #L17:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L18:
    case #C13:
    case #C14:
      {}
  }
  #L19:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L20:
    case #C15:
    case #C16:
      {}
  }
}
static method method3(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L21:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L22:
    case #C3:
    case #C6:
      {}
  }
  #L23:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L24:
    case #C8:
    case #C9:
      {}
  }
  #L25:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L26:
    case #C11:
    case #C12:
      {}
  }
  #L27:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L28:
    case #C13:
    case #C14:
      {}
  }
  #L29:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L30:
    case #C15:
    case #C16:
      {}
  }
}

library;
import self as mai;
import "dart:core" as core;
import "main.dart" as self;
import "main_lib2.dart" as mai2;

import "org-dartlang-testcase:///main.dart";
import "org-dartlang-testcase:///main_lib2.dart";

class Lib1a extends core::_Enum /*isEnum*/  {
  static const field core::List<mai::Lib1a> values = #C17;
  enum-element static const field mai::Lib1a a = #C11;
  enum-element static const field mai::Lib1a b = #C12;
  const synthetic constructor •(core::int #index, core::String #name) → mai::Lib1a
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Lib1a.${this.{core::_Enum::_name}{core::String}}";
}
class Lib1b extends core::_Enum /*isEnum*/  {
  static const field core::List<mai::Lib1b> values = #C18;
  enum-element static const field mai::Lib1b a = #C13;
  enum-element static const field mai::Lib1b b = #C14;
  const synthetic constructor •(core::int #index, core::String #name) → mai::Lib1b
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Lib1b.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L31:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L32:
    case #C3:
    case #C6:
      {}
  }
  #L33:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L34:
    case #C8:
    case #C9:
      {}
  }
  #L35:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L36:
    case #C11:
    case #C12:
      {}
  }
  #L37:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L38:
    case #C13:
    case #C14:
      {}
  }
  #L39:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L40:
    case #C15:
    case #C16:
      {}
  }
}
static method method2(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L41:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L42:
    case #C3:
    case #C6:
      {}
  }
  #L43:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L44:
    case #C8:
    case #C9:
      {}
  }
  #L45:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L46:
    case #C11:
    case #C12:
      {}
  }
  #L47:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L48:
    case #C13:
    case #C14:
      {}
  }
  #L49:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L50:
    case #C15:
    case #C16:
      {}
  }
}
static method method3(self::Main1 main1, self::Main2 main2, mai::Lib1a lib1a, mai::Lib1b lib1b, mai2::Lib2 lib2) → dynamic {
  #L51:
  switch(main1) /* isExplicitlyExhaustive, self::Main1 */ {
    #L52:
    case #C3:
    case #C6:
      {}
  }
  #L53:
  switch(main2) /* isExplicitlyExhaustive, self::Main2 */ {
    #L54:
    case #C8:
    case #C9:
      {}
  }
  #L55:
  switch(lib1a) /* isExplicitlyExhaustive, mai::Lib1a */ {
    #L56:
    case #C11:
    case #C12:
      {}
  }
  #L57:
  switch(lib1b) /* isExplicitlyExhaustive, mai::Lib1b */ {
    #L58:
    case #C13:
    case #C14:
      {}
  }
  #L59:
  switch(lib2) /* isExplicitlyExhaustive, mai2::Lib2 */ {
    #L60:
    case #C15:
    case #C16:
      {}
  }
}

library;
import self as mai2;
import "dart:core" as core;

class Lib2 extends core::_Enum /*isEnum*/  {
  static const field core::List<mai2::Lib2> values = #C19;
  enum-element static const field mai2::Lib2 a = #C15;
  enum-element static const field mai2::Lib2 b = #C16;
  const synthetic constructor •(core::int #index, core::String #name) → mai2::Lib2
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Lib2.${this.{core::_Enum::_name}{core::String}}";
}

constants  {
  #C1 = 0
  #C2 = "a"
  #C3 = self::Main1 {index:#C1, _name:#C2}
  #C4 = 1
  #C5 = "b"
  #C6 = self::Main1 {index:#C4, _name:#C5}
  #C7 = <self::Main1>[#C3, #C6]
  #C8 = self::Main2 {index:#C1, _name:#C2}
  #C9 = self::Main2 {index:#C4, _name:#C5}
  #C10 = <self::Main2>[#C8, #C9]
  #C11 = mai::Lib1a {index:#C1, _name:#C2}
  #C12 = mai::Lib1a {index:#C4, _name:#C5}
  #C13 = mai::Lib1b {index:#C1, _name:#C2}
  #C14 = mai::Lib1b {index:#C4, _name:#C5}
  #C15 = mai2::Lib2 {index:#C1, _name:#C2}
  #C16 = mai2::Lib2 {index:#C4, _name:#C5}
  #C17 = <mai::Lib1a>[#C11, #C12]
  #C18 = <mai::Lib1b>[#C13, #C14]
  #C19 = <mai2::Lib2>[#C15, #C16]
}


Constructor coverage from constants:
org-dartlang-testcase:///main_lib2.dart:
- Lib2. (from org-dartlang-testcase:///main_lib2.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)

org-dartlang-testcase:///main.dart:
- Main1. (from org-dartlang-testcase:///main.dart:31:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- Main2. (from org-dartlang-testcase:///main.dart:59:6)

org-dartlang-testcase:///main_lib1.dart:
- Lib1a. (from org-dartlang-testcase:///main_lib1.dart:31:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- Lib1b. (from org-dartlang-testcase:///main_lib1.dart:59:6)
