library /*isNonNullableByDefault*/;
import self as self;
import "value_class_support_lib.dart" as val;
import "dart:core" as core;

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

@val::valueClass
class Animal extends core::Object {
  final field core::int numberOfLegs;
  synthetic constructor •() → self::Animal
    ;
}
static method main() → dynamic
  ;
static method expect(core::Object? expected, core::Object? actual) → dynamic
  ;

library /*isNonNullableByDefault*/;
import self as val;
import "dart:core" as core;

class JenkinsSmiHash extends core::Object {
  synthetic constructor •() → val::JenkinsSmiHash
    ;
  static method combine(core::int hash, core::int value) → core::int
    ;
  static method finish(core::int hash) → core::int
    ;
}
static const field core::String valueClass = "valueClass";


Extra constant evaluation status:
Evaluated: StaticGet @ org-dartlang-testcase:///simple.dart:7:2 -> StringConstant("valueClass")
Extra constant evaluation: evaluated: 1, effectively constant: 1
