/// <summary>
        /// Data constructor: Creates a Robot Tool Goo instance from another Robot Tool Goo instance.
        /// This creates a shallow copy of the passed Robot Tool Goo instance.
        /// </summary>
        /// <param name="robotToolGoo"> Robot Tool Goo instance to copy. </param>
        public GH_RobotTool(GH_RobotTool robotToolGoo)
        {
            if (robotToolGoo == null)
            {
                robotToolGoo = new GH_RobotTool();
            }

            this.Value = robotToolGoo.Value;
        }
        /// <summary>
        /// Transforms the object or a deformable representation of the object.
        /// </summary>
        /// <param name="xform"> Transformation matrix. </param>
        /// <returns> Transformed geometry. If the local geometry can be transformed accurately,
        /// then the returned instance equals this instance. Not all geometry types can be accurately
        /// transformed under all circumstances though, if this is the case, this function will
        /// return an instance of another IGH_GeometricGoo derived type which can be transformed.</returns>
        public override IGH_GeometricGoo Transform(Transform xform)
        {
            if (Value == null)
            {
                return(null);
            }

            else if (Value.IsValid == false)
            {
                return(null);
            }

            else
            {
                // Duplicate value
                RobotTool robotTool = Value.Duplicate();
                // Transform
                robotTool.Transform(xform);
                // Make new Goo instance
                GH_RobotTool robotToolGoo = new GH_RobotTool(robotTool);
                // Return
                return(robotToolGoo);
            }
        }