MovablePosition[] MakeLeftCorners()
 {
     MovablePosition[] leftCorners = new MovablePosition[4];
     for (int i = 0; i < 4; ++i)
     {
         leftCorners[i] = MovablePosition.Get(_clockwiseAdjacent[i], _face | _clockwiseAdjacent[(i + 3) % 4]);
     }
     return(leftCorners);
 }
 MovablePosition[] MakeRightCorners()
 {
     MovablePosition[] rightCorners = new MovablePosition[4];
     for (int i = 0; i < 4; ++i)
     {
         rightCorners[i] = MovablePosition.Get(_clockwiseAdjacent[i], _face | _clockwiseAdjacent[(i + 1) % 4]);
     }
     return(rightCorners);
 }
 MovablePosition[] MakeEdges()
 {
     MovablePosition[] edges = new MovablePosition[4];
     for (int i = 0; i < 4; ++i)
     {
         edges[i] = MovablePosition.Get(_clockwiseAdjacent[i], _face);
     }
     return(edges);
 }
 MovablePosition[] MakeFaceCorners()
 {
     MovablePosition[] faceCorners = new MovablePosition[4];
     for (int i = 0; i < 4; ++i)
     {
         faceCorners[i] = MovablePosition.Get(_face, _clockwiseAdjacent[i] | _clockwiseAdjacent[(i + 1) % 4]);
     }
     return(faceCorners);
 }
 MovablePosition[] MakeFaceEdges()
 {
     MovablePosition[] faceEdges = new MovablePosition[4];
     for (int i = 0; i < 4; ++i)
     {
         faceEdges[i] = MovablePosition.Get(_face, _clockwiseAdjacent[i]);
     }
     return(faceEdges);
 }