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

import "org-dartlang-testcase:///field_access_lib.dart";

extension /* unnamed */ _extension#0 on dynamic {
  set it = self::_extension#0|set#it;
}
inline class InlineClass /* declaredRepresentationType = core::int */ {
  method test = self::InlineClass|test;
  tearoff test = self::InlineClass|get#test;
  constructor • = self::InlineClass|;
  tearoff • = self::InlineClass|_#new#tearOff;
}
inline class GenericInlineClass<T extends core::Object? = dynamic> /* declaredRepresentationType = T% */ {
  method test = self::GenericInlineClass|test;
  tearoff test = self::GenericInlineClass|get#test;
  constructor • = self::GenericInlineClass|;
  tearoff • = self::GenericInlineClass|_#new#tearOff;
}
inline class FunctionInlineClass<T extends core::Object? = dynamic> /* declaredRepresentationType = () → T% */ {
  method test = self::FunctionInlineClass|test;
  tearoff test = self::FunctionInlineClass|get#test;
  constructor • = self::FunctionInlineClass|;
  tearoff • = self::FunctionInlineClass|_#new#tearOff;
}
inline class GenericFunctionInlineClass /* declaredRepresentationType = <T extends core::Object? = dynamic>() → T% */ {
  method test = self::GenericFunctionInlineClass|test;
  tearoff test = self::GenericFunctionInlineClass|get#test;
  constructor • = self::GenericFunctionInlineClass|;
  tearoff • = self::GenericFunctionInlineClass|_#new#tearOff;
}
inline class DynamicInlineClass /* declaredRepresentationType = dynamic */ {
  method test = self::DynamicInlineClass|test;
  tearoff test = self::DynamicInlineClass|get#test;
  constructor • = self::DynamicInlineClass|;
  tearoff • = self::DynamicInlineClass|_#new#tearOff;
}
inline class ErroneousInlineClass /* declaredRepresentationType = core::int */ {
  method test = self::ErroneousInlineClass|test;
  tearoff test = self::ErroneousInlineClass|get#test;
  constructor • = self::ErroneousInlineClass|;
  tearoff • = self::ErroneousInlineClass|_#new#tearOff;
}
static extension-member method _extension#0|set#it(lowered final dynamic #this, dynamic value) → void
  ;
static inline-class-member method InlineClass|(core::int it) → self::InlineClass
  ;
static inline-class-member method InlineClass|_#new#tearOff(core::int it) → self::InlineClass
  return self::InlineClass|(it);
static inline-class-member method InlineClass|test(lowered final self::InlineClass #this) → void
  ;
static inline-class-member method InlineClass|get#test(lowered final self::InlineClass #this) → () → void
  return () → void => self::InlineClass|test(#this);
static inline-class-member method GenericInlineClass|<T extends core::Object? = dynamic>(self::GenericInlineClass|::T% it) → self::GenericInlineClass<self::GenericInlineClass|::T%>
  ;
static inline-class-member method GenericInlineClass|_#new#tearOff<T extends core::Object? = dynamic>(self::GenericInlineClass|_#new#tearOff::T% it) → self::GenericInlineClass<self::GenericInlineClass|_#new#tearOff::T%>
  return self::GenericInlineClass|<self::GenericInlineClass|_#new#tearOff::T%>(it);
static inline-class-member method GenericInlineClass|test<T extends core::Object? = dynamic>(lowered final self::GenericInlineClass<self::GenericInlineClass|test::T%> #this, self::GenericInlineClass|test::T% t) → void
  ;
static inline-class-member method GenericInlineClass|get#test<T extends core::Object? = dynamic>(lowered final self::GenericInlineClass<self::GenericInlineClass|get#test::T%> #this) → (self::GenericInlineClass|get#test::T%) → void
  return (self::GenericInlineClass|get#test::T% t) → void => self::GenericInlineClass|test<self::GenericInlineClass|get#test::T%>(#this, t);
static inline-class-member method FunctionInlineClass|<T extends core::Object? = dynamic>(() → self::FunctionInlineClass|::T% it) → self::FunctionInlineClass<self::FunctionInlineClass|::T%>
  ;
static inline-class-member method FunctionInlineClass|_#new#tearOff<T extends core::Object? = dynamic>(() → self::FunctionInlineClass|_#new#tearOff::T% it) → self::FunctionInlineClass<self::FunctionInlineClass|_#new#tearOff::T%>
  return self::FunctionInlineClass|<self::FunctionInlineClass|_#new#tearOff::T%>(it);
static inline-class-member method FunctionInlineClass|test<T extends core::Object? = dynamic>(lowered final self::FunctionInlineClass<self::FunctionInlineClass|test::T%> #this, () → self::FunctionInlineClass|test::T% t) → void
  ;
static inline-class-member method FunctionInlineClass|get#test<T extends core::Object? = dynamic>(lowered final self::FunctionInlineClass<self::FunctionInlineClass|get#test::T%> #this) → (() → self::FunctionInlineClass|get#test::T%) → void
  return (() → self::FunctionInlineClass|get#test::T% t) → void => self::FunctionInlineClass|test<self::FunctionInlineClass|get#test::T%>(#this, t);
static inline-class-member method GenericFunctionInlineClass|(<T extends core::Object? = dynamic>() → T% it) → self::GenericFunctionInlineClass
  ;
static inline-class-member method GenericFunctionInlineClass|_#new#tearOff(<T extends core::Object? = dynamic>() → T% it) → self::GenericFunctionInlineClass
  return self::GenericFunctionInlineClass|(it);
static inline-class-member method GenericFunctionInlineClass|test(lowered final self::GenericFunctionInlineClass #this) → void
  ;
static inline-class-member method GenericFunctionInlineClass|get#test(lowered final self::GenericFunctionInlineClass #this) → () → void
  return () → void => self::GenericFunctionInlineClass|test(#this);
static inline-class-member method DynamicInlineClass|(dynamic it) → self::DynamicInlineClass
  ;
static inline-class-member method DynamicInlineClass|_#new#tearOff(dynamic it) → self::DynamicInlineClass
  return self::DynamicInlineClass|(it);
static inline-class-member method DynamicInlineClass|test(lowered final self::DynamicInlineClass #this) → void
  ;
static inline-class-member method DynamicInlineClass|get#test(lowered final self::DynamicInlineClass #this) → () → void
  return () → void => self::DynamicInlineClass|test(#this);
static inline-class-member method ErroneousInlineClass|(core::int a, core::String b) → self::ErroneousInlineClass
  ;
static inline-class-member method ErroneousInlineClass|_#new#tearOff(core::int a, core::String b) → self::ErroneousInlineClass
  return self::ErroneousInlineClass|(a, b);
static inline-class-member method ErroneousInlineClass|test(lowered final self::ErroneousInlineClass #this) → void
  ;
static inline-class-member method ErroneousInlineClass|get#test(lowered final self::ErroneousInlineClass #this) → () → void
  return () → void => self::ErroneousInlineClass|test(#this);
static method test(self::InlineClass inlineClass, self::GenericInlineClass<core::String> genericInlineClass, self::FunctionInlineClass<core::String> functionInlineClass, self::GenericFunctionInlineClass genericFunctionInlineClass, self::DynamicInlineClass dynamicInlineClass, self::ErroneousInlineClass erroneousInlineClass, #lib1::PrivateInlineClass privateInlineClass) → void
  ;

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

inline class PrivateInlineClass /* declaredRepresentationType = core::int */ {
  method test = self2::PrivateInlineClass|test;
  tearoff test = self2::PrivateInlineClass|get#test;
  constructor • = self2::PrivateInlineClass|;
  tearoff • = self2::PrivateInlineClass|_#new#tearOff;
}
static inline-class-member method PrivateInlineClass|(core::int _it) → self2::PrivateInlineClass
  ;
static inline-class-member method PrivateInlineClass|_#new#tearOff(core::int _it) → self2::PrivateInlineClass
  return self2::PrivateInlineClass|(_it);
static inline-class-member method PrivateInlineClass|test(lowered final self2::PrivateInlineClass #this) → void
  ;
static inline-class-member method PrivateInlineClass|get#test(lowered final self2::PrivateInlineClass #this) → () → void
  return () → void => self2::PrivateInlineClass|test(#this);
