anchor.diff:          ..body = compileBody(context, id).value);
       });
   
  -    final t = dart.refer('T');
  -    final arrayT = dart.refer('Array<T>');
  -    final listT = dart.TypeReference((b) => b
  +    final item = dart.refer('Item');
  +    final arrayItem = dart.refer('Array<Item>');
  +    final listItem = dart.TypeReference((b) => b
         ..symbol = 'List'
         ..url = dartCoreUrl
  -      ..types.add(t));
  +      ..types.add(item));
       return [
         dart.Class((b) => b
           ..annotations.add(dart.refer('sealed', packageMetaUrl))
           ..name = 'Array'
  -        ..types.add(t)
  +        ..types.add(item)
           ..fields.add(dart.Field((b) => b
             ..name = 'value'
  -          ..type = listT))
  +          ..type = listItem))
           ..mixins.addAll(traits.map((it) {
             final type = compileType(context, it);
             return dart.TypeReference((b) => b
  
positive.code:             ..requiredParameters.add(dart.Parameter((b) => b
                ..name = 'index'
                ..type = compileType(context, CandyType.int)))
              ..returns = t
              ..body = dart.refer('value').index(dart.refer('index.value')).code),
            dart.Method((b) => b
              ..name = 'set'
  
negative.code:           dart.Method((b) => b
              ..name = 'generate'
              ..static = true
              ..types.add(item)
              ..returns = arrayItem
              ..requiredParameters.addAll([
                dart.Parameter((b) => b
                  ..name = 'length'
  