public void Do() { var metaInput = InputParent.GetMetaInput(InputToPublish); var newMetaInput = metaInput.Clone(); newMetaInput.Name = _newName; var addInputCommand = new AddInputCommand(CompositionOperator, newMetaInput); addInputCommand.Do(); var opPartToUpdate = CompositionOperator.Inputs[CompositionOperator.Inputs.Count - 1]; var func = InputToPublish.Func.Clone() as Utilities.ValueFunction; var updateFuncCommand = new UpdateOperatorPartValueFunctionCommand(opPartToUpdate, func.Value); updateFuncCommand.Do(); var connection = new MetaConnection(Guid.Empty, newMetaInput.ID, InputToPublish.Parent.ID, metaInput.ID); var insertConnectionCommand = new InsertConnectionCommand(CompositionOperator.Definition, connection, 0); insertConnectionCommand.Do(); _commands.Clear(); _commands.AddRange(new ICommand[] { addInputCommand, updateFuncCommand, insertConnectionCommand }); }