private void Process(List <object> l, List <RelativeMeasurements> rm, IPosition position,
                             List <object> ladd, int priority, string reason)
        {
            Action <object> act = (object obj) => { };

            if (position == null)
            {
                return;
            }
            IDataConsumer c = position.GetLabelObject <IDataConsumer>();

            if (c != null)
            {
                if (c is IAssociatedObject)
                {
                    IAssociatedObject ao = c as IAssociatedObject;
                    object            o  = ao.Object;
                    if (!ladd.Contains(o))
                    {
                        ladd.Add(o);
                    }
                }
                CreateDataConsumerCollection(c, ladd, act, priority, reason);
            }
            Process(l, rm, position.Parent, ladd, priority, reason);
        }