anchor.diff:    Rectangle<int> dst;
     Vector2 offset;
     Vector2 trimmed;
  -  Sprite(Map<String, dynamic> singleAsset) {
  +  Sprite(_FrameValue singleAsset) {
       final _Asset asset = _Asset(singleAsset);
       src = asset.frame;
       var cx, cy;
  
positive.code:   return Future.value(result);
  }
  
  Future<SpriteSheet> _createSpriteSheet(
      String imgPath, Map<String, Map<String, Map<String, dynamic>>> assets) {
    final completer = Completer<SpriteSheet>();
    final img = ImageElement();
    img.onLoad.listen((_) {
      final sprites = <String, Sprite>{};
      assets['frames'].forEach((assetName, assetData) {
        sprites[assetName] = Sprite(assetData);
      });
      final sheet = SpriteSheet(img, sprites);
  
negative.code:   bool trimmed;
    Rectangle spriteSourceSize;
    Point sourceSize;
    _Asset(_FrameValue asset)
        : frame = _createRectangle(asset.frame),
          trimmed = asset.trimmed,
          spriteSourceSize = _createRectangle(asset.spriteSourceSize),
          sourceSize = _createPoint(asset.sourceSize);
  }
  
  Rectangle<int> _createRectangle(_SpriteSourceSizeClass rect) =>
      Rectangle(rect.x, rect.y, rect.w, rect.h);
  
  Point<int> _createPoint(_Size size) => Point(size.w, size.h);
  
  Future<Map<String, String>> _processAchievementAssets(String assetJson) =>
      Future.value(json.decode(assetJson));
  