anchor.diff:            WriteFunc = getWriterFunc propInfo.PropertyType
             Default = Reflection.getDefaultValue propInfo.PropertyType }
   
  -    /// Writer function for IEnumerable
  -    and writeEnumerable (writer : TextWriter) (value : obj) =
  -        let collection : IEnumerable = unbox value
  -        let write func elem =
  -            let f =
  -                match func with
  -                | None ->
  -                    let writeFunc = getWriterFunc (elem.GetType())
  -                    Some <| writeTag writer "item" writeFunc
  -                | _ -> func
  -            f.Value elem
  -            f
  -        collection
  -        |> Seq.cast
  -        |> Seq.fold write None
  -        |> ignore
  -
       /// Try to determine a enumerable serialization function
       and getEnumerableWriter (t : Type) = fun () ->
  -        if t.HasInterface typeof<IEnumerable> ||
  -            t.IsAssignableFrom typeof<IEnumerable> then
  -            Some writeEnumerable
  -        else None
  +        match TypeHelper.getTypeWithGenericType t typedefof<IEnumerable<_>> with
  +        | Some enumerableType ->
  +            let elemType = enumerableType.GetGenericArguments().[0]
  +            let elemWriter = getWriterFunc elemType
  +            Some <| ListSerializer.getGenericEnumerableWriter elemWriter elemType
  +        | _ ->
  +            if t.HasInterface typeof<IEnumerable> ||
  +                t.IsAssignableFrom typeof<IEnumerable> then
  +                Some <| ListSerializer.writeEnumerable getWriterFunc
  +            else None
   
       /// Get the PropertyWriterInfo array for the given type
       and getProperties (t : Type) =
  
positive.code:         array
          |> Array.iter (fun elem -> writeTag writer "item" ValueTypeSerializer.writeStringObject elem)
  
  
  /// Serialization logic
  module Serializer =
  
negative.code:         | Some func ->
              (fun (w : TextWriter) x -> w.Write(func.Invoke(null, [| x |]))) |> Some
          | _ -> None
  
      /// Build a PropertyWriterInfo object based on the
      /// specified PropertyInfo
  