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

static method main() → dynamic {
  lowered final core::int? #i;
  function #i#get() → core::int
    return let final core::int? #t1 = #i in #t1 == null ?{core::int} throw new _in::LateError::localNI("i") : #t1{core::int};
  function #i#set(core::int i#param) → dynamic
    if(#i == null)
      return #i = i#param;
    else
      throw new _in::LateError::localAI("i");
  #i#set(1){(core::int) → dynamic};
  core::print(#i#get(){() → core::int});
  lowered final core::int? #j;
  function #j#get() → core::int
    return let final core::int? #t2 = #j in #t2 == null ?{core::int} throw new _in::LateError::localNI("j") : #t2{core::int};
  function #j#set(core::int j#param) → dynamic
    if(#j == null)
      return #j = j#param;
    else
      throw new _in::LateError::localAI("j");
  {
    final synthesized(core::int, core::String) #0#0 = (2, "Hello");
    #j#set(#0#0.$1{core::int}){(core::int) → dynamic};
  }
  core::print(#j#get(){() → core::int});
}


Extra constant evaluation status:
Evaluated: RecordLiteral @ org-dartlang-testcase:///issue51449.dart:11:12 -> RecordConstant(const (2.0, "Hello"))
Extra constant evaluation: evaluated: 37, effectively constant: 1
