public void _method_Compose(Instance batch)
        {
            Edits.Remove(ComposeEdit.Get());

            ReportChildAdd(1, "Composition batch");
            DirectChildren.Value.Add(batch);

            AsyncCall <Instance[]>(batch, "get_PartsToRemove", (toRemove) =>
            {
                AsyncCall <Instance[]>(batch, "get_PartsToAdd", (toAdd) =>
                {
                    composeWithCatalog(toAdd, toRemove);
                });
            });
        }
        /// <summary>
        /// Runtime member definition.
        /// </summary>
        /// <param name="constructedParts">The constructed parts.</param>
        public void _method_ComposeParts(params Instance[] constructedParts)
        {
            //there is already compose part call
            Edits.Remove(ComposeEdit.Get());
            //so we will accept components to this call
            var e = Edits;

            AppendArg(constructedParts.Length + 1, UserInteraction.AcceptEditName, (v) => acceptAppendComponent(e, v));

            DirectChildren.Value.AddRange(constructedParts);
            for (int i = 0; i < constructedParts.Length; ++i)
            {
                ReportParamChildAdd(i, constructedParts[i], "Composed part", true);
            }

            composeWithCatalog(constructedParts);
        }