/// <summary>
        /// Creates a property path view-model.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <param name="process">
        /// The process.
        /// </param>
        /// <returns>
        /// The <see cref="IPropertyPathViewModel"/>.
        /// </returns>
        public IPropertyPathViewModel CreateViewModel(PropertyPathEdit model, ProcessEdit process)
        {
            var viewModel = MefFactory.CreateExport().Value;
            viewModel.Initialize(model, process);

            return viewModel;
        }
        /// <summary>
        /// Initializes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="process">The process.</param>
        public void Initialize(PropertyPathEdit model, ProcessEdit process)
        {
            Model = model;
            Process = process;
            _fieldName = Model.FieldName;

            var sortedFields = Model.Subfields.OrderBy(f => f.Index).ToArray();

            foreach (var field in sortedFields)
            {
                var vm = FieldViewModelFactory.CreateExport().Value;
                vm.Initialize(field, this);
                Subfields.Add(vm);
            }

            for (var i = 0; i < Subfields.Count - 1; ++i)
            {
                Subfields[i].Subfield = Subfields[i + 1];
            }

            _hasSubfield = Subfields.Count > 0;

            UpdateAvailableFields();
        }