{
    "id": "FM_graph",
    "name": "FM_graph",
    "features": {
        "add": {
            "name": "add",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "add_do_undo_redo": {
            "name": "add_do_undo_redo",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "compose": {
            "name": "compose",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "compose_do_undo_redo": {
            "name": "compose_do_undo_redo",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "connector_add": {
            "name": "connector_add",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "content_moving": {
            "name": "content_moving",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "delete": {
            "name": "delete",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "delete__do_undo_redo": {
            "name": "delete__do_undo_redo",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "do_undo_redo": {
            "name": "do_undo_redo",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "down_layer": {
            "name": "down_layer",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "entity_add": {
            "name": "entity_add",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "graph": {
            "name": "graph",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "graph_manipulation": {
            "name": "graph_manipulation",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "horizontal_constraint": {
            "name": "horizontal_constraint",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "increment_selection": {
            "name": "increment_selection",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "layer_adjust": {
            "name": "layer_adjust",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "layer_adjust_do_undo_redo": {
            "name": "layer_adjust_do_undo_redo",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "move": {
            "name": "move",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "move_do_undo_redo": {
            "name": "move_do_undo_redo",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "moving_constraint": {
            "name": "moving_constraint",
            "optional": true,
            "type": "XOR",
            "note": ""
        },
        "moving_mode": {
            "name": "moving_mode",
            "optional": false,
            "type": "XOR",
            "note": ""
        },
        "non_increment_selection": {
            "name": "non_increment_selection",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "outline_moving": {
            "name": "outline_moving",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "select": {
            "name": "select",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "select_do_undo_redo": {
            "name": "select_do_undo_redo",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "selection_mode": {
            "name": "selection_mode",
            "optional": false,
            "type": "XOR",
            "note": ""
        },
        "services": {
            "name": "services",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "up_layer": {
            "name": "up_layer",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "vertical_constraint": {
            "name": "vertical_constraint",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "zoom_inout": {
            "name": "zoom_inout",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        }
    },
    "tree": {
        "id": "graph",
        "children": [
            {
                "id": "services",
                "children": [
                    {
                        "id": "do_undo_redo",
                        "children": [
                            {
                                "id": "add_do_undo_redo"
                            },
                            {
                                "id": "compose_do_undo_redo"
                            },
                            {
                                "id": "delete__do_undo_redo"
                            },
                            {
                                "id": "layer_adjust_do_undo_redo"
                            },
                            {
                                "id": "move_do_undo_redo"
                            },
                            {
                                "id": "select_do_undo_redo"
                            }
                        ]
                    },
                    {
                        "id": "graph_manipulation",
                        "children": [
                            {
                                "id": "add",
                                "children": [
                                    {
                                        "id": "connector_add"
                                    },
                                    {
                                        "id": "entity_add"
                                    }
                                ]
                            },
                            {
                                "id": "compose"
                            },
                            {
                                "id": "delete"
                            },
                            {
                                "id": "layer_adjust",
                                "children": [
                                    {
                                        "id": "down_layer"
                                    },
                                    {
                                        "id": "up_layer"
                                    }
                                ]
                            },
                            {
                                "id": "move",
                                "children": [
                                    {
                                        "id": "moving_constraint",
                                        "children": [
                                            {
                                                "id": "horizontal_constraint"
                                            },
                                            {
                                                "id": "vertical_constraint"
                                            }
                                        ]
                                    },
                                    {
                                        "id": "moving_mode",
                                        "children": [
                                            {
                                                "id": "content_moving"
                                            },
                                            {
                                                "id": "outline_moving"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "select",
                                "children": [
                                    {
                                        "id": "selection_mode",
                                        "children": [
                                            {
                                                "id": "increment_selection"
                                            },
                                            {
                                                "id": "non_increment_selection"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "zoom_inout"
                    }
                ]
            }
        ]
    },
    "constraints": {
        "Constraint 0": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "do_undo_redo"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "graph_manipulation"
                    ]
                }
            ]
        },
        "Constraint 1": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "zoom_inout"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "graph_manipulation"
                    ]
                }
            ]
        },
        "Constraint 2": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "compose"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "compose_do_undo_redo"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 3": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "compose_do_undo_redo"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "compose"
                    ]
                }
            ]
        },
        "Constraint 4": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "compose_do_undo_redo"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "do_undo_redo"
                    ]
                }
            ]
        },
        "Constraint 5": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "layer_adjust"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "layer_adjust_do_undo_redo"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 6": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "layer_adjust_do_undo_redo"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "do_undo_redo"
                    ]
                }
            ]
        },
        "Constraint 7": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "layer_adjust_do_undo_redo"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "layer_adjust"
                    ]
                }
            ]
        }
    }
}