override public void Exit(CellBehavior cell)
    {
        if (cell.GetType() == typeof(PointerController))
        {
            if (originalPointer != null && originalTarget != null)
            {
//      Debug.Log("exited with original Pointer");
                originalPointer.Target        = originalTarget;
                originalPointer.CurrentOffset = null;
                originalPointer = null;
                originalTarget  = null;
            }
        }
    }
    override public void Enter(CellBehavior cell)
    {
        if (cell.GetType() == typeof(PointerController))
        {
            GameObject pointer = player.GetOnPointer();
            if (pointer != null)
            {
                //      Debug.Log("entered while on Pointer");
                PointerController controller = pointer.GetComponent <PointerController>();
                CellBehavior      target     = controller.Target;
                // find the next object in the controller's array
                if (target != null && target.owningArray != null)
                {
                    originalTarget  = target;
                    originalPointer = controller;

                    originalPointer.CurrentOffset = this;


                    ReTarget();
                }
            }
        }
    }