def __print_all_solutions(self, solution):
    print('Inverse Solutions:')
    if solution.solution_shoulder_left.is_valid_solution:
        if solution.solution_shoulder_left.solution_wrist_up.is_valid_solution:
            if solution.solution_shoulder_left.solution_wrist_up.solution_elbow_up.is_valid_solution:
                print(f'Shoulder left, wrist up, elbow up: {solution.solution_shoulder_left.solution_wrist_up.solution_elbow_up.thetas}')
            if solution.solution_shoulder_left.solution_wrist_up.solution_elbow_down.is_valid_solution:
                print(f'Shoulder left, wrist up, elbow down: {solution.solution_shoulder_left.solution_wrist_up.solution_elbow_down.thetas}')
        if solution.solution_shoulder_left.solution_wrist_down.is_valid_solution:
            if solution.solution_shoulder_left.solution_wrist_down.solution_elbow_up.is_valid_solution:
                print(f'Shoulder left, wrist down, elbow up: {solution.solution_shoulder_left.solution_wrist_down.solution_elbow_up.thetas}')
            if solution.solution_shoulder_left.solution_wrist_down.solution_elbow_down:
                print(f'Shoulder left, wrist down, elbow down: {solution.solution_shoulder_left.solution_wrist_down.solution_elbow_down.thetas}')
    if solution.solution_shoulder_right.is_valid_solution:
        if solution.solution_shoulder_right.solution_wrist_up.is_valid_solution:
            if solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.is_valid_solution:
                print(f'Shoulder right, wrist up, elbow up: {solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.thetas}')
            if solution.solution_shoulder_right.solution_wrist_up.solution_elbow_down.is_valid_solution:
                print(f'Shoulder right, wrist up, elbow down: {solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.thetas}')
        if solution.solution_shoulder_right.solution_wrist_down.is_valid_solution:
            if solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.is_valid_solution:
                print(f'Shoulder right, wrist down, elbow up: {solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.thetas}')
            if solution.solution_shoulder_right.solution_wrist_down.solution_elbow_down.is_valid_solution:
                print(f'Shoulder right, wrist down, elbow down: {solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.thetas}')
def __print_all_solutions(self, solution):
    print('Inverse Solutions:')
    if solution.solution_shoulder_left.is_valid_solution:
        if solution.solution_shoulder_left.solution_wrist_up.is_valid_solution:
            if solution.solution_shoulder_left.solution_wrist_up.solution_elbow_up.is_valid_solution:
                print(f'Shoulder left, wrist up, elbow up: {solution.solution_shoulder_left.solution_wrist_up.solution_elbow_up.thetas}')
            if solution.solution_shoulder_left.solution_wrist_up.solution_elbow_down.is_valid_solution:
                print(f'Shoulder left, wrist up, elbow down: {solution.solution_shoulder_left.solution_wrist_up.solution_elbow_down.thetas}')
        if solution.solution_shoulder_left.solution_wrist_down.is_valid_solution:
            if solution.solution_shoulder_left.solution_wrist_down.solution_elbow_up.is_valid_solution:
                print(f'Shoulder left, wrist down, elbow up: {solution.solution_shoulder_left.solution_wrist_down.solution_elbow_up.thetas}')
            if solution.solution_shoulder_left.solution_wrist_down.solution_elbow_down:
                print(f'Shoulder left, wrist down, elbow down: {solution.solution_shoulder_left.solution_wrist_down.solution_elbow_down.thetas}')
    if solution.solution_shoulder_right.is_valid_solution:
        if solution.solution_shoulder_right.solution_wrist_up.is_valid_solution:
            if solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.is_valid_solution:
                print(f'Shoulder right, wrist up, elbow up: {solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.thetas}')
            if solution.solution_shoulder_right.solution_wrist_up.solution_elbow_down.is_valid_solution:
                print(f'Shoulder right, wrist up, elbow down: {solution.solution_shoulder_right.solution_wrist_up.solution_elbow_up.thetas}')
        if solution.solution_shoulder_right.solution_wrist_down.is_valid_solution:
            if solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.is_valid_solution:
                print(f'Shoulder right, wrist down, elbow up: {solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.thetas}')
            if solution.solution_shoulder_right.solution_wrist_down.solution_elbow_down.is_valid_solution:
                print(f'Shoulder right, wrist down, elbow down: {solution.solution_shoulder_right.solution_wrist_down.solution_elbow_up.thetas}')