private ChangeInstruction(Point3D add_Position, Vector3D add_Velocity, Vector3D add_AngVel, AsteroidDNA asteroid, MineralDNA mineral, Asteroid[] remove_Asteroids, Mineral[] remove_Minerals)
            {
                this.InstructionType = MapPopulationManager.InstructionType.Merge;

                this.Add_Position = add_Position;
                this.Add_Velocity = add_Velocity;
                this.Add_AngVel = add_AngVel;

                this.Asteroid = asteroid;
                this.Mineral = mineral;

                this.Remove_Asteroids = remove_Asteroids;
                this.Remove_Minerals = remove_Minerals;
            }
 // Add
 public ChangeInstruction(Point3D add_Position, Vector3D add_Velocity, Vector3D add_AngVel, AsteroidDNA asteroid)
     : this(add_Position, add_Velocity, add_AngVel, asteroid, (MineralDNA)null) { }
 // Merge
 public ChangeInstruction(Point3D add_Position, Vector3D add_Velocity, Vector3D add_AngVel, AsteroidDNA asteroid, Asteroid[] remove_Asteroids)
     : this(add_Position, add_Velocity, add_AngVel, asteroid, null, remove_Asteroids, null) { }
        /// <summary>
        /// This creates random size in random location
        /// TODO: Look at existing sizes more carefully to see what size to create
        /// TODO: Don't create something near the player - take a list of spheres to avoid (or maybe cubes)
        /// TODO: Have certain features of the map be sources - maybe a couple hidden moving sources that slowly move around the edge of the map
        /// TODO: When creating asteroids, create a small stream of them
        /// </summary>
        private static ChangeInstruction[] ExamineAsteroids_Add1(int count, Boundry boundry)
        {
            ChangeInstruction[] retVal = new ChangeInstruction[count];

            for (int cntr = 0; cntr < count; cntr++)
            {
                //asteroidSize = 4 + (rand.NextDouble() * 6);       // medium
                //asteroidSize = 9 + (rand.NextDouble() * 10);      // large
                double asteroidSize = 4 + StaticRandom.NextDouble(16);

                Point3D position = Math3D.GetRandomVector(boundry.Outer_Min, boundry.Outer_Max, boundry.Inner_Min, boundry.Inner_Max).ToPoint();

                Vector3D velocity = Math3D.GetRandomVector_Circular(6d);
                Vector3D angVel = Math3D.GetRandomVector_Spherical(1d);

                AsteroidDNA asteroid = new AsteroidDNA()
                {
                    PartType = Asteroid.PARTTYPE,
                    Radius = asteroidSize,
                    Position = position,        //NOTE: These are duplication and aren't used, but storing them anyway
                    Velocity = velocity,
                    AngularVelocity = angVel,
                };

                retVal[cntr] = new ChangeInstruction(position, velocity, angVel, asteroid);
            }

            return retVal;
        }