public IBlock Write(BlockWritingContext context) { var type = context.Token.Accessor.OwnerType; var settings = context.Registry.SettingsFor(type); var name = settings.Collection(type, context.Token.Value); var collectionName = context.Registry.NameFor(new BlockToken(name)); IEnumerable <object> items = new object[0]; var rawValue = context.RawValue as IEnumerable; if (rawValue != null) { items = rawValue.Cast <object>(); } return(new CollectionBlock(collectionName) { Blocks = items .Select(value => { context.StartObject(value); var block = context.Writer.BlockFor(value, context, context.Token.Value); context.FinishObject(); return block; }) .ToList() }); }