private static void ComputeJointTargets(System.Collections.Concurrent.ConcurrentBag <TargetOrderPair> bag, int i,
                                                List <List <double> > angles, List <Speed> speeds, List <Zone> zones, List <Tool> tools,
                                                List <double> eRotVals, List <double> eLinVals)
        {
            TargetOrderPair result = new TargetOrderPair();

            // Create the robot target.
            result.Value = new ABBTarget(angles[i], speeds.InfinitElementAt(i), zones.InfinitElementAt(i),
                                         tools.InfinitElementAt(i), eRotVals.InfinitElementAt(i), eLinVals.InfinitElementAt(i));
            result.Order = i;

            bag.Add(result);
        }
        private static void ComputeTargets(System.Collections.Concurrent.ConcurrentBag <TargetOrderPair> bag, int i,
                                           List <Plane> planes, List <Speed> speeds, List <Zone> zones, List <Tool> tools, List <CSystem> wobjs,
                                           List <double> eRotVals, List <double> eLinVals, List <int> methods)
        {
            TargetOrderPair result = new TargetOrderPair();

            // Create the robot target.
            result.Value = new ABBTarget(planes[i], (MotionType)methods.InfinitElementAt(i), speeds.InfinitElementAt(i), zones.InfinitElementAt(i),
                                         tools.InfinitElementAt(i), wobjs.InfinitElementAt(i), eRotVals.InfinitElementAt(i), eLinVals.InfinitElementAt(i));
            result.Order = i;

            bag.Add(result);
        }