void SwapBetweenFrames(GameObject pHome, GameObject pDest)
    {
        Ag.LogIntenseWord("SwapBetweenFrames  " + pHome.name + "   " + pDest.name);

        CuCell alien = pHome.CellCs();
        CuCell targt = pDest.CellCs();

        alien.Pstn.SwapCurposiAndSetTargetWith(targt.Pstn);

        FrameHome.RemoveCellWith(pHome.name, pDest);
        FrameDest.RemoveCellWith(pDest.name, pHome);

        Ag.Swap <int> (ref alien.mSortNum, ref targt.mSortNum);
        Ag.Swap <GameObject> (ref alien.mPrevGobj, ref targt.mPrevGobj);
        Ag.Swap <GameObject> (ref alien.mNextGobj, ref targt.mNextGobj);
    }
    //  _////////////////////////////////////////////////_    _///////////////////////_    _____  Switch  _____  Combination  _____
    public void InsertRemove(Vector3 pV)
    { // called from TouchUp ..
        if (FrameHome == null || FrameDest == null || Liaison == null)
        {
            SetNull();
            return;
        }

        Ag.LogIntenseWord("[ CuLiaison :: InsertRemove ] { 84 }  >>>  Frame HOme / Dest :: " + FrameHome.mName + " / " + FrameDest.mName);
        //Ag.LogDouble ("    Liaison >> " + Liaison.name + EmptyCellIdx.LogWith ("EmptyCellIdx")); // + " , " + FrameDest.mSwitchObj);

        string homeSelect = HomeSel != null ? HomeSel.name : " __ NULL __ ";
        string destSwitch = DestSwt != null ? DestSwt.name : " __ NULL __ ";

        Ag.LogDouble("     [ CuLiaison :: InsertRemove ] { 90 }  " + homeSelect.LogWith("Home Select") + destSwitch.LogWith("Dest Switch"));

        if (DestSwt == null)
        {
            FrameHome.RemoveCellWith(Liaison.name);
            FrameDest.AddCellAt(EmptyCellIdx, Liaison);
            SetNull();
            return;
        }
        "  >>>     ".HtLog();

        if (HomeSel == null)
        {
            SetNull();
            return;
        }

        SwapBetweenFrames(HomeSel, DestSwt);

        /*  if (FrameDest != null)
         *  FrameDest.LogPositions ();  // debug
         * if (FrameHome != null)
         *  FrameHome.LogPositions ();  // */
        SetNull();
    }
    //  _////////////////////////////////////////////////_    _///////////////////////_    _____  Switch  _____  Btw Frames  _____
    void LiaisonSwitch()
    { // Called from Mouse Up.   UITileManager :: AlienSwitchProcess
        //if (mAlien == null || mAlienTarget == null)            return;
        Ag.LogIntenseWord(" CuLiaison :: LiaisonSwitch ");

        CuCell     alien  = Liaison.CellCs();
        CuCell     targt  = FrameDest.mSwitchObj.CellCs();
        GameObject Target = FrameDest.mSwitchObj;

        if (!alien.SameKindOf(Target))
        {
            FrameHome = FrameDest = null;
            Liaison   = null;
            return;
        }

        switch ("SWAP")
        {
        case "SWAP":

            FrameHome.RemoveCellWith(Liaison.name, Target);
            FrameDest.RemoveCellWith(Target.name, Liaison);

            Ag.Swap <int> (ref alien.mSortNum, ref targt.mSortNum);
            Ag.Swap <GameObject> (ref alien.mPrevGobj, ref targt.mPrevGobj);
            Ag.Swap <GameObject> (ref alien.mNextGobj, ref targt.mNextGobj);

            alien.Pstn.SwapCurposiAndSetTargetWith(targt.Pstn);
            break;
            //case "INSERT":            //Target.CellCs ().InsertAt (mAlien);
        }

        FrameDest.ArrangeCells();
        FrameHome.ArrangeCells();

        FrameHome = FrameDest = null;
        Liaison   = null;
    }