/// <summary>
        /// Helper method to serialize list contents.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        /// <param name="msg"></param>
        /// <param name="serializer"></param>
        /// <param name="kind"></param>
        /// <param name="ordinal"></param>
        protected static void SerializeList <T>(IEnumerable <T> list, IAppendingFudgeFieldContainer msg, IFudgeSerializer serializer, TypeData.TypeKind kind, int?ordinal)
        {
            switch (kind)
            {
            case TypeData.TypeKind.FudgePrimitive:
            case TypeData.TypeKind.Reference:
                msg.AddAll(null, ordinal, list);
                break;

            case TypeData.TypeKind.Inline:
                serializer.WriteAllInline(msg, null, ordinal, list);
                break;
            }
        }
        /// <summary>
        /// Helper method to deserialize an individual field.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="field"></param>
        /// <param name="deserializer"></param>
        /// <param name="kind"></param>
        /// <returns></returns>
        protected T DeserializeField <T>(IFudgeField field, IFudgeDeserializer deserializer, TypeData.TypeKind kind) where T : class
        {
            switch (kind)
            {
            case TypeData.TypeKind.FudgePrimitive:
                return((T)context.TypeHandler.ConvertType(field.Value, typeof(T)));

            case TypeData.TypeKind.Inline:
            case TypeData.TypeKind.Reference:
                return(deserializer.FromField <T>(field));

            default:
                throw new FudgeRuntimeException("Unknown TypeData.TypeKind: " + kind);
            }
        }