anchor.diff:                } else if (value.isNull ||
                     value.isInt ||
                     value.isBool ||
  -                  value.isString) {
  +                  value.isString ||
  +                  value is LateSentinelConstantValue) {
                   // TODO(johnniwinther,sra): Support non-primitive constants in
                   // allocators when it does cause allocators to deoptimized
                   // because of deferred loading.
  
positive.code:   void registerStaticField(KField field, EvaluationComplexity complexity) {
      ir.Field node = _elementMap.getMemberNode(field);
      ir.Expression expression = node.initializer;
      ConstantValue value = _elementMap.getConstantValue(
          _elementMap.getStaticTypeContext(field), expression,
          requireConstant: node.isConst, implicitNull: true);
      if (value != null && !value.isConstant) {
        value = null;
      }
  
negative.code: 
        FieldEntity fieldElement = _elementMap.getField(field);
        ir.Expression expression = field.initializer;
        ConstantValue value;
        if (expression is ir.StaticInvocation &&
            identical(
                expression.target, _elementMap.coreTypes.createSentinelMethod)) {
          value = LateSentinelConstantValue();
        } else {
          value = _elementMap.getConstantValue(
              _elementMap.getStaticTypeContext(fieldElement), expression,
              requireConstant: false, implicitNull: true);
        }
        if (value != null && value.isConstant) {
          fieldData[fieldElement] = new AllocatorData(value);
        }
  