public Cube MakeTurn(Cube inputState)
        {
            var result = new Cube(inputState.Dim);

            var keys = CubeAnalyzer.GetPossibilities(inputState);

            foreach (var key in keys)
            {
                var       value    = checker.Check(inputState, key);
                CellState newState = placeSpecifier.GetState(inputState.GetValue(key).Value, value);
                result.SetCell(newState, key);
            }

            return(result);
        }