{
    "id": "FM_Arcade_Game",
    "name": "FM_Arcade_Game",
    "features": {
        "Animation_Loop": {
            "name": "Animation_Loop",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Arcade_Game": {
            "name": "Arcade_Game",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "Board": {
            "name": "Board",
            "optional": false,
            "type": "OR",
            "note": ""
        },
        "Class_Diagram": {
            "name": "Class_Diagram",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Exit_Game": {
            "name": "Exit_Game",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Game_Menu": {
            "name": "Game_Menu",
            "optional": false,
            "type": "OR",
            "note": ""
        },
        "Initialization": {
            "name": "Initialization",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Install_Game": {
            "name": "Install_Game",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "List_Game": {
            "name": "List_Game",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Menu": {
            "name": "Menu",
            "optional": false,
            "type": "OR",
            "note": ""
        },
        "Movable_Sprite": {
            "name": "Movable_Sprite",
            "optional": true,
            "type": "OR",
            "note": ""
        },
        "Paddle": {
            "name": "Paddle",
            "optional": true,
            "type": "OR",
            "note": ""
        },
        "Play_Game": {
            "name": "Play_Game",
            "optional": false,
            "type": "OR",
            "note": ""
        },
        "Point": {
            "name": "Point",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Rectangle": {
            "name": "Rectangle",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Save_Game": {
            "name": "Save_Game",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Size": {
            "name": "Size",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Stationary_Sprite": {
            "name": "Stationary_Sprite",
            "optional": true,
            "type": "OR",
            "note": ""
        },
        "Uninstall_Game": {
            "name": "Uninstall_Game",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Use_Cases": {
            "name": "Use_Cases",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Velocity": {
            "name": "Velocity",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "Wall": {
            "name": "Wall",
            "optional": true,
            "type": "OR",
            "note": ""
        },
        "alley_bowling": {
            "name": "alley_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "ball_bowling": {
            "name": "ball_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "board_bowling": {
            "name": "board_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "board_brickles": {
            "name": "board_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "board_pong": {
            "name": "board_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "bottom_paddle_pong": {
            "name": "bottom_paddle_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "bowling_game_menu": {
            "name": "bowling_game_menu",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "brick_brickles": {
            "name": "brick_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "brick_pile_brickles": {
            "name": "brick_pile_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "brickles_game_menu": {
            "name": "brickles_game_menu",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "ceiling_brickles": {
            "name": "ceiling_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "ceiling_pong": {
            "name": "ceiling_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "check_previous_best_score": {
            "name": "check_previous_best_score",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "dividing_line_pong": {
            "name": "dividing_line_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "edge_bowling": {
            "name": "edge_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "floor_brickles": {
            "name": "floor_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "floor_pong": {
            "name": "floor_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "game_sprite": {
            "name": "game_sprite",
            "optional": false,
            "type": "OR",
            "note": ""
        },
        "gutter_bowling": {
            "name": "gutter_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "lane_bowling": {
            "name": "lane_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "left_brickles": {
            "name": "left_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "left_wall_pong": {
            "name": "left_wall_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "menu_bowling": {
            "name": "menu_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "menu_brickles": {
            "name": "menu_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "menu_pong": {
            "name": "menu_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "pin_bowling": {
            "name": "pin_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "play_bowling": {
            "name": "play_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "play_brickles": {
            "name": "play_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "play_pong": {
            "name": "play_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "pong_game_menu": {
            "name": "pong_game_menu",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "puck_core_assets": {
            "name": "puck_core_assets",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "puck_supply_brickles": {
            "name": "puck_supply_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "rack_pins_bowling": {
            "name": "rack_pins_bowling",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "right_brickles": {
            "name": "right_brickles",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "right_wall_pong": {
            "name": "right_wall_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "save_score": {
            "name": "save_score",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "score_board_pong": {
            "name": "score_board_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sprite_pair": {
            "name": "sprite_pair",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "top_paddle_pong": {
            "name": "top_paddle_pong",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        }
    },
    "tree": {
        "id": "Arcade_Game",
        "children": [
            {
                "id": "Class_Diagram",
                "children": [
                    {
                        "id": "Board",
                        "children": [
                            {
                                "id": "board_bowling"
                            },
                            {
                                "id": "board_brickles"
                            },
                            {
                                "id": "board_pong"
                            }
                        ]
                    },
                    {
                        "id": "Game_Menu",
                        "children": [
                            {
                                "id": "bowling_game_menu"
                            },
                            {
                                "id": "brickles_game_menu"
                            },
                            {
                                "id": "pong_game_menu"
                            }
                        ]
                    },
                    {
                        "id": "Menu",
                        "children": [
                            {
                                "id": "menu_bowling"
                            },
                            {
                                "id": "menu_brickles"
                            },
                            {
                                "id": "menu_pong"
                            }
                        ]
                    },
                    {
                        "id": "game_sprite",
                        "children": [
                            {
                                "id": "Movable_Sprite",
                                "children": [
                                    {
                                        "id": "Paddle",
                                        "children": [
                                            {
                                                "id": "bottom_paddle_pong"
                                            },
                                            {
                                                "id": "top_paddle_pong"
                                            }
                                        ]
                                    },
                                    {
                                        "id": "Velocity"
                                    },
                                    {
                                        "id": "ball_bowling"
                                    },
                                    {
                                        "id": "pin_bowling"
                                    },
                                    {
                                        "id": "puck_core_assets"
                                    }
                                ]
                            },
                            {
                                "id": "Rectangle",
                                "children": [
                                    {
                                        "id": "Point"
                                    },
                                    {
                                        "id": "Size"
                                    }
                                ]
                            },
                            {
                                "id": "Stationary_Sprite",
                                "children": [
                                    {
                                        "id": "Wall",
                                        "children": [
                                            {
                                                "id": "left_brickles"
                                            },
                                            {
                                                "id": "left_wall_pong"
                                            },
                                            {
                                                "id": "right_brickles"
                                            },
                                            {
                                                "id": "right_wall_pong"
                                            }
                                        ]
                                    },
                                    {
                                        "id": "alley_bowling"
                                    },
                                    {
                                        "id": "brick_brickles"
                                    },
                                    {
                                        "id": "brick_pile_brickles"
                                    },
                                    {
                                        "id": "ceiling_brickles"
                                    },
                                    {
                                        "id": "ceiling_pong"
                                    },
                                    {
                                        "id": "dividing_line_pong"
                                    },
                                    {
                                        "id": "edge_bowling"
                                    },
                                    {
                                        "id": "floor_brickles"
                                    },
                                    {
                                        "id": "floor_pong"
                                    },
                                    {
                                        "id": "gutter_bowling"
                                    },
                                    {
                                        "id": "lane_bowling"
                                    },
                                    {
                                        "id": "rack_pins_bowling"
                                    },
                                    {
                                        "id": "score_board_pong"
                                    }
                                ]
                            },
                            {
                                "id": "sprite_pair"
                            }
                        ]
                    },
                    {
                        "id": "puck_supply_brickles"
                    }
                ]
            },
            {
                "id": "Use_Cases",
                "children": [
                    {
                        "id": "Exit_Game"
                    },
                    {
                        "id": "Install_Game"
                    },
                    {
                        "id": "List_Game"
                    },
                    {
                        "id": "Play_Game",
                        "children": [
                            {
                                "id": "Initialization",
                                "children": [
                                    {
                                        "id": "Animation_Loop"
                                    }
                                ]
                            },
                            {
                                "id": "play_bowling"
                            },
                            {
                                "id": "play_brickles"
                            },
                            {
                                "id": "play_pong"
                            }
                        ]
                    },
                    {
                        "id": "Save_Game"
                    },
                    {
                        "id": "Uninstall_Game"
                    },
                    {
                        "id": "check_previous_best_score"
                    },
                    {
                        "id": "save_score"
                    }
                ]
            }
        ]
    },
    "constraints": {
        "Constraint 0": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 1": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 2": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 3": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 4": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 5": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "play_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 6": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "top_paddle_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 7": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "bottom_paddle_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 8": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "left_wall_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 9": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "right_wall_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 10": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "score_board_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 11": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "floor_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 12": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "ceiling_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 13": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "dividing_line_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 14": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "board_pong"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 15": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "pong_game_menu"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_pong"
                    ]
                }
            ]
        },
        "Constraint 16": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "board_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 17": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "ball_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 18": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "pin_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 19": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "lane_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 20": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "gutter_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 21": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "edge_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 22": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "alley_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 23": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "rack_pins_bowling"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 24": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "bowling_game_menu"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_bowling"
                    ]
                }
            ]
        },
        "Constraint 25": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "brickles_game_menu"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 26": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "board_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 27": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "left_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 28": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "right_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 29": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "brick_pile_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 30": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "brick_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 31": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "ceiling_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 32": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "floor_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        },
        "Constraint 33": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "puck_supply_brickles"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "menu_brickles"
                    ]
                }
            ]
        }
    }
}