void OurInnerRotate(TurnFromToOffsets whereToTurn, int rotationZ, GameObject turnSegment)
    {
        GameObject lastSegment = tail.Peek();

        transform.position = lastSegment.transform.position + whereToTurn.first;
        GameObject newSegment = Instantiate(turnSegment,
                                            new Vector3(transform.position.x, transform.position.y, segmentsZ),
                                            transform.rotation);

        segmentsZ -= 0.01f;
        transform.Rotate(0, 0, rotationZ);
        transform.position += whereToTurn.second;
        isReadyToTurn       = false;
        tail.Push(newSegment);
    }
 void RotateAntiClockwise(TurnFromToOffsets whereToTurn) => OurInnerRotate(whereToTurn, 90, leftTurnSegment);
 void RotateClockwise(TurnFromToOffsets whereToTurn) => OurInnerRotate(whereToTurn, -90, rightTurnSegment);