<feature_model name="Graph">
<feature_tree>
:r graph
	:m services
		:m graph_manipulation (graph_manipulation)
			:m delete
			:m select
				:m selection_mode
					:g [1,1]
						: increment_selection
						: non_increment_selection
			:m add
				:m entity_add
				:m connector_add
			:m move
				:m moving_mode
					:g [1,1]
						: outline_moving
						: content_moving
				:o moving_constraint
					:g [1,1]
						: horizontal_constraint
						: vertical_constraint
			:o compose (compose)
			:o layer_adjust (layer_adjust)
				:m up_layer
				:m down_layer
		:o do_undo_redo (do_undo_redo)
			:m select_do_undo_redo
			:m add_do_undo_redo
			:m delete _do_undo_redo
			:m move_do_undo_redo
			:o compose_do_undo_redo (compose_do_undo_redo)
			:o layer_adjust_do_undo_redo (layer_adjust_do_undo_redo)
		:o zoom_inout (zoom_inout)
</feature_tree>
<constraints>
c1a: (~do_undo_redo) or graph_manipulation
c1b: (~zoom_inout) or graph_manipulation
c2a: (~compose) or (~do_undo_redo) or compose_do_undo_redo
c2b: (~compose_do_undo_redo) or compose
c2c: (~compose_do_undo_redo) or do_undo_redo
c3a: (~layer_adjust) or (~do_undo_redo) or layer_adjust_do_undo_redo
c3b: (~layer_adjust_do_undo_redo) or do_undo_redo
c3c: (~layer_adjust_do_undo_redo) or layer_adjust
</constraints>
</feature_model>


