private bool CanOptimizeAnimation(KeyFrameAnimationSceneNode nodeToTest)
        {
            TimelineSceneNode.PropertyNodePair elementAndProperty = nodeToTest.TargetElementAndProperty;
            if (elementAndProperty.PropertyReference == null || FromToAnimationSceneNode.GetFromToAnimationForType((ITypeId)elementAndProperty.PropertyReference.ValueTypeId, nodeToTest.ProjectContext) == null || (nodeToTest.KeyFrameCount != 1 || DesignTimeProperties.ExplicitAnimationProperty.Equals((object)elementAndProperty.PropertyReference[0])))
            {
                return(false);
            }
            KeyFrameSceneNode keyFrameAtIndex = nodeToTest.GetKeyFrameAtIndex(0);
            Duration?         nullable        = nodeToTest.GetLocalOrDefaultValueAsWpf(TimelineSceneNode.DurationProperty) as Duration?;
            bool flag = !nullable.HasValue || nullable.Value == Duration.Automatic || nullable.Value.HasTimeSpan && nullable.Value.TimeSpan.TotalSeconds == keyFrameAtIndex.Time;

            if (keyFrameAtIndex.InterpolationType != KeyFrameInterpolationType.Easing || !flag)
            {
                return(false);
            }
            foreach (IMemberId memberId in (IEnumerable <IProperty>)((DocumentCompositeNode)nodeToTest.DocumentNode).Properties.Keys)
            {
                switch (memberId.Name)
                {
                case "Duration":
                case "TargetName":
                case "TargetProperty":
                case "BeginTime":
                case "IsAnimationProxy":
                case "KeyFrames":
                case "ShouldSerialize":
                    continue;

                default:
                    return(false);
                }
            }
            return(true);
        }