AIMove onTestPuckFriction(AIHockeyist hockeyist) {
        AIManager manager = AIManager.getInstance();
        AIRectangle rink = manager.getRink();
        int currentTick = manager.getCurrentTick();
        AIPuck puck = manager.getPuck();

        AIMove move = new AIMove();
        if (manager.isPuckOwner(hockeyist)) {
            if (hockeyist.distanceTo(rink.origin) < 3 * AIHockeyist.RADIUS) {
                if (hockeyist.getSpeedScalar() < 0.04) {
                    AIPoint target = new AIPoint(rink.getRight(), hockeyist.getY());
                    // AIPoint.sum(rink.origin, rink.size)
                    double angle = hockeyist.angleTo(target);
                    if (abs(angle) < 0.01) {
                        //move.setAction(ActionType.STRIKE);
                        if (hockeyist.getLastAction() == ActionType.SWING &&
                                currentTick - hockeyist.getLastActionTick() > 11) {
                            move.setAction(ActionType.STRIKE);
                        } else {
                            move.setAction(ActionType.SWING);
                        }
                    } else {
                        move.setTurn(angle);
                    }
                } else {
                    move.setSpeedUp(0);
                }
            } else {
                move = AIGo.to(hockeyist, rink.origin);
            }
        } else {
            if (puck.getSpeedScalar() > 1) return new AIMove();
            move = AIGo.to(hockeyist, puck.getLocation());
            if (hockeyist.isInStickRange(puck)) {
                move.setAction(ActionType.TAKE_PUCK);
            }
        }
        return move;
    }