/// <summary>
        /// Creates new node for the value.
        /// </summary>
        /// <param name="permanentReference">Value, has to be valid.</param>
        /// <returns>New empty object node representing the value.</returns>
        private ObjectGraphNode createNewNode(Value permanentReference, GraphExpression expression)
        {
            if (permanentReference == null)
            {
                throw new ArgumentNullException("permanentReference");
            }

            ObjectGraphNode newNode = new ObjectGraphNode();

            if (permanentReference.Type != null)
            {
                newNode.TypeName = permanentReference.Type.FormatNameCSharp();
            }
            newNode.HashCode = permanentReference.InvokeDefaultGetHashCode();

            resultGraph.AddNode(newNode);
            // remember this node's hashcode for quick lookup
            objectNodesForHashCode.Add(newNode.HashCode, newNode);

            // permanent reference to the object this node represents is useful for graph building,
            // and matching nodes in animations
            newNode.PermanentReference = permanentReference;
            newNode.Expression         = expression;

            return(newNode);
        }
        /// <summary>
        /// Creates new node for the value.
        /// </summary>
        /// <param name="permanentReference">Value, has to be valid.</param>
        /// <returns>New empty object node representing the value.</returns>
        private ObjectGraphNode createNewNode(Value permanentReference, Expression expression)
        {
            ObjectGraphNode newNode = new ObjectGraphNode();

            newNode.HashCode = permanentReference.InvokeDefaultGetHashCode();

            resultGraph.AddNode(newNode);
            // remember this node's hashcode for quick lookup
            objectNodesForHashCode.Add(newNode.HashCode, newNode);

            // permanent reference to the object this node represents is useful for graph building,
            // and matching nodes in animations
            newNode.PermanentReference = permanentReference;
            newNode.Expression         = expression;

            return(newNode);
        }