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
    ;
}
class Cat extends core::Object implements self::Animal {
  final field core::int numberOfLegs;
  synthetic constructor •() → self::Cat
    ;
}
static method main() → 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:///non_value_implements_value_error.dart:7:2 -> StringConstant("valueClass")
Extra constant evaluation: evaluated: 1, effectively constant: 1
