List <UnityObjectReference> GetValueInternal(object container, SerializationMetadata metadata)
        {
            var value = m_MemberInfo.GetValue(container);

            if (value == null)
            {
                return(null);
            }

            // Use typeless IList cast to support reflected private element types
            if (!(value is IList list))
            {
                return(null);
            }

            var result = new List <UnityObjectReference>(list.Count);

            foreach (var element in list)
            {
                if (!(element is UnityObject unityObject))
                {
                    result.Add(UnityObjectReference.NullObjectReference);
                    continue;
                }

                result.Add(UnityObjectReference.GetReferenceForObject(unityObject, metadata));
            }

            return(result);
        }