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

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

class Animal extends core::Object {
  final field core::int numberOfLegs;
  constructor •({required core::int numberOfLegs = null}) → self::Animal
    ;
}
@val::valueClass
class Cat extends self::Animal {
  final field core::int numberOfWhiskers;
  synthetic constructor •() → self::Cat
    ;
}
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:///value_extends_non_value.dart:12:2 -> StringConstant("valueClass")
Extra constant evaluation: evaluated: 1, effectively constant: 1
