digraph model {
Itself__Application [shape=box label="Itself::Application\n- model (leaf)\n- synopsis (leaf)\n- link_to_doc (leaf)\n- category (leaf)\n- allow_config_file_override (leaf)\n- require_config_file (leaf)\n- require_backend_argument (leaf)\n- use_backend_argument_as_config_file (leaf)\n- backend_argument_info (leaf)\n- config_dir (leaf)\n- support_info (leaf)\n"];

Itself__CargoElement [shape=box label="Itself::CargoElement\n- type (leaf)\n- warp (warped_node)\n"];
Itself__CargoElement -> Itself__WarpValue [ style=dashed, label="warp" ];

Itself__CargoElement -> Itself__NonWarpableElement ;
Itself__CargoElement -> Itself__WarpableCargoElement ;
Itself__Class [shape=box label="Itself::Class\n- class_description (leaf)\n- license (leaf)\n- gist (leaf)\n- author (list of leaf)\n- copyright (list of leaf)\n- class (leaf)\n- element (hash of node)\n- include (list of leaf)\n- include_backend (list of leaf)\n- include_after (leaf)\n- generated_by (leaf)\n- rw_config (node)\n- accept (hash of node)\n"];
Itself__Class -> Itself__Element [ style=dashed, label="element" ];
Itself__Class -> Itself__ConfigReadWrite [ style=dashed, label="rw_config" ];
Itself__Class -> Itself__ConfigAccept [ style=dashed, label="accept" ];

Itself__CommonElement [shape=box label="Itself::CommonElement\n- mandatory (leaf)\n- config_class_name (leaf)\n- choice (list of leaf)\n- min (leaf)\n- max (leaf)\n- min_index (leaf)\n- max_index (leaf)\n- default (leaf)\n- upstream_default (leaf)\n- convert (leaf)\n- match (leaf)\n- assert (hash of node)\n- warn_if (hash of node)\n- warn_unless (hash of node)\n- warn_if_match (hash of node)\n- warn_unless_match (hash of node)\n- warn (leaf)\n- grammar (leaf)\n- default_list (check_list)\n- upstream_default_list (check_list)\n"];
Itself__CommonElement -> Itself__CommonElement__Assert [ style=dashed, label="assert" ];
Itself__CommonElement -> Itself__CommonElement__Assert [ style=dashed, label="warn_if" ];
Itself__CommonElement -> Itself__CommonElement__Assert [ style=dashed, label="warn_unless" ];
Itself__CommonElement -> Itself__CommonElement__WarnIfMatch [ style=dashed, label="warn_if_match" ];
Itself__CommonElement -> Itself__CommonElement__WarnIfMatch [ style=dashed, label="warn_unless_match" ];

Itself__CommonElement__Assert [shape=box label="Itself::CommonElement::Assert\n- code (leaf)\n"];

Itself__CommonElement__Assert -> Itself__CommonElement__WarnIfMatch ;
Itself__CommonElement__WarnIfMatch [shape=box label="Itself::CommonElement::WarnIfMatch\n- msg (leaf)\n- fix (leaf)\n"];

Itself__ComputedValue [shape=box label="Itself::ComputedValue\n- allow_override (leaf)\n- use_as_upstream_default (leaf)\n"];

Itself__ComputedValue -> Itself__MigratedValue ;
Itself__ConfigAccept [shape=box label="Itself::ConfigAccept\n- name_match (leaf)\n- accept_after (leaf)\n"];

Itself__ConfigAccept -> Itself__Element ;
Itself__ConfigReadWrite [shape=box label="Itself::ConfigReadWrite\n- backend (leaf)\n- function (leaf)\n- auto_create (leaf)\n- yaml_class (leaf)\n- file_mode (leaf)\n- default_layer (node)\n- class (leaf)\n- store_class_in_hash (leaf)\n- section_map (hash of leaf)\n- split_list_value (leaf)\n- split_check_list_value (leaf)\n- assign_char (leaf)\n- assign_with (leaf)\n- join_list_value (leaf)\n- join_check_list_value (leaf)\n- write_boolean_as (list of leaf)\n- force_lc_section (leaf)\n- force_lc_key (leaf)\n- force_lc_value (leaf)\n- full_dump (leaf)\n- comment_delimiter (leaf)\n- quote_value (leaf)\n- auto_delete (leaf)\n"];
Itself__ConfigReadWrite -> Itself__ConfigReadWrite__DefaultLayer [ style=dashed, label="default_layer" ];

Itself__ConfigReadWrite -> Itself__ConfigReadWrite__DefaultLayer ;
Itself__ConfigReadWrite__DefaultLayer [shape=box label="Itself::ConfigReadWrite::DefaultLayer\n- config_dir (leaf)\n- os_config_dir (hash of leaf)\n- file (leaf)\n"];

Itself__Element [shape=box label="Itself::Element\n- type (leaf)\n- status (leaf)\n- level (leaf)\n- summary (leaf)\n- description (leaf)\n- warp (warped_node)\n- index_type (leaf)\n- cargo (warped_node)\n"];
Itself__Element -> Itself__WarpValue [ style=dashed, label="warp" ];
Itself__Element -> Itself__CargoElement [ style=dashed, label="cargo" ];

Itself__Element -> Itself__NonWarpableElement ;
Itself__Element -> Itself__WarpableElement ;
Itself__MigratedValue [shape=box label="Itself::MigratedValue\n- variables (hash of leaf)\n- formula (leaf)\n- replace (hash of leaf)\n- use_eval (leaf)\n- undef_is (leaf)\n"];

Itself__Model [shape=box label="Itself::Model\n- class (hash of node)\n- application (hash of node)\n"];
Itself__Model -> Itself__Class [ style=dashed, label="class" ];
Itself__Model -> Itself__Application [ style=dashed, label="application" ];

Itself__NonWarpableElement [shape=box label="Itself::NonWarpableElement\n- value_type (leaf)\n- class (leaf)\n- morph (leaf)\n- refer_to (leaf)\n- computed_refer_to (warped_node)\n- replace_follow (leaf)\n- compute (warped_node)\n- migrate_from (warped_node)\n- write_as (list of leaf)\n- migrate_values_from (leaf)\n- migrate_keys_from (leaf)\n- write_empty_value (leaf)\n"];
Itself__NonWarpableElement -> Itself__ComputedValue [ style=dashed, label="computed_refer_to" ];
Itself__NonWarpableElement -> Itself__ComputedValue [ style=dashed, label="compute" ];
Itself__NonWarpableElement -> Itself__MigratedValue [ style=dashed, label="migrate_from" ];

Itself__WarpOnlyElement [shape=box label="Itself::WarpOnlyElement\n- level (leaf)\n- index_type (leaf)\n"];

Itself__WarpOnlyElement -> Itself__WarpableElement ;
Itself__WarpValue [shape=box label="Itself::WarpValue\n- follow (hash of leaf)\n- rules (hash of warped_node)\n"];
Itself__WarpValue -> Itself__WarpableCargoElement [ style=dashed, label="rules" ];
Itself__WarpValue -> Itself__WarpOnlyElement [ style=dashed, label="rules" ];

Itself__WarpableCargoElement [shape=box label="Itself::WarpableCargoElement\n"];

Itself__WarpableCargoElement -> Itself__CommonElement ;
Itself__WarpableElement [shape=box label="Itself::WarpableElement\n- allow_keys_from (leaf)\n- allow_keys_matching (leaf)\n- follow_keys_from (leaf)\n- warn_if_key_match (leaf)\n- warn_unless_key_match (leaf)\n- ordered (leaf)\n- default_keys (list of leaf)\n- auto_create_keys (list of leaf)\n- allow_keys (list of leaf)\n- auto_create_ids (leaf)\n- default_with_init (hash of leaf)\n- max_nb (leaf)\n- replace (hash of leaf)\n- duplicates (leaf)\n- help (hash of leaf)\n"];

Itself__WarpableElement -> Itself__CommonElement ;
}