public ManipulationPlan EstimatePlan(Port port)
        {
            ITransformationTheorem trans;
            GroupCollection        groups;

            if (_transformations.TryLookupBest(null, port, out trans, out groups))
            {
                if (_configure != null)
                {
                    _configure(trans);
                }
                return(trans.EstimatePlan(port, groups));
            }
            else
            {
                return(ManipulationPlan.CloneIfChildsAltered);
            }
        }