/// <summary>
        /// Imports the corresponding asset.
        /// </summary>
        public override void Import()
        {
            // Create expression data.
            var expressionData = CubismExpressionData.CreateInstance(ExpressionJson);

            AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset"));

            // Add expression data to expression list.
            var directoryName      = Path.GetDirectoryName(AssetPath).ToString();
            var modelDir           = Path.GetDirectoryName(directoryName).ToString();
            var modelName          = Path.GetFileName(modelDir).ToString();
            var expressionListPath = Path.GetDirectoryName(directoryName).ToString() + "/" + modelName + ".expressionList.asset";
            var expressionList     = AssetDatabase.LoadAssetAtPath <CubismExpressionList>(expressionListPath);

            // Create expression list.
            if (expressionList == null)
            {
                expressionList = ScriptableObject.CreateInstance <CubismExpressionList>();
                expressionList.CubismExpressionObjects = new CubismExpressionData[0];
                AssetDatabase.CreateAsset(expressionList, expressionListPath);
            }

            var instanceId  = expressionData.GetInstanceID();
            var motionIndex = Array.IndexOf(expressionList.CubismExpressionObjects, instanceId);

            if (motionIndex != -1)
            {
                expressionList.CubismExpressionObjects[motionIndex] = expressionData;
            }
            else
            {
                motionIndex = expressionList.CubismExpressionObjects.Length;
                Array.Resize(ref expressionList.CubismExpressionObjects, motionIndex + 1);
                expressionList.CubismExpressionObjects[motionIndex] = expressionData;
            }

            EditorUtility.SetDirty(expressionList);
        }
        /// <summary>
        /// Imports the corresponding asset.
        /// </summary>
        public override void Import()
        {
            var oldExpressionData = AssetDatabase.LoadAssetAtPath <CubismExpressionData>(AssetPath.Replace(".exp3.json", ".exp3.asset"));

            // Create expression data.
            CubismExpressionData expressionData;

            if (oldExpressionData == null)
            {
                expressionData = CubismExpressionData.CreateInstance(ExpressionJson);
                AssetDatabase.CreateAsset(expressionData, AssetPath.Replace(".exp3.json", ".exp3.asset"));
            }
            else
            {
                expressionData = CubismExpressionData.CreateInstance(oldExpressionData, ExpressionJson);
                EditorUtility.CopySerialized(expressionData, oldExpressionData);
                expressionData = oldExpressionData;
            }

            EditorUtility.SetDirty(expressionData);

            // Add expression data to expression list.
            var directoryName      = Path.GetDirectoryName(AssetPath).ToString();
            var modelDir           = Path.GetDirectoryName(directoryName).ToString();
            var modelName          = Path.GetFileName(modelDir).ToString();
            var expressionListPath = Path.GetDirectoryName(directoryName).ToString() + "/" + modelName + ".expressionList.asset";
            var expressionList     = AssetDatabase.LoadAssetAtPath <CubismExpressionList>(expressionListPath);

            // Create expression list.
            if (expressionList == null)
            {
                expressionList = ScriptableObject.CreateInstance <CubismExpressionList>();
                expressionList.CubismExpressionObjects = new CubismExpressionData[0];
                AssetDatabase.CreateAsset(expressionList, expressionListPath);
            }

            // Finde index.
            var expressionName  = Path.GetFileName(AssetPath).Replace(".json", "");
            var expressionIndex = -1;

            for (var i = 0; i < expressionList.CubismExpressionObjects.Length; ++i)
            {
                var expression = expressionList.CubismExpressionObjects[i];

                if (expression == null || expression.name != expressionName)
                {
                    continue;
                }

                expressionIndex = i;
                break;
            }

            // Set expression data.
            if (expressionIndex != -1)
            {
                expressionList.CubismExpressionObjects[expressionIndex] = expressionData;
            }
            else
            {
                expressionIndex = expressionList.CubismExpressionObjects.Length;
                Array.Resize(ref expressionList.CubismExpressionObjects, expressionIndex + 1);
                expressionList.CubismExpressionObjects[expressionIndex] = expressionData;
            }

            EditorUtility.SetDirty(expressionList);
        }