Back to Woods

Call Graph

docs/self-analysis/call-graph.md

1.2.0214.2 KB
Original Source

Call Graph

mermaid
graph TD
  Woods["Woods"]
  Woods__Ast["Woods::Ast"]
  Woods__Ast__CallSiteExtractor["Woods::Ast::CallSiteExtractor"]
  Woods__Ast__CallSiteExtractor_extract["Woods::Ast::CallSiteExtractor#extract"]
  Woods__Ast__CallSiteExtractor_extract_significant["Woods::Ast::CallSiteExtractor#extract_significant"]
  Set["Set"]
  Woods__Ast__CallSiteExtractor_extract_significant -->|method_call| Set
  INSIGNIFICANT_METHODS["INSIGNIFICANT_METHODS"]
  Woods__Ast__CallSiteExtractor_extract_significant -->|method_call| INSIGNIFICANT_METHODS
  Woods__Ast__CallSiteExtractor_collect_calls["Woods::Ast::CallSiteExtractor#collect_calls"]
  Woods__Ast__MethodExtractor["Woods::Ast::MethodExtractor"]
  Woods__Ast__MethodExtractor_initialize["Woods::Ast::MethodExtractor#initialize"]
  Parser["Parser"]
  Woods__Ast__MethodExtractor_initialize -->|method_call| Parser
  Woods__Ast__MethodExtractor_extract_method["Woods::Ast::MethodExtractor#extract_method"]
  Woods__Ast__MethodExtractor_extract_all_methods["Woods::Ast::MethodExtractor#extract_all_methods"]
  Woods__Ast__MethodExtractor_extract_method_source["Woods::Ast::MethodExtractor#extract_method_source"]
  Woods__Error["Woods::Error"]
  StandardError["StandardError"]
  Woods__Error -->|inheritance| StandardError
  Woods__ExtractionError["Woods::ExtractionError"]
  Error["Error"]
  Woods__ExtractionError -->|inheritance| Error
  Woods__Ast__Parser["Woods::Ast::Parser"]
  Woods__Ast__Parser_parse["Woods::Ast::Parser#parse"]
  Woods__Ast__Parser_prism_available_["Woods::Ast::Parser#prism_available?"]
  Woods__Ast__Parser_parse_with_prism["Woods::Ast::Parser#parse_with_prism"]
  Prism["Prism"]
  Woods__Ast__Parser_parse_with_prism -->|method_call| Prism
  Woods__Ast__Parser_parse_with_parser_gem["Woods::Ast::Parser#parse_with_parser_gem"]
  Parser__Source__Buffer["Parser::Source::Buffer"]
  Woods__Ast__Parser_parse_with_parser_gem -->|method_call| Parser__Source__Buffer
  Parser__CurrentRuby["Parser::CurrentRuby"]
  Woods__Ast__Parser_parse_with_parser_gem -->|method_call| Parser__CurrentRuby
  Woods__Ast__Parser_convert_prism_node["Woods::Ast::Parser#convert_prism_node"]
  Node["Node"]
  Woods__Ast__Parser_convert_prism_node -->|method_call| Node
  Woods__Ast__Parser_convert_prism_class["Woods::Ast::Parser#convert_prism_class"]
  Woods__Ast__Parser_convert_prism_class -->|method_call| Node
  Woods__Ast__Parser_convert_prism_module["Woods::Ast::Parser#convert_prism_module"]
  Woods__Ast__Parser_convert_prism_module -->|method_call| Node
  Woods__Ast__Parser_convert_prism_def["Woods::Ast::Parser#convert_prism_def"]
  Woods__Ast__Parser_convert_prism_def -->|method_call| Node
  Woods__Ast__Parser_convert_prism_call["Woods::Ast::Parser#convert_prism_call"]
  Woods__Ast__Parser_convert_prism_call -->|method_call| Node
  Woods__Ast__Parser_convert_prism_constant_path["Woods::Ast::Parser#convert_prism_constant_path"]
  Woods__Ast__Parser_convert_prism_constant_path -->|method_call| Node
  Woods__Ast__Parser_convert_prism_if["Woods::Ast::Parser#convert_prism_if"]
  Woods__Ast__Parser_convert_prism_if -->|method_call| Node
  Woods__Ast__Parser_convert_prism_unless["Woods::Ast::Parser#convert_prism_unless"]
  Woods__Ast__Parser_convert_prism_unless -->|method_call| Node
  Woods__Ast__Parser_convert_prism_case["Woods::Ast::Parser#convert_prism_case"]
  Woods__Ast__Parser_convert_prism_case -->|method_call| Node
  Woods__Ast__Parser_convert_prism_children["Woods::Ast::Parser#convert_prism_children"]
  Woods__Ast__Parser_extract_prism_generic_children["Woods::Ast::Parser#extract_prism_generic_children"]
  Woods__Ast__Parser_line_for_prism["Woods::Ast::Parser#line_for_prism"]
  Woods__Ast__Parser_end_line_for_prism["Woods::Ast::Parser#end_line_for_prism"]
  Woods__Ast__Parser_extract_prism_source_span["Woods::Ast::Parser#extract_prism_source_span"]
  Woods__Ast__Parser_extract_prism_source_text["Woods::Ast::Parser#extract_prism_source_text"]
  Woods__Ast__Parser_extract_prism_receiver_text["Woods::Ast::Parser#extract_prism_receiver_text"]
  Woods__Ast__Parser_extract_const_path_text["Woods::Ast::Parser#extract_const_path_text"]
  Woods__Ast__Parser_extract_const_name["Woods::Ast::Parser#extract_const_name"]
  Woods__Ast__Parser_convert_parser_node["Woods::Ast::Parser#convert_parser_node"]
  Woods__Ast__Parser_convert_parser_node -->|method_call| Node
  Woods__Ast__Parser_extract_parser_source_span["Woods::Ast::Parser#extract_parser_source_span"]
  Woods__Ast__Parser_extract_parser_source_text["Woods::Ast::Parser#extract_parser_source_text"]
  Woods__Ast__Parser_extract_parser_receiver_text["Woods::Ast::Parser#extract_parser_receiver_text"]
  Woods__Ast__Parser_extract_parser_const_name["Woods::Ast::Parser#extract_parser_const_name"]
  Woods__Builder["Woods::Builder"]
  Woods__Builder_preset_config["Woods::Builder.preset_config"]
  PRESETS["PRESETS"]
  Woods__Builder_preset_config -->|method_call| PRESETS
  Configuration["Configuration"]
  Woods__Builder_preset_config -->|method_call| Configuration
  Woods__Builder_initialize["Woods::Builder#initialize"]
  Woods__Builder_build_retriever["Woods::Builder#build_retriever"]
  Retriever["Retriever"]
  Woods__Builder_build_retriever -->|method_call| Retriever
  Woods__Builder_build_vector_store["Woods::Builder#build_vector_store"]
  Storage__VectorStore__InMemory["Storage::VectorStore::InMemory"]
  Woods__Builder_build_vector_store -->|method_call| Storage__VectorStore__InMemory
  Storage__VectorStore__Pgvector["Storage::VectorStore::Pgvector"]
  Woods__Builder_build_vector_store -->|method_call| Storage__VectorStore__Pgvector
  Storage__VectorStore__Qdrant["Storage::VectorStore::Qdrant"]
  Woods__Builder_build_vector_store -->|method_call| Storage__VectorStore__Qdrant
  Woods__Builder_build_embedding_provider["Woods::Builder#build_embedding_provider"]
  Embedding__Provider__OpenAI["Embedding::Provider::OpenAI"]
  Woods__Builder_build_embedding_provider -->|method_call| Embedding__Provider__OpenAI
  Embedding__Provider__Ollama["Embedding::Provider::Ollama"]
  Woods__Builder_build_embedding_provider -->|method_call| Embedding__Provider__Ollama
  Woods__Builder_build_metadata_store["Woods::Builder#build_metadata_store"]
  Storage__MetadataStore__InMemory["Storage::MetadataStore::InMemory"]
  Woods__Builder_build_metadata_store -->|method_call| Storage__MetadataStore__InMemory
  Storage__MetadataStore__SQLite["Storage::MetadataStore::SQLite"]
  Woods__Builder_build_metadata_store -->|method_call| Storage__MetadataStore__SQLite
  Woods__Builder_build_graph_store["Woods::Builder#build_graph_store"]
  Storage__GraphStore__Memory["Storage::GraphStore::Memory"]
  Woods__Builder_build_graph_store -->|method_call| Storage__GraphStore__Memory
  Woods__Chunking["Woods::Chunking"]
  Woods__Chunking__Chunk["Woods::Chunking::Chunk"]
  Woods__Chunking__Chunk_initialize["Woods::Chunking::Chunk#initialize"]
  Woods__Chunking__Chunk_token_count["Woods::Chunking::Chunk#token_count"]
  Woods__Chunking__Chunk_content_hash["Woods::Chunking::Chunk#content_hash"]
  Digest__SHA256["Digest::SHA256"]
  Woods__Chunking__Chunk_content_hash -->|method_call| Digest__SHA256
  Woods__Chunking__Chunk_identifier["Woods::Chunking::Chunk#identifier"]
  Woods__Chunking__Chunk_empty_["Woods::Chunking::Chunk#empty?"]
  Woods__Chunking__Chunk_to_h["Woods::Chunking::Chunk#to_h"]
  Woods__Chunking__SemanticChunker["Woods::Chunking::SemanticChunker"]
  Woods__Chunking__ModelChunker["Woods::Chunking::ModelChunker"]
  Woods__Chunking__ControllerChunker["Woods::Chunking::ControllerChunker"]
  Woods__Chunking__SemanticChunker_initialize["Woods::Chunking::SemanticChunker#initialize"]
  Woods__Chunking__SemanticChunker_chunk["Woods::Chunking::SemanticChunker#chunk"]
  ModelChunker_new["ModelChunker.new"]
  Woods__Chunking__SemanticChunker_chunk -->|method_call| ModelChunker_new
  ModelChunker["ModelChunker"]
  Woods__Chunking__SemanticChunker_chunk -->|method_call| ModelChunker
  ControllerChunker_new["ControllerChunker.new"]
  Woods__Chunking__SemanticChunker_chunk -->|method_call| ControllerChunker_new
  ControllerChunker["ControllerChunker"]
  Woods__Chunking__SemanticChunker_chunk -->|method_call| ControllerChunker
  Woods__Chunking__SemanticChunker_build_whole_chunk["Woods::Chunking::SemanticChunker#build_whole_chunk"]
  Chunk["Chunk"]
  Woods__Chunking__SemanticChunker_build_whole_chunk -->|method_call| Chunk
  Woods__Chunking__ModelChunker_initialize["Woods::Chunking::ModelChunker#initialize"]
  Woods__Chunking__ModelChunker_chunk["Woods::Chunking::ModelChunker#chunk"]
  Woods__Chunking__ModelChunker_build_chunks["Woods::Chunking::ModelChunker#build_chunks"]
  SEMANTIC_SECTIONS["SEMANTIC_SECTIONS"]
  Woods__Chunking__ModelChunker_build_chunks -->|method_call| SEMANTIC_SECTIONS
  Woods__Chunking__ModelChunker_classify_lines["Woods::Chunking::ModelChunker#classify_lines"]
  Woods__Chunking__ModelChunker_empty_sections["Woods::Chunking::ModelChunker#empty_sections"]
  Woods__Chunking__ModelChunker_track_method_line["Woods::Chunking::ModelChunker#track_method_line"]
  Woods__Chunking__ModelChunker_update_method_depth["Woods::Chunking::ModelChunker#update_method_depth"]
  Woods__Chunking__ModelChunker_classify_line["Woods::Chunking::ModelChunker#classify_line"]
  Woods__Chunking__ModelChunker_detect_semantic_section["Woods::Chunking::ModelChunker#detect_semantic_section"]
  SECTION_PATTERNS["SECTION_PATTERNS"]
  Woods__Chunking__ModelChunker_detect_semantic_section -->|method_call| SECTION_PATTERNS
  Woods__Chunking__ModelChunker_start_method["Woods::Chunking::ModelChunker#start_method"]
  Woods__Chunking__ModelChunker_assign_fallback["Woods::Chunking::ModelChunker#assign_fallback"]
  Woods__Chunking__ModelChunker_build_chunk["Woods::Chunking::ModelChunker#build_chunk"]
  Woods__Chunking__ModelChunker_build_chunk -->|method_call| Chunk
  Woods__Chunking__ControllerChunker_initialize["Woods::Chunking::ControllerChunker#initialize"]
  Woods__Chunking__ControllerChunker_chunk["Woods::Chunking::ControllerChunker#chunk"]
  Woods__Chunking__ControllerChunker_parse_lines["Woods::Chunking::ControllerChunker#parse_lines"]
  Woods__Chunking__ControllerChunker_track_action_line["Woods::Chunking::ControllerChunker#track_action_line"]
  Woods__Chunking__ControllerChunker_classify_controller_line["Woods::Chunking::ControllerChunker#classify_controller_line"]
  Woods__Chunking__ControllerChunker_start_action["Woods::Chunking::ControllerChunker#start_action"]
  Woods__Chunking__ControllerChunker_build_chunks["Woods::Chunking::ControllerChunker#build_chunks"]
  Woods__Chunking__ControllerChunker_build_chunk["Woods::Chunking::ControllerChunker#build_chunk"]
  Woods__Chunking__ControllerChunker_build_chunk -->|method_call| Chunk
  Woods__Console["Woods::Console"]
  Woods__Console__Adapters["Woods::Console::Adapters"]
  Woods__Console__Adapters__CacheAdapter["Woods::Console::Adapters::CacheAdapter"]
  Woods__Console__Adapters__CacheAdapter_detect["Woods::Console::Adapters::CacheAdapter#detect"]
  Rails["Rails"]
  Woods__Console__Adapters__CacheAdapter_detect -->|method_call| Rails
  Rails_cache_class_name["Rails.cache.class.name"]
  Woods__Console__Adapters__CacheAdapter_detect -->|method_call| Rails_cache_class_name
  Rails_cache_class["Rails.cache.class"]
  Woods__Console__Adapters__CacheAdapter_detect -->|method_call| Rails_cache_class
  Rails_cache["Rails.cache"]
  Woods__Console__Adapters__CacheAdapter_detect -->|method_call| Rails_cache
  STORE_PATTERNS["STORE_PATTERNS"]
  Woods__Console__Adapters__CacheAdapter_detect -->|method_call| STORE_PATTERNS
  Woods__Console__Adapters__CacheAdapter_stats["Woods::Console::Adapters::CacheAdapter#stats"]
  Woods__Console__Adapters__CacheAdapter_info["Woods::Console::Adapters::CacheAdapter#info"]
  Woods__Console__Adapters__GoodJobAdapter["Woods::Console::Adapters::GoodJobAdapter"]
  Woods__Console__Adapters__GoodJobAdapter_available_["Woods::Console::Adapters::GoodJobAdapter.available?"]
  Woods__Console__Adapters__GoodJobAdapter_queue_stats["Woods::Console::Adapters::GoodJobAdapter#queue_stats"]
  Woods__Console__Adapters__GoodJobAdapter_recent_failures["Woods::Console::Adapters::GoodJobAdapter#recent_failures"]
  Woods__Console__Adapters__GoodJobAdapter_find_job["Woods::Console::Adapters::GoodJobAdapter#find_job"]
  Woods__Console__Adapters__GoodJobAdapter_scheduled_jobs["Woods::Console::Adapters::GoodJobAdapter#scheduled_jobs"]
  Woods__Console__Adapters__GoodJobAdapter_retry_job["Woods::Console::Adapters::GoodJobAdapter#retry_job"]
  Woods__Console__Adapters__SidekiqAdapter["Woods::Console::Adapters::SidekiqAdapter"]
  Woods__Console__Adapters__SidekiqAdapter_available_["Woods::Console::Adapters::SidekiqAdapter.available?"]
  Woods__Console__Adapters__SidekiqAdapter_queue_stats["Woods::Console::Adapters::SidekiqAdapter#queue_stats"]
  Woods__Console__Adapters__SidekiqAdapter_recent_failures["Woods::Console::Adapters::SidekiqAdapter#recent_failures"]
  Woods__Console__Adapters__SidekiqAdapter_find_job["Woods::Console::Adapters::SidekiqAdapter#find_job"]
  Woods__Console__Adapters__SidekiqAdapter_scheduled_jobs["Woods::Console::Adapters::SidekiqAdapter#scheduled_jobs"]
  Woods__Console__Adapters__SidekiqAdapter_retry_job["Woods::Console::Adapters::SidekiqAdapter#retry_job"]
  Woods__Console__Adapters__SolidQueueAdapter["Woods::Console::Adapters::SolidQueueAdapter"]
  Woods__Console__Adapters__SolidQueueAdapter_available_["Woods::Console::Adapters::SolidQueueAdapter.available?"]
  Woods__Console__Adapters__SolidQueueAdapter_queue_stats["Woods::Console::Adapters::SolidQueueAdapter#queue_stats"]
  Woods__Console__Adapters__SolidQueueAdapter_recent_failures["Woods::Console::Adapters::SolidQueueAdapter#recent_failures"]
  Woods__Console__Adapters__SolidQueueAdapter_find_job["Woods::Console::Adapters::SolidQueueAdapter#find_job"]
  Woods__Console__Adapters__SolidQueueAdapter_scheduled_jobs["Woods::Console::Adapters::SolidQueueAdapter#scheduled_jobs"]
  Woods__Console__Adapters__SolidQueueAdapter_retry_job["Woods::Console::Adapters::SolidQueueAdapter#retry_job"]
  Woods__Console__AuditLogger["Woods::Console::AuditLogger"]
  Woods__Console__AuditLogger_initialize["Woods::Console::AuditLogger#initialize"]
  Woods__Console__AuditLogger_log["Woods::Console::AuditLogger#log"]
  File["File"]
  Woods__Console__AuditLogger_log -->|method_call| File
  Woods__Console__AuditLogger_entries["Woods::Console::AuditLogger#entries"]
  Woods__Console__AuditLogger_entries -->|method_call| File
  File_readlines["File.readlines"]
  Woods__Console__AuditLogger_entries -->|method_call| File_readlines
  JSON["JSON"]
  Woods__Console__AuditLogger_entries -->|method_call| JSON
  Woods__Console__AuditLogger_size["Woods::Console::AuditLogger#size"]
  Woods__Console__AuditLogger_ensure_directory_["Woods::Console::AuditLogger#ensure_directory!"]
  Woods__Console__AuditLogger_ensure_directory_ -->|method_call| File
  FileUtils["FileUtils"]
  Woods__Console__AuditLogger_ensure_directory_ -->|method_call| FileUtils
  Woods__Console__Bridge["Woods::Console::Bridge"]
  Woods__Console__Bridge_initialize["Woods::Console::Bridge#initialize"]
  Woods__Console__Bridge_run["Woods::Console::Bridge#run"]
  Woods__Console__Bridge_handle_request["Woods::Console::Bridge#handle_request"]
  SUPPORTED_TOOLS["SUPPORTED_TOOLS"]
  Woods__Console__Bridge_handle_request -->|method_call| SUPPORTED_TOOLS
  Process["Process"]
  Woods__Console__Bridge_handle_request -->|method_call| Process
  Process_clock_gettime["Process.clock_gettime"]
  Woods__Console__Bridge_handle_request -->|method_call| Process_clock_gettime
  Woods__Console__Bridge_parse_request["Woods::Console::Bridge#parse_request"]
  Woods__Console__Bridge_parse_request -->|method_call| JSON
  Woods__Console__Bridge_dispatch["Woods::Console::Bridge#dispatch"]
  TOOL_HANDLERS["TOOL_HANDLERS"]
  Woods__Console__Bridge_dispatch -->|method_call| TOOL_HANDLERS
  Woods__Console__Bridge_validate_model_param["Woods::Console::Bridge#validate_model_param"]
  Woods__Console__Bridge_handle_count["Woods::Console::Bridge#handle_count"]
  Woods__Console__Bridge_handle_sample["Woods::Console::Bridge#handle_sample"]
  Woods__Console__Bridge_handle_find["Woods::Console::Bridge#handle_find"]
  Woods__Console__Bridge_handle_pluck["Woods::Console::Bridge#handle_pluck"]
  Woods__Console__Bridge_handle_aggregate["Woods::Console::Bridge#handle_aggregate"]
  Woods__Console__Bridge_handle_association_count["Woods::Console::Bridge#handle_association_count"]
  Woods__Console__Bridge_handle_schema["Woods::Console::Bridge#handle_schema"]
  Woods__Console__Bridge_handle_recent["Woods::Console::Bridge#handle_recent"]
  Woods__Console__Bridge_handle_status["Woods::Console::Bridge#handle_status"]
  Woods__Console__Bridge_error_response["Woods::Console::Bridge#error_response"]
  Woods__Console__Bridge_write_response["Woods::Console::Bridge#write_response"]
  Woods__Console__ConfirmationDeniedError["Woods::Console::ConfirmationDeniedError"]
  Woods__Console__ConfirmationDeniedError -->|inheritance| Woods__Error
  Woods__Console__Confirmation["Woods::Console::Confirmation"]
  Woods__Console__Confirmation_initialize["Woods::Console::Confirmation#initialize"]
  VALID_MODES["VALID_MODES"]
  Woods__Console__Confirmation_initialize -->|method_call| VALID_MODES
  Woods__Console__Confirmation_request_confirmation["Woods::Console::Confirmation#request_confirmation"]
  Woods__Console__Confirmation_evaluate["Woods::Console::Confirmation#evaluate"]
  Woods__Console__ConnectionError["Woods::Console::ConnectionError"]
  Woods__Console__ConnectionError -->|inheritance| Woods__Error
  Woods__Console__ConnectionManager["Woods::Console::ConnectionManager"]
  Woods__Console__ConnectionManager_initialize["Woods::Console::ConnectionManager#initialize"]
  Woods__Console__ConnectionManager_connect_["Woods::Console::ConnectionManager#connect!"]
  Dir["Dir"]
  Woods__Console__ConnectionManager_connect_ -->|method_call| Dir
  Open3["Open3"]
  Woods__Console__ConnectionManager_connect_ -->|method_call| Open3
  Time["Time"]
  Woods__Console__ConnectionManager_connect_ -->|method_call| Time
  Woods__Console__ConnectionManager_disconnect_["Woods::Console::ConnectionManager#disconnect!"]
  Woods__Console__ConnectionManager_send_request["Woods::Console::ConnectionManager#send_request"]
  Woods__Console__ConnectionManager_send_request -->|method_call| Time
  Woods__Console__ConnectionManager_send_request -->|method_call| JSON
  Woods__Console__ConnectionManager_alive_["Woods::Console::ConnectionManager#alive?"]
  Woods__Console__ConnectionManager_heartbeat_needed_["Woods::Console::ConnectionManager#heartbeat_needed?"]
  Time_now["Time.now"]
  Woods__Console__ConnectionManager_heartbeat_needed_ -->|method_call| Time_now
  Woods__Console__ConnectionManager_heartbeat_needed_ -->|method_call| Time
  Woods__Console__ConnectionManager_build_command["Woods::Console::ConnectionManager#build_command"]
  Woods__Console__ConnectionManager_build_docker_command["Woods::Console::ConnectionManager#build_docker_command"]
  Woods__Console__ConnectionManager_build_ssh_command["Woods::Console::ConnectionManager#build_ssh_command"]
  Woods__Console__ConnectionManager_build_direct_command["Woods::Console::ConnectionManager#build_direct_command"]
  Woods__Console__ConnectionManager_ensure_connected_["Woods::Console::ConnectionManager#ensure_connected!"]
  Woods__Console__ConnectionManager_reconnect_or_raise_["Woods::Console::ConnectionManager#reconnect_or_raise!"]
  Woods__Console__ValidationError["Woods::Console::ValidationError"]
  Woods__Console__ValidationError -->|inheritance| Woods__Error
  Woods__Console__ModelValidator["Woods::Console::ModelValidator"]
  Woods__Console__ModelValidator_initialize["Woods::Console::ModelValidator#initialize"]
  Woods__Console__ModelValidator_validate_model_["Woods::Console::ModelValidator#validate_model!"]
  Woods__Console__ModelValidator_validate_column_["Woods::Console::ModelValidator#validate_column!"]
  Woods__Console__ModelValidator_validate_columns_["Woods::Console::ModelValidator#validate_columns!"]
  Woods__Console__ModelValidator_model_names["Woods::Console::ModelValidator#model_names"]
  Woods__Console__ModelValidator_columns_for["Woods::Console::ModelValidator#columns_for"]
  ActiveRecord["ActiveRecord"]
  ActiveRecord__Rollback["ActiveRecord::Rollback"]
  ActiveRecord__Rollback -->|inheritance| StandardError
  Woods__Console__SafeContext["Woods::Console::SafeContext"]
  Woods__Console__SafeContext_initialize["Woods::Console::SafeContext#initialize"]
  Woods__Console__SafeContext_execute["Woods::Console::SafeContext#execute"]
  Woods__Console__SafeContext_redact["Woods::Console::SafeContext#redact"]
  Woods__Console__SafeContext_set_timeout["Woods::Console::SafeContext#set_timeout"]
  Woods__Console__Server["Woods::Console::Server"]
  Woods__Console__SqlValidationError["Woods::Console::SqlValidationError"]
  Woods__Console__SqlValidationError -->|inheritance| Woods__Error
  Woods__Console__SqlValidator["Woods::Console::SqlValidator"]
  Woods__Console__SqlValidator_validate_["Woods::Console::SqlValidator#validate!"]
  Woods__Console__SqlValidator_valid_["Woods::Console::SqlValidator#valid?"]
  Woods__Console__SqlValidator_contains_multiple_statements_["Woods::Console::SqlValidator#contains_multiple_statements?"]
  Woods__Console__SqlValidator_check_forbidden_keywords_["Woods::Console::SqlValidator#check_forbidden_keywords!"]
  FORBIDDEN_KEYWORDS["FORBIDDEN_KEYWORDS"]
  Woods__Console__SqlValidator_check_forbidden_keywords_ -->|method_call| FORBIDDEN_KEYWORDS
  Woods__Console__SqlValidator_check_body_forbidden_keywords_["Woods::Console::SqlValidator#check_body_forbidden_keywords!"]
  BODY_FORBIDDEN_KEYWORDS["BODY_FORBIDDEN_KEYWORDS"]
  Woods__Console__SqlValidator_check_body_forbidden_keywords_ -->|method_call| BODY_FORBIDDEN_KEYWORDS
  Woods__Console__SqlValidator_check_writable_ctes_["Woods::Console::SqlValidator#check_writable_ctes!"]
  Woods__Console__SqlValidator_check_dangerous_functions_["Woods::Console::SqlValidator#check_dangerous_functions!"]
  DANGEROUS_FUNCTIONS["DANGEROUS_FUNCTIONS"]
  Woods__Console__SqlValidator_check_dangerous_functions_ -->|method_call| DANGEROUS_FUNCTIONS
  Woods__Console__SqlValidator_check_forbidden_keywords_in_body_["Woods::Console::SqlValidator#check_forbidden_keywords_in_body!"]
  Woods__Console__SqlValidator_check_forbidden_keywords_in_body_ -->|method_call| FORBIDDEN_KEYWORDS
  Woods__Console__Tools["Woods::Console::Tools"]
  Woods__Console__Tools__Tier1["Woods::Console::Tools::Tier1"]
  Woods__Console__Tools__Tier1_console_count["Woods::Console::Tools::Tier1#console_count"]
  Woods__Console__Tools__Tier1_console_sample["Woods::Console::Tools::Tier1#console_sample"]
  Woods__Console__Tools__Tier1_console_find["Woods::Console::Tools::Tier1#console_find"]
  Woods__Console__Tools__Tier1_console_pluck["Woods::Console::Tools::Tier1#console_pluck"]
  Woods__Console__Tools__Tier1_console_aggregate["Woods::Console::Tools::Tier1#console_aggregate"]
  Woods__Console__Tools__Tier1_console_association_count["Woods::Console::Tools::Tier1#console_association_count"]
  Woods__Console__Tools__Tier1_console_schema["Woods::Console::Tools::Tier1#console_schema"]
  Woods__Console__Tools__Tier1_console_recent["Woods::Console::Tools::Tier1#console_recent"]
  Woods__Console__Tools__Tier1_console_status["Woods::Console::Tools::Tier1#console_status"]
  Woods__Console__Tools__Tier2["Woods::Console::Tools::Tier2"]
  Woods__Console__Tools__Tier2_console_diagnose_model["Woods::Console::Tools::Tier2#console_diagnose_model"]
  Woods__Console__Tools__Tier2_console_data_snapshot["Woods::Console::Tools::Tier2#console_data_snapshot"]
  Woods__Console__Tools__Tier2_console_validate_record["Woods::Console::Tools::Tier2#console_validate_record"]
  Woods__Console__Tools__Tier2_console_check_setting["Woods::Console::Tools::Tier2#console_check_setting"]
  Woods__Console__Tools__Tier2_console_update_setting["Woods::Console::Tools::Tier2#console_update_setting"]
  Woods__Console__Tools__Tier2_console_check_policy["Woods::Console::Tools::Tier2#console_check_policy"]
  Woods__Console__Tools__Tier2_console_validate_with["Woods::Console::Tools::Tier2#console_validate_with"]
  Woods__Console__Tools__Tier2_console_check_eligibility["Woods::Console::Tools::Tier2#console_check_eligibility"]
  Woods__Console__Tools__Tier2_console_decorate["Woods::Console::Tools::Tier2#console_decorate"]
  Woods__Console__Tools__Tier3["Woods::Console::Tools::Tier3"]
  Woods__Console__Tools__Tier3_console_slow_endpoints["Woods::Console::Tools::Tier3#console_slow_endpoints"]
  Woods__Console__Tools__Tier3_console_error_rates["Woods::Console::Tools::Tier3#console_error_rates"]
  Woods__Console__Tools__Tier3_console_throughput["Woods::Console::Tools::Tier3#console_throughput"]
  Woods__Console__Tools__Tier3_console_job_queues["Woods::Console::Tools::Tier3#console_job_queues"]
  Woods__Console__Tools__Tier3_console_job_failures["Woods::Console::Tools::Tier3#console_job_failures"]
  Woods__Console__Tools__Tier3_console_job_find["Woods::Console::Tools::Tier3#console_job_find"]
  Woods__Console__Tools__Tier3_console_job_schedule["Woods::Console::Tools::Tier3#console_job_schedule"]
  Woods__Console__Tools__Tier3_console_redis_info["Woods::Console::Tools::Tier3#console_redis_info"]
  Woods__Console__Tools__Tier3_console_cache_stats["Woods::Console::Tools::Tier3#console_cache_stats"]
  Woods__Console__Tools__Tier3_console_channel_status["Woods::Console::Tools::Tier3#console_channel_status"]
  Woods__Console__Tools__Tier4["Woods::Console::Tools::Tier4"]
  Woods__Console__Tools__Tier4_console_eval["Woods::Console::Tools::Tier4#console_eval"]
  Woods__Console__Tools__Tier4_console_sql["Woods::Console::Tools::Tier4#console_sql"]
  Woods__Console__Tools__Tier4_console_query["Woods::Console::Tools::Tier4#console_query"]
  Woods__Coordination["Woods::Coordination"]
  Woods__Coordination__LockError["Woods::Coordination::LockError"]
  Woods__Coordination__LockError -->|inheritance| Woods__Error
  Woods__Coordination__PipelineLock["Woods::Coordination::PipelineLock"]
  Woods__Coordination__PipelineLock_initialize["Woods::Coordination::PipelineLock#initialize"]
  Woods__Coordination__PipelineLock_initialize -->|method_call| File
  Woods__Coordination__PipelineLock_acquire["Woods::Coordination::PipelineLock#acquire"]
  Woods__Coordination__PipelineLock_acquire -->|method_call| FileUtils
  Woods__Coordination__PipelineLock_acquire -->|method_call| File
  Woods__Coordination__PipelineLock_release["Woods::Coordination::PipelineLock#release"]
  Woods__Coordination__PipelineLock_release -->|method_call| FileUtils
  Woods__Coordination__PipelineLock_with_lock["Woods::Coordination::PipelineLock#with_lock"]
  Woods__Coordination__PipelineLock_locked_["Woods::Coordination::PipelineLock#locked?"]
  Woods__Coordination__PipelineLock_locked_ -->|method_call| File
  Woods__Coordination__PipelineLock_stale_["Woods::Coordination::PipelineLock#stale?"]
  Woods__Coordination__PipelineLock_stale_ -->|method_call| File
  Woods__Coordination__PipelineLock_stale_ -->|method_call| Time_now
  Woods__Coordination__PipelineLock_stale_ -->|method_call| Time
  Woods__Coordination__PipelineLock_lock_content["Woods::Coordination::PipelineLock#lock_content"]
  Woods__Coordination__PipelineLock_lock_content -->|method_call| JSON
  Woods__CostModel["Woods::CostModel"]
  Woods__CostModel__EmbeddingCost["Woods::CostModel::EmbeddingCost"]
  Woods__CostModel__EmbeddingCost_initialize["Woods::CostModel::EmbeddingCost#initialize"]
  ProviderPricing["ProviderPricing"]
  Woods__CostModel__EmbeddingCost_initialize -->|method_call| ProviderPricing
  Woods__CostModel__EmbeddingCost_full_index_cost["Woods::CostModel::EmbeddingCost#full_index_cost"]
  Woods__CostModel__EmbeddingCost_incremental_cost["Woods::CostModel::EmbeddingCost#incremental_cost"]
  Woods__CostModel__EmbeddingCost_monthly_query_cost["Woods::CostModel::EmbeddingCost#monthly_query_cost"]
  Woods__CostModel__EmbeddingCost_yearly_incremental_cost["Woods::CostModel::EmbeddingCost#yearly_incremental_cost"]
  Woods__CostModel__EmbeddingCost_total_tokens["Woods::CostModel::EmbeddingCost#total_tokens"]
  Woods__CostModel__EmbeddingCost_token_cost["Woods::CostModel::EmbeddingCost#token_cost"]
  Woods__CostModel__Estimator["Woods::CostModel::Estimator"]
  Woods__CostModel__Estimator_initialize["Woods::CostModel::Estimator#initialize"]
  Woods__CostModel__Estimator_initialize -->|method_call| ProviderPricing
  EmbeddingCost["EmbeddingCost"]
  Woods__CostModel__Estimator_initialize -->|method_call| EmbeddingCost
  StorageCost["StorageCost"]
  Woods__CostModel__Estimator_initialize -->|method_call| StorageCost
  Woods__CostModel__Estimator_full_index_cost["Woods::CostModel::Estimator#full_index_cost"]
  Woods__CostModel__Estimator_incremental_per_merge_cost["Woods::CostModel::Estimator#incremental_per_merge_cost"]
  Woods__CostModel__Estimator_monthly_query_cost["Woods::CostModel::Estimator#monthly_query_cost"]
  Woods__CostModel__Estimator_yearly_incremental_cost["Woods::CostModel::Estimator#yearly_incremental_cost"]
  Woods__CostModel__Estimator_total_chunks["Woods::CostModel::Estimator#total_chunks"]
  Woods__CostModel__Estimator_storage_bytes["Woods::CostModel::Estimator#storage_bytes"]
  Woods__CostModel__Estimator_storage_mb["Woods::CostModel::Estimator#storage_mb"]
  Woods__CostModel__Estimator_to_h["Woods::CostModel::Estimator#to_h"]
  Woods__CostModel__ProviderPricing["Woods::CostModel::ProviderPricing"]
  Woods__CostModel__ProviderPricing_cost_per_million["Woods::CostModel::ProviderPricing.cost_per_million"]
  COSTS_PER_MILLION_TOKENS["COSTS_PER_MILLION_TOKENS"]
  Woods__CostModel__ProviderPricing_cost_per_million -->|method_call| COSTS_PER_MILLION_TOKENS
  Woods__CostModel__ProviderPricing_default_dimensions["Woods::CostModel::ProviderPricing.default_dimensions"]
  DEFAULT_DIMENSIONS["DEFAULT_DIMENSIONS"]
  Woods__CostModel__ProviderPricing_default_dimensions -->|method_call| DEFAULT_DIMENSIONS
  Woods__CostModel__ProviderPricing_providers["Woods::CostModel::ProviderPricing.providers"]
  Woods__CostModel__ProviderPricing_providers -->|method_call| COSTS_PER_MILLION_TOKENS
  Woods__CostModel__StorageCost["Woods::CostModel::StorageCost"]
  Woods__CostModel__StorageCost_initialize["Woods::CostModel::StorageCost#initialize"]
  Woods__CostModel__StorageCost_bytes_per_vector["Woods::CostModel::StorageCost#bytes_per_vector"]
  Woods__CostModel__StorageCost_storage_bytes["Woods::CostModel::StorageCost#storage_bytes"]
  Woods__CostModel__StorageCost_storage_mb["Woods::CostModel::StorageCost#storage_mb"]
  Woods__Db["Woods::Db"]
  Woods__Db__Migrations["Woods::Db::Migrations"]
  Woods__Db__Migrations__CreateUnits["Woods::Db::Migrations::CreateUnits"]
  Woods__Db__Migrations__CreateUnits_up["Woods::Db::Migrations::CreateUnits.up"]
  Woods__Db__Migrations__CreateEdges["Woods::Db::Migrations::CreateEdges"]
  Woods__Db__Migrations__CreateEdges_up["Woods::Db::Migrations::CreateEdges.up"]
  Woods__Db__Migrations__CreateEmbeddings["Woods::Db::Migrations::CreateEmbeddings"]
  Woods__Db__Migrations__CreateEmbeddings_up["Woods::Db::Migrations::CreateEmbeddings.up"]
  Woods__Db__Migrations__CreateSnapshots["Woods::Db::Migrations::CreateSnapshots"]
  Woods__Db__Migrations__CreateSnapshots_up["Woods::Db::Migrations::CreateSnapshots.up"]
  Woods__Db__Migrations__CreateSnapshotUnits["Woods::Db::Migrations::CreateSnapshotUnits"]
  Woods__Db__Migrations__CreateSnapshotUnits_up["Woods::Db::Migrations::CreateSnapshotUnits.up"]
  Woods__Db__Migrator["Woods::Db::Migrator"]
  Woods__Db__Migrator_initialize["Woods::Db::Migrator#initialize"]
  SchemaVersion["SchemaVersion"]
  Woods__Db__Migrator_initialize -->|method_call| SchemaVersion
  Woods__Db__Migrator_migrate_["Woods::Db::Migrator#migrate!"]
  Woods__Db__Migrator_pending_versions["Woods::Db::Migrator#pending_versions"]
  MIGRATIONS_map["MIGRATIONS.map"]
  Woods__Db__Migrator_pending_versions -->|method_call| MIGRATIONS_map
  Woods__Db__Migrator_pending_migrations["Woods::Db::Migrator#pending_migrations"]
  MIGRATIONS["MIGRATIONS"]
  Woods__Db__Migrator_pending_migrations -->|method_call| MIGRATIONS
  Woods__Db__SchemaVersion["Woods::Db::SchemaVersion"]
  Woods__Db__SchemaVersion_initialize["Woods::Db::SchemaVersion#initialize"]
  Woods__Db__SchemaVersion_ensure_table_["Woods::Db::SchemaVersion#ensure_table!"]
  Woods__Db__SchemaVersion_applied_versions["Woods::Db::SchemaVersion#applied_versions"]
  Woods__Db__SchemaVersion_record_version["Woods::Db::SchemaVersion#record_version"]
  Woods__Db__SchemaVersion_applied_["Woods::Db::SchemaVersion#applied?"]
  Woods__Db__SchemaVersion_current_version["Woods::Db::SchemaVersion#current_version"]
  Woods__DependencyGraph["Woods::DependencyGraph"]
  Woods__DependencyGraph_initialize["Woods::DependencyGraph#initialize"]
  Woods__DependencyGraph_register["Woods::DependencyGraph#register"]
  Woods__DependencyGraph_affected_by["Woods::DependencyGraph#affected_by"]
  Woods__DependencyGraph_affected_by -->|method_call| Set
  Woods__DependencyGraph_dependencies_of["Woods::DependencyGraph#dependencies_of"]
  Woods__DependencyGraph_dependents_of["Woods::DependencyGraph#dependents_of"]
  Woods__DependencyGraph_units_of_type["Woods::DependencyGraph#units_of_type"]
  Woods__DependencyGraph_pagerank["Woods::DependencyGraph#pagerank"]
  Woods__DependencyGraph_to_h["Woods::DependencyGraph#to_h"]
  Woods__DependencyGraph_from_h["Woods::DependencyGraph.from_h"]
  Woods__DependencyGraph_symbolize_node["Woods::DependencyGraph.symbolize_node"]
  Woods__Embedding["Woods::Embedding"]
  Woods__Embedding__Indexer["Woods::Embedding::Indexer"]
  Woods__Embedding__Indexer_initialize["Woods::Embedding::Indexer#initialize"]
  Woods__Embedding__Indexer_index_all["Woods::Embedding::Indexer#index_all"]
  Woods__Embedding__Indexer_index_incremental["Woods::Embedding::Indexer#index_incremental"]
  Woods__Embedding__Indexer_load_units["Woods::Embedding::Indexer#load_units"]
  Dir_glob["Dir.glob"]
  Woods__Embedding__Indexer_load_units -->|method_call| Dir_glob
  File_basename["File.basename"]
  Woods__Embedding__Indexer_load_units -->|method_call| File_basename
  Woods__Embedding__Indexer_load_units -->|method_call| File
  Woods__Embedding__Indexer_load_units -->|method_call| JSON
  Woods__Embedding__Indexer_process_units["Woods::Embedding::Indexer#process_units"]
  Woods__Embedding__Indexer_process_batch["Woods::Embedding::Indexer#process_batch"]
  Woods__Embedding__Indexer_collect_embed_items["Woods::Embedding::Indexer#collect_embed_items"]
  Woods__Embedding__Indexer_prepare_texts["Woods::Embedding::Indexer#prepare_texts"]
  Woods__Embedding__Indexer_build_unit["Woods::Embedding::Indexer#build_unit"]
  ExtractedUnit["ExtractedUnit"]
  Woods__Embedding__Indexer_build_unit -->|method_call| ExtractedUnit
  Woods__Embedding__Indexer_embed_and_store["Woods::Embedding::Indexer#embed_and_store"]
  Woods__Embedding__Indexer_store_vectors["Woods::Embedding::Indexer#store_vectors"]
  Woods__Embedding__Indexer_load_checkpoint["Woods::Embedding::Indexer#load_checkpoint"]
  Woods__Embedding__Indexer_load_checkpoint -->|method_call| File
  Woods__Embedding__Indexer_load_checkpoint -->|method_call| JSON
  Woods__Embedding__Indexer_save_checkpoint["Woods::Embedding::Indexer#save_checkpoint"]
  Woods__Embedding__Indexer_save_checkpoint -->|method_call| File
  Woods__Embedding__Provider["Woods::Embedding::Provider"]
  Woods__Embedding__Provider__OpenAI["Woods::Embedding::Provider::OpenAI"]
  Interface["Interface"]
  Woods__Embedding__Provider__OpenAI -->|include| Interface
  Woods__Embedding__Provider__OpenAI_initialize["Woods::Embedding::Provider::OpenAI#initialize"]
  Woods__Embedding__Provider__OpenAI_embed["Woods::Embedding::Provider::OpenAI#embed"]
  Woods__Embedding__Provider__OpenAI_embed_batch["Woods::Embedding::Provider::OpenAI#embed_batch"]
  Woods__Embedding__Provider__OpenAI_dimensions["Woods::Embedding::Provider::OpenAI#dimensions"]
  DIMENSIONS["DIMENSIONS"]
  Woods__Embedding__Provider__OpenAI_dimensions -->|method_call| DIMENSIONS
  Woods__Embedding__Provider__OpenAI_model_name["Woods::Embedding::Provider::OpenAI#model_name"]
  Woods__Embedding__Provider__OpenAI_post_request["Woods::Embedding::Provider::OpenAI#post_request"]
  Net__HTTP["Net::HTTP"]
  Woods__Embedding__Provider__OpenAI_post_request -->|method_call| Net__HTTP
  Net__HTTP__Post["Net::HTTP::Post"]
  Woods__Embedding__Provider__OpenAI_post_request -->|method_call| Net__HTTP__Post
  Woods__Embedding__Provider__OpenAI_post_request -->|method_call| JSON
  Woods__Embedding__Provider__Interface["Woods::Embedding::Provider::Interface"]
  Woods__Embedding__Provider__Ollama["Woods::Embedding::Provider::Ollama"]
  Woods__Embedding__Provider__Ollama -->|include| Interface
  Woods__Embedding__Provider__Interface_embed["Woods::Embedding::Provider::Interface#embed"]
  Woods__Embedding__Provider__Interface_embed_batch["Woods::Embedding::Provider::Interface#embed_batch"]
  Woods__Embedding__Provider__Interface_dimensions["Woods::Embedding::Provider::Interface#dimensions"]
  Woods__Embedding__Provider__Interface_model_name["Woods::Embedding::Provider::Interface#model_name"]
  Woods__Embedding__Provider__Ollama_initialize["Woods::Embedding::Provider::Ollama#initialize"]
  Woods__Embedding__Provider__Ollama_embed["Woods::Embedding::Provider::Ollama#embed"]
  Woods__Embedding__Provider__Ollama_embed_batch["Woods::Embedding::Provider::Ollama#embed_batch"]
  Woods__Embedding__Provider__Ollama_dimensions["Woods::Embedding::Provider::Ollama#dimensions"]
  Woods__Embedding__Provider__Ollama_model_name["Woods::Embedding::Provider::Ollama#model_name"]
  Woods__Embedding__Provider__Ollama_post_request["Woods::Embedding::Provider::Ollama#post_request"]
  Woods__Embedding__Provider__Ollama_post_request -->|method_call| Net__HTTP
  Woods__Embedding__Provider__Ollama_post_request -->|method_call| Net__HTTP__Post
  Woods__Embedding__Provider__Ollama_post_request -->|method_call| JSON
  Woods__Embedding__TextPreparer["Woods::Embedding::TextPreparer"]
  Woods__Embedding__TextPreparer_initialize["Woods::Embedding::TextPreparer#initialize"]
  Woods__Embedding__TextPreparer_prepare["Woods::Embedding::TextPreparer#prepare"]
  Woods__Embedding__TextPreparer_prepare_chunks["Woods::Embedding::TextPreparer#prepare_chunks"]
  Woods__Embedding__TextPreparer_build_prefix["Woods::Embedding::TextPreparer#build_prefix"]
  Woods__Embedding__TextPreparer_append_dependency_line["Woods::Embedding::TextPreparer#append_dependency_line"]
  Woods__Embedding__TextPreparer_select_content["Woods::Embedding::TextPreparer#select_content"]
  Woods__Embedding__TextPreparer_enforce_token_limit["Woods::Embedding::TextPreparer#enforce_token_limit"]
  Woods__Evaluation["Woods::Evaluation"]
  Woods__Evaluation__BaselineRunner["Woods::Evaluation::BaselineRunner"]
  Woods__Evaluation__BaselineRunner_initialize["Woods::Evaluation::BaselineRunner#initialize"]
  Woods__Evaluation__BaselineRunner_run["Woods::Evaluation::BaselineRunner#run"]
  VALID_STRATEGIES["VALID_STRATEGIES"]
  Woods__Evaluation__BaselineRunner_run -->|method_call| VALID_STRATEGIES
  Woods__Evaluation__BaselineRunner_run_grep["Woods::Evaluation::BaselineRunner#run_grep"]
  Woods__Evaluation__BaselineRunner_run_random["Woods::Evaluation::BaselineRunner#run_random"]
  Woods__Evaluation__BaselineRunner_run_file_level["Woods::Evaluation::BaselineRunner#run_file_level"]
  Woods__Evaluation__BaselineRunner_extract_keywords["Woods::Evaluation::BaselineRunner#extract_keywords"]
  Woods__Evaluation__Evaluator["Woods::Evaluation::Evaluator"]
  Woods__Evaluation__Evaluator_initialize["Woods::Evaluation::Evaluator#initialize"]
  Woods__Evaluation__Evaluator_evaluate["Woods::Evaluation::Evaluator#evaluate"]
  EvaluationReport["EvaluationReport"]
  Woods__Evaluation__Evaluator_evaluate -->|method_call| EvaluationReport
  Woods__Evaluation__Evaluator_evaluate_query["Woods::Evaluation::Evaluator#evaluate_query"]
  QueryResult["QueryResult"]
  Woods__Evaluation__Evaluator_evaluate_query -->|method_call| QueryResult
  Woods__Evaluation__Evaluator_extract_identifiers["Woods::Evaluation::Evaluator#extract_identifiers"]
  Woods__Evaluation__Evaluator_compute_scores["Woods::Evaluation::Evaluator#compute_scores"]
  Woods__Evaluation__Evaluator_compute_token_efficiency["Woods::Evaluation::Evaluator#compute_token_efficiency"]
  Metrics["Metrics"]
  Woods__Evaluation__Evaluator_compute_token_efficiency -->|method_call| Metrics
  Woods__Evaluation__Evaluator_compute_aggregates["Woods::Evaluation::Evaluator#compute_aggregates"]
  Woods__Evaluation__Evaluator_empty_aggregates["Woods::Evaluation::Evaluator#empty_aggregates"]
  Woods__Evaluation__Metrics["Woods::Evaluation::Metrics"]
  Woods__Evaluation__Metrics_precision_at_k["Woods::Evaluation::Metrics#precision_at_k"]
  Woods__Evaluation__Metrics_recall["Woods::Evaluation::Metrics#recall"]
  Woods__Evaluation__Metrics_mrr["Woods::Evaluation::Metrics#mrr"]
  Woods__Evaluation__Metrics_context_completeness["Woods::Evaluation::Metrics#context_completeness"]
  Woods__Evaluation__Metrics_token_efficiency["Woods::Evaluation::Metrics#token_efficiency"]
  Woods__Evaluation__QuerySet["Woods::Evaluation::QuerySet"]
  Woods__Evaluation__QuerySet_initialize["Woods::Evaluation::QuerySet#initialize"]
  Woods__Evaluation__QuerySet_load["Woods::Evaluation::QuerySet.load"]
  Woods__Evaluation__QuerySet_load -->|method_call| JSON
  Woods__Evaluation__QuerySet_save["Woods::Evaluation::QuerySet#save"]
  Woods__Evaluation__QuerySet_save -->|method_call| File
  Woods__Evaluation__QuerySet_filter["Woods::Evaluation::QuerySet#filter"]
  Woods__Evaluation__QuerySet_add["Woods::Evaluation::QuerySet#add"]
  Woods__Evaluation__QuerySet_size["Woods::Evaluation::QuerySet#size"]
  Woods__Evaluation__QuerySet_parse_query["Woods::Evaluation::QuerySet.parse_query"]
  Query["Query"]
  Woods__Evaluation__QuerySet_parse_query -->|method_call| Query
  Woods__Evaluation__QuerySet_serialize_query["Woods::Evaluation::QuerySet#serialize_query"]
  Woods__Evaluation__QuerySet_validate_query_["Woods::Evaluation::QuerySet#validate_query!"]
  VALID_INTENTS["VALID_INTENTS"]
  Woods__Evaluation__QuerySet_validate_query_ -->|method_call| VALID_INTENTS
  VALID_SCOPES["VALID_SCOPES"]
  Woods__Evaluation__QuerySet_validate_query_ -->|method_call| VALID_SCOPES
  Woods__Evaluation__ReportGenerator["Woods::Evaluation::ReportGenerator"]
  Woods__Evaluation__ReportGenerator_generate["Woods::Evaluation::ReportGenerator#generate"]
  Woods__Evaluation__ReportGenerator_generate -->|method_call| JSON
  Woods__Evaluation__ReportGenerator_save["Woods::Evaluation::ReportGenerator#save"]
  Woods__Evaluation__ReportGenerator_save -->|method_call| FileUtils
  Woods__Evaluation__ReportGenerator_save -->|method_call| File
  Woods__Evaluation__ReportGenerator_build_report_hash["Woods::Evaluation::ReportGenerator#build_report_hash"]
  Woods__Evaluation__ReportGenerator_build_metadata["Woods::Evaluation::ReportGenerator#build_metadata"]
  Woods__Evaluation__ReportGenerator_serialize_aggregates["Woods::Evaluation::ReportGenerator#serialize_aggregates"]
  Woods__Evaluation__ReportGenerator_serialize_result["Woods::Evaluation::ReportGenerator#serialize_result"]
  Woods__ExtractedUnit["Woods::ExtractedUnit"]
  Woods__ExtractedUnit_initialize["Woods::ExtractedUnit#initialize"]
  Woods__ExtractedUnit_to_h["Woods::ExtractedUnit#to_h"]
  Woods__ExtractedUnit_estimated_tokens["Woods::ExtractedUnit#estimated_tokens"]
  Woods__ExtractedUnit_needs_chunking_["Woods::ExtractedUnit#needs_chunking?"]
  Woods__ExtractedUnit_build_default_chunks["Woods::ExtractedUnit#build_default_chunks"]
  Woods__ExtractedUnit_build_chunk_header["Woods::ExtractedUnit#build_chunk_header"]
  Woods__Extractor["Woods::Extractor"]
  Woods__Extractor_initialize["Woods::Extractor#initialize"]
  Pathname["Pathname"]
  Woods__Extractor_initialize -->|method_call| Pathname
  DependencyGraph["DependencyGraph"]
  Woods__Extractor_initialize -->|method_call| DependencyGraph
  Woods__Extractor_extract_all["Woods::Extractor#extract_all"]
  ModelNameCache["ModelNameCache"]
  Woods__Extractor_extract_all -->|method_call| ModelNameCache
  Woods_configuration["Woods.configuration"]
  Woods__Extractor_extract_all -->|method_call| Woods_configuration
  Woods__Extractor_extract_all -->|method_call| Woods
  Rails_logger["Rails.logger"]
  Woods__Extractor_extract_all -->|method_call| Rails_logger
  Woods__Extractor_extract_all -->|method_call| Rails
  GraphAnalyzer_new["GraphAnalyzer.new"]
  Woods__Extractor_extract_all -->|method_call| GraphAnalyzer_new
  GraphAnalyzer["GraphAnalyzer"]
  Woods__Extractor_extract_all -->|method_call| GraphAnalyzer
  Woods__Extractor_extract_changed["Woods::Extractor#extract_changed"]
  Woods__Extractor_extract_changed -->|method_call| DependencyGraph
  Woods__Extractor_extract_changed -->|method_call| ModelNameCache
  Pathname_new["Pathname.new"]
  Woods__Extractor_extract_changed -->|method_call| Pathname_new
  Woods__Extractor_extract_changed -->|method_call| Pathname
  Rails_root_join["Rails.root.join"]
  Woods__Extractor_extract_changed -->|method_call| Rails_root_join
  Rails_root["Rails.root"]
  Woods__Extractor_extract_changed -->|method_call| Rails_root
  Woods__Extractor_extract_changed -->|method_call| Rails
  Woods__Extractor_extract_changed -->|method_call| Rails_logger
  Woods__Extractor_extract_changed -->|method_call| Set
  Woods__Extractor_safe_eager_load_["Woods::Extractor#safe_eager_load!"]
  Rails_application["Rails.application"]
  Woods__Extractor_safe_eager_load_ -->|method_call| Rails_application
  Woods__Extractor_safe_eager_load_ -->|method_call| Rails
  Woods__Extractor_safe_eager_load_ -->|method_call| Rails_logger
  Woods__Extractor_eager_load_extraction_directories["Woods::Extractor#eager_load_extraction_directories"]
  Rails_autoloaders["Rails.autoloaders"]
  Woods__Extractor_eager_load_extraction_directories -->|method_call| Rails_autoloaders
  Woods__Extractor_eager_load_extraction_directories -->|method_call| Rails
  EXTRACTION_DIRECTORIES["EXTRACTION_DIRECTORIES"]
  Woods__Extractor_eager_load_extraction_directories -->|method_call| EXTRACTION_DIRECTORIES
  Woods__Extractor_eager_load_extraction_directories -->|method_call| Rails_root
  Woods__Extractor_eager_load_extraction_directories -->|method_call| Dir_glob
  Woods__Extractor_eager_load_extraction_directories -->|method_call| Rails_logger
  Woods__Extractor_extract_all_sequential["Woods::Extractor#extract_all_sequential"]
  EXTRACTORS["EXTRACTORS"]
  Woods__Extractor_extract_all_sequential -->|method_call| EXTRACTORS
  Woods__Extractor_extract_all_sequential -->|method_call| Rails_logger
  Woods__Extractor_extract_all_sequential -->|method_call| Rails
  Woods__Extractor_extract_all_sequential -->|method_call| Time
  Time_current["Time.current"]
  Woods__Extractor_extract_all_sequential -->|method_call| Time_current
  Woods__Extractor_extract_all_concurrent["Woods::Extractor#extract_all_concurrent"]
  Woods__Extractor_extract_all_concurrent -->|method_call| ModelNameCache
  Mutex["Mutex"]
  Woods__Extractor_extract_all_concurrent -->|method_call| Mutex
  Woods__Extractor_extract_all_concurrent -->|method_call| EXTRACTORS
  Thread["Thread"]
  Woods__Extractor_extract_all_concurrent -->|method_call| Thread
  Woods__Extractor_extract_all_concurrent -->|method_call| Rails_logger
  Woods__Extractor_extract_all_concurrent -->|method_call| Rails
  Woods__Extractor_extract_all_concurrent -->|method_call| Time
  Woods__Extractor_extract_all_concurrent -->|method_call| Time_current
  Woods__Extractor_setup_output_directory["Woods::Extractor#setup_output_directory"]
  Woods__Extractor_setup_output_directory -->|method_call| FileUtils
  Woods__Extractor_setup_output_directory -->|method_call| EXTRACTORS
  Woods__Extractor_resolve_dependents["Woods::Extractor#resolve_dependents"]
  Woods__Extractor_precompute_flows["Woods::Extractor#precompute_flows"]
  FlowPrecomputer["FlowPrecomputer"]
  Woods__Extractor_precompute_flows -->|method_call| FlowPrecomputer
  Woods__Extractor_precompute_flows -->|method_call| Rails_logger
  Woods__Extractor_precompute_flows -->|method_call| Rails
  Woods__Extractor_enrich_with_git_data["Woods::Extractor#enrich_with_git_data"]
  Woods__Extractor_enrich_with_git_data -->|method_call| File
  Woods__Extractor_git_available_["Woods::Extractor#git_available?"]
  Woods__Extractor_git_available_ -->|method_call| Open3
  Woods__Extractor_run_git["Woods::Extractor#run_git"]
  Woods__Extractor_run_git -->|method_call| Open3
  Woods__Extractor_batch_git_data["Woods::Extractor#batch_git_data"]
  Woods__Extractor_batch_git_data -->|method_call| Time_current
  Woods__Extractor_batch_git_data -->|method_call| Time
  Woods__Extractor_parse_git_log_output["Woods::Extractor#parse_git_log_output"]
  Hash["Hash"]
  Woods__Extractor_parse_git_log_output -->|method_call| Hash
  Woods__Extractor_classify_change_frequency["Woods::Extractor#classify_change_frequency"]
  Woods__Extractor_build_file_metadata["Woods::Extractor#build_file_metadata"]
  Woods__Extractor_write_results["Woods::Extractor#write_results"]
  Woods__Extractor_write_results -->|method_call| File
  Woods__Extractor_write_dependency_graph["Woods::Extractor#write_dependency_graph"]
  Woods__Extractor_write_dependency_graph -->|method_call| File
  Woods__Extractor_write_graph_analysis["Woods::Extractor#write_graph_analysis"]
  Woods__Extractor_write_graph_analysis -->|method_call| File
  Woods__Extractor_write_manifest["Woods::Extractor#write_manifest"]
  Woods__Extractor_write_manifest -->|method_call| File
  Woods__Extractor_write_structural_summary["Woods::Extractor#write_structural_summary"]
  Woods__Extractor_write_structural_summary -->|method_call| File
  Woods__Extractor_regenerate_type_index["Woods::Extractor#regenerate_type_index"]
  Dir___["Dir.[]"]
  Woods__Extractor_regenerate_type_index -->|method_call| Dir___
  Woods__Extractor_regenerate_type_index -->|method_call| File_basename
  Woods__Extractor_regenerate_type_index -->|method_call| File
  Woods__Extractor_regenerate_type_index -->|method_call| JSON
  Woods__Extractor_gemfile_lock_sha["Woods::Extractor#gemfile_lock_sha"]
  Woods__Extractor_gemfile_lock_sha -->|method_call| Rails_root
  Woods__Extractor_gemfile_lock_sha -->|method_call| Rails
  Digest__SHA256_file["Digest::SHA256.file"]
  Woods__Extractor_gemfile_lock_sha -->|method_call| Digest__SHA256_file
  Woods__Extractor_gemfile_lock_sha -->|method_call| Digest__SHA256
  Woods__Extractor_schema_sha["Woods::Extractor#schema_sha"]
  Woods__Extractor_schema_sha -->|method_call| Rails_root
  Woods__Extractor_schema_sha -->|method_call| Rails
  Woods__Extractor_schema_sha -->|method_call| Digest__SHA256_file
  Woods__Extractor_schema_sha -->|method_call| Digest__SHA256
  Woods__Extractor_safe_filename["Woods::Extractor#safe_filename"]
  Woods__Extractor_json_serialize["Woods::Extractor#json_serialize"]
  Woods__Extractor_json_serialize -->|method_call| Woods_configuration
  Woods__Extractor_json_serialize -->|method_call| Woods
  Woods__Extractor_json_serialize -->|method_call| JSON
  Woods__Extractor_log_summary["Woods::Extractor#log_summary"]
  Woods__Extractor_log_summary -->|method_call| Rails_logger
  Woods__Extractor_log_summary -->|method_call| Rails
  Woods__Extractor_re_extract_unit["Woods::Extractor#re_extract_unit"]
  Woods__Extractor_re_extract_unit -->|method_call| Rails_logger
  Woods__Extractor_re_extract_unit -->|method_call| Rails
  Woods__Extractor_re_extract_unit -->|method_call| File
  TYPE_TO_EXTRACTOR_KEY["TYPE_TO_EXTRACTOR_KEY"]
  Woods__Extractor_re_extract_unit -->|method_call| TYPE_TO_EXTRACTOR_KEY
  EXTRACTORS___["EXTRACTORS.[]"]
  Woods__Extractor_re_extract_unit -->|method_call| EXTRACTORS___
  Woods__Extractor_re_extract_unit -->|method_call| EXTRACTORS
  CLASS_BASED["CLASS_BASED"]
  Woods__Extractor_re_extract_unit -->|method_call| CLASS_BASED
  FILE_BASED["FILE_BASED"]
  Woods__Extractor_re_extract_unit -->|method_call| FILE_BASED
  GRAPHQL_TYPES["GRAPHQL_TYPES"]
  Woods__Extractor_re_extract_unit -->|method_call| GRAPHQL_TYPES
  Woods__Extractors["Woods::Extractors"]
  Woods__Extractors__ActionCableExtractor["Woods::Extractors::ActionCableExtractor"]
  SharedUtilityMethods["SharedUtilityMethods"]
  Woods__Extractors__ActionCableExtractor -->|include| SharedUtilityMethods
  SharedDependencyScanner["SharedDependencyScanner"]
  Woods__Extractors__ActionCableExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ActionCableExtractor_initialize["Woods::Extractors::ActionCableExtractor#initialize"]
  Woods__Extractors__ActionCableExtractor_extract_all["Woods::Extractors::ActionCableExtractor#extract_all"]
  Woods__Extractors__ActionCableExtractor_extract_channel["Woods::Extractors::ActionCableExtractor#extract_channel"]
  Woods__Extractors__ActionCableExtractor_extract_channel -->|method_call| ExtractedUnit
  Woods__Extractors__ActionCableExtractor_action_cable_available_["Woods::Extractors::ActionCableExtractor#action_cable_available?"]
  Woods__Extractors__ActionCableExtractor_channel_descendants["Woods::Extractors::ActionCableExtractor#channel_descendants"]
  ActionCable__Channel__Base_descendants["ActionCable::Channel::Base.descendants"]
  Woods__Extractors__ActionCableExtractor_channel_descendants -->|method_call| ActionCable__Channel__Base_descendants
  Woods__Extractors__ActionCableExtractor_discover_source_path["Woods::Extractors::ActionCableExtractor#discover_source_path"]
  Woods__Extractors__ActionCableExtractor_source_location_from_methods["Woods::Extractors::ActionCableExtractor#source_location_from_methods"]
  Woods__Extractors__ActionCableExtractor_convention_fallback["Woods::Extractors::ActionCableExtractor#convention_fallback"]
  Woods__Extractors__ActionCableExtractor_convention_fallback -->|method_call| Rails
  Woods__Extractors__ActionCableExtractor_convention_fallback -->|method_call| Rails_root_join
  Woods__Extractors__ActionCableExtractor_convention_fallback -->|method_call| Rails_root
  Woods__Extractors__ActionCableExtractor_convention_fallback -->|method_call| File
  Woods__Extractors__ActionCableExtractor_read_source["Woods::Extractors::ActionCableExtractor#read_source"]
  Woods__Extractors__ActionCableExtractor_read_source -->|method_call| File
  Woods__Extractors__ActionCableExtractor_build_metadata["Woods::Extractors::ActionCableExtractor#build_metadata"]
  Woods__Extractors__ActionCableExtractor_detect_stream_names["Woods::Extractors::ActionCableExtractor#detect_stream_names"]
  Woods__Extractors__ActionCableExtractor_detect_actions["Woods::Extractors::ActionCableExtractor#detect_actions"]
  Woods__Extractors__ActionCableExtractor_detect_broadcasts["Woods::Extractors::ActionCableExtractor#detect_broadcasts"]
  Woods__Extractors__ActionCableExtractor_count_loc["Woods::Extractors::ActionCableExtractor#count_loc"]
  Woods__Extractors__ActionCableExtractor_log_extraction_error["Woods::Extractors::ActionCableExtractor#log_extraction_error"]
  Woods__Extractors__ActionCableExtractor_log_extraction_error -->|method_call| Rails
  Woods__Extractors__ActionCableExtractor_log_extraction_error -->|method_call| Rails_logger
  Woods__Extractors__AstSourceExtraction["Woods::Extractors::AstSourceExtraction"]
  Woods__Extractors__AstSourceExtraction_extract_action_source["Woods::Extractors::AstSourceExtraction#extract_action_source"]
  Woods__Extractors__AstSourceExtraction_extract_action_source -->|method_call| File
  Ast__MethodExtractor_new["Ast::MethodExtractor.new"]
  Woods__Extractors__AstSourceExtraction_extract_action_source -->|method_call| Ast__MethodExtractor_new
  Ast__MethodExtractor["Ast::MethodExtractor"]
  Woods__Extractors__AstSourceExtraction_extract_action_source -->|method_call| Ast__MethodExtractor
  Woods__Extractors__AstSourceExtraction_extract_action_source -->|method_call| Rails_logger
  Woods__Extractors__AstSourceExtraction_extract_action_source -->|method_call| Rails
  Woods__Extractors__BehavioralProfile["Woods::Extractors::BehavioralProfile"]
  Woods__Extractors__BehavioralProfile_extract["Woods::Extractors::BehavioralProfile#extract"]
  Woods__Extractors__BehavioralProfile_extract -->|method_call| Rails_application
  Woods__Extractors__BehavioralProfile_extract -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_database["Woods::Extractors::BehavioralProfile#extract_database"]
  ActiveRecord__Base["ActiveRecord::Base"]
  Woods__Extractors__BehavioralProfile_extract_database -->|method_call| ActiveRecord__Base
  Woods__Extractors__BehavioralProfile_extract_database -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_database -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract_frameworks["Woods::Extractors::BehavioralProfile#extract_frameworks"]
  FRAMEWORK_CHECKS["FRAMEWORK_CHECKS"]
  Woods__Extractors__BehavioralProfile_extract_frameworks -->|method_call| FRAMEWORK_CHECKS
  Object["Object"]
  Woods__Extractors__BehavioralProfile_extract_frameworks -->|method_call| Object
  Woods__Extractors__BehavioralProfile_extract_frameworks -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_frameworks -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract_behavior_flags["Woods::Extractors::BehavioralProfile#extract_behavior_flags"]
  Woods__Extractors__BehavioralProfile_extract_behavior_flags -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_behavior_flags -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract_background["Woods::Extractors::BehavioralProfile#extract_background"]
  Woods__Extractors__BehavioralProfile_extract_background -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_background -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract_caching["Woods::Extractors::BehavioralProfile#extract_caching"]
  Woods__Extractors__BehavioralProfile_extract_caching -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_caching -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_extract_email["Woods::Extractors::BehavioralProfile#extract_email"]
  Woods__Extractors__BehavioralProfile_extract_email -->|method_call| Rails_logger
  Woods__Extractors__BehavioralProfile_extract_email -->|method_call| Rails
  Woods__Extractors__BehavioralProfile_build_unit["Woods::Extractors::BehavioralProfile#build_unit"]
  Woods__Extractors__BehavioralProfile_build_unit -->|method_call| ExtractedUnit
  Woods__Extractors__BehavioralProfile_build_narrative["Woods::Extractors::BehavioralProfile#build_narrative"]
  Woods__Extractors__BehavioralProfile_build_dependencies["Woods::Extractors::BehavioralProfile#build_dependencies"]
  Woods__Extractors__BehavioralProfile_build_dependencies -->|method_call| FRAMEWORK_CHECKS
  Woods__Extractors__BehavioralProfile_safe_read["Woods::Extractors::BehavioralProfile#safe_read"]
  Woods__Extractors__CachingExtractor["Woods::Extractors::CachingExtractor"]
  Woods__Extractors__CachingExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__CachingExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__CachingExtractor_initialize["Woods::Extractors::CachingExtractor#initialize"]
  Woods__Extractors__CachingExtractor_initialize -->|method_call| Rails
  Woods__Extractors__CachingExtractor_extract_all["Woods::Extractors::CachingExtractor#extract_all"]
  SCAN_PATTERNS["SCAN_PATTERNS"]
  Woods__Extractors__CachingExtractor_extract_all -->|method_call| SCAN_PATTERNS
  Woods__Extractors__CachingExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__CachingExtractor_extract_caching_file["Woods::Extractors::CachingExtractor#extract_caching_file"]
  Woods__Extractors__CachingExtractor_extract_caching_file -->|method_call| File
  Woods__Extractors__CachingExtractor_extract_caching_file -->|method_call| ExtractedUnit
  Woods__Extractors__CachingExtractor_extract_caching_file -->|method_call| Rails_logger
  Woods__Extractors__CachingExtractor_extract_caching_file -->|method_call| Rails
  Woods__Extractors__CachingExtractor_cache_usage_["Woods::Extractors::CachingExtractor#cache_usage?"]
  CACHE_PATTERNS_values["CACHE_PATTERNS.values"]
  Woods__Extractors__CachingExtractor_cache_usage_ -->|method_call| CACHE_PATTERNS_values
  Woods__Extractors__CachingExtractor_annotate_source["Woods::Extractors::CachingExtractor#annotate_source"]
  Woods__Extractors__CachingExtractor_extract_metadata["Woods::Extractors::CachingExtractor#extract_metadata"]
  Woods__Extractors__CachingExtractor_extract_cache_calls["Woods::Extractors::CachingExtractor#extract_cache_calls"]
  CACHE_PATTERNS["CACHE_PATTERNS"]
  Woods__Extractors__CachingExtractor_extract_cache_calls -->|method_call| CACHE_PATTERNS
  Woods__Extractors__CachingExtractor_extract_key_pattern["Woods::Extractors::CachingExtractor#extract_key_pattern"]
  Woods__Extractors__CachingExtractor_extract_ttl["Woods::Extractors::CachingExtractor#extract_ttl"]
  Woods__Extractors__CachingExtractor_infer_cache_strategy["Woods::Extractors::CachingExtractor#infer_cache_strategy"]
  Woods__Extractors__CachingExtractor_infer_file_type["Woods::Extractors::CachingExtractor#infer_file_type"]
  Woods__Extractors__CachingExtractor_relative_path["Woods::Extractors::CachingExtractor#relative_path"]
  Woods__Extractors__CachingExtractor_extract_dependencies["Woods::Extractors::CachingExtractor#extract_dependencies"]
  Woods__Extractors__CallbackAnalyzer["Woods::Extractors::CallbackAnalyzer"]
  Woods__Extractors__CallbackAnalyzer_initialize["Woods::Extractors::CallbackAnalyzer#initialize"]
  Ast__Parser["Ast::Parser"]
  Woods__Extractors__CallbackAnalyzer_initialize -->|method_call| Ast__Parser
  FlowAnalysis__OperationExtractor["FlowAnalysis::OperationExtractor"]
  Woods__Extractors__CallbackAnalyzer_initialize -->|method_call| FlowAnalysis__OperationExtractor
  Woods__Extractors__CallbackAnalyzer_analyze["Woods::Extractors::CallbackAnalyzer#analyze"]
  Woods__Extractors__CallbackAnalyzer_safe_parse["Woods::Extractors::CallbackAnalyzer#safe_parse"]
  Woods__Extractors__CallbackAnalyzer_find_method_node["Woods::Extractors::CallbackAnalyzer#find_method_node"]
  Woods__Extractors__CallbackAnalyzer_method_source_from_node["Woods::Extractors::CallbackAnalyzer#method_source_from_node"]
  Woods__Extractors__CallbackAnalyzer_valid_method_name_["Woods::Extractors::CallbackAnalyzer#valid_method_name?"]
  Woods__Extractors__CallbackAnalyzer_detect_columns_written["Woods::Extractors::CallbackAnalyzer#detect_columns_written"]
  Woods__Extractors__CallbackAnalyzer_detect_columns_written -->|method_call| Set
  SINGLE_COLUMN_WRITERS["SINGLE_COLUMN_WRITERS"]
  Woods__Extractors__CallbackAnalyzer_detect_columns_written -->|method_call| SINGLE_COLUMN_WRITERS
  MULTI_COLUMN_WRITERS["MULTI_COLUMN_WRITERS"]
  Woods__Extractors__CallbackAnalyzer_detect_columns_written -->|method_call| MULTI_COLUMN_WRITERS
  Woods__Extractors__CallbackAnalyzer_detect_jobs_enqueued["Woods::Extractors::CallbackAnalyzer#detect_jobs_enqueued"]
  ASYNC_METHODS_map["ASYNC_METHODS.map"]
  Woods__Extractors__CallbackAnalyzer_detect_jobs_enqueued -->|method_call| ASYNC_METHODS_map
  ASYNC_METHODS["ASYNC_METHODS"]
  Woods__Extractors__CallbackAnalyzer_detect_jobs_enqueued -->|method_call| ASYNC_METHODS
  Regexp["Regexp"]
  Woods__Extractors__CallbackAnalyzer_detect_jobs_enqueued -->|method_call| Regexp
  Woods__Extractors__CallbackAnalyzer_detect_services_called["Woods::Extractors::CallbackAnalyzer#detect_services_called"]
  Woods__Extractors__CallbackAnalyzer_detect_mailers_triggered["Woods::Extractors::CallbackAnalyzer#detect_mailers_triggered"]
  Woods__Extractors__CallbackAnalyzer_detect_database_reads["Woods::Extractors::CallbackAnalyzer#detect_database_reads"]
  DB_READ_METHODS["DB_READ_METHODS"]
  Woods__Extractors__CallbackAnalyzer_detect_database_reads -->|method_call| DB_READ_METHODS
  Woods__Extractors__CallbackAnalyzer_extract_operations["Woods::Extractors::CallbackAnalyzer#extract_operations"]
  Woods__Extractors__CallbackAnalyzer_empty_side_effects["Woods::Extractors::CallbackAnalyzer#empty_side_effects"]
  Woods__Extractors__ConcernExtractor["Woods::Extractors::ConcernExtractor"]
  Woods__Extractors__ConcernExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ConcernExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ConcernExtractor_initialize["Woods::Extractors::ConcernExtractor#initialize"]
  CONCERN_DIRECTORIES_map["CONCERN_DIRECTORIES.map"]
  Woods__Extractors__ConcernExtractor_initialize -->|method_call| CONCERN_DIRECTORIES_map
  CONCERN_DIRECTORIES["CONCERN_DIRECTORIES"]
  Woods__Extractors__ConcernExtractor_initialize -->|method_call| CONCERN_DIRECTORIES
  Woods__Extractors__ConcernExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ConcernExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ConcernExtractor_extract_all["Woods::Extractors::ConcernExtractor#extract_all"]
  Woods__Extractors__ConcernExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__ConcernExtractor_extract_concern_file["Woods::Extractors::ConcernExtractor#extract_concern_file"]
  Woods__Extractors__ConcernExtractor_extract_concern_file -->|method_call| File
  Woods__Extractors__ConcernExtractor_extract_concern_file -->|method_call| ExtractedUnit
  Woods__Extractors__ConcernExtractor_extract_concern_file -->|method_call| Rails_logger
  Woods__Extractors__ConcernExtractor_extract_concern_file -->|method_call| Rails
  Woods__Extractors__ConcernExtractor_extract_module_name["Woods::Extractors::ConcernExtractor#extract_module_name"]
  Woods__Extractors__ConcernExtractor_concern_module_["Woods::Extractors::ConcernExtractor#concern_module?"]
  Woods__Extractors__ConcernExtractor_annotate_source["Woods::Extractors::ConcernExtractor#annotate_source"]
  Woods__Extractors__ConcernExtractor_extract_metadata["Woods::Extractors::ConcernExtractor#extract_metadata"]
  Woods__Extractors__ConcernExtractor_detect_concern_type["Woods::Extractors::ConcernExtractor#detect_concern_type"]
  Woods__Extractors__ConcernExtractor_detect_concern_scope["Woods::Extractors::ConcernExtractor#detect_concern_scope"]
  Woods__Extractors__ConcernExtractor_extract_instance_method_names["Woods::Extractors::ConcernExtractor#extract_instance_method_names"]
  Woods__Extractors__ConcernExtractor_detect_included_modules["Woods::Extractors::ConcernExtractor#detect_included_modules"]
  Woods__Extractors__ConcernExtractor_detect_callbacks["Woods::Extractors::ConcernExtractor#detect_callbacks"]
  Woods__Extractors__ConcernExtractor_detect_scopes["Woods::Extractors::ConcernExtractor#detect_scopes"]
  Woods__Extractors__ConcernExtractor_detect_validations["Woods::Extractors::ConcernExtractor#detect_validations"]
  Woods__Extractors__ConcernExtractor_extract_dependencies["Woods::Extractors::ConcernExtractor#extract_dependencies"]
  Woods__Extractors__ConfigurationExtractor["Woods::Extractors::ConfigurationExtractor"]
  Woods__Extractors__ConfigurationExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ConfigurationExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ConfigurationExtractor_initialize["Woods::Extractors::ConfigurationExtractor#initialize"]
  CONFIG_DIRECTORIES_map["CONFIG_DIRECTORIES.map"]
  Woods__Extractors__ConfigurationExtractor_initialize -->|method_call| CONFIG_DIRECTORIES_map
  CONFIG_DIRECTORIES["CONFIG_DIRECTORIES"]
  Woods__Extractors__ConfigurationExtractor_initialize -->|method_call| CONFIG_DIRECTORIES
  Woods__Extractors__ConfigurationExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ConfigurationExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ConfigurationExtractor_extract_all["Woods::Extractors::ConfigurationExtractor#extract_all"]
  Woods__Extractors__ConfigurationExtractor_extract_all -->|method_call| Dir___
  BehavioralProfile_new["BehavioralProfile.new"]
  Woods__Extractors__ConfigurationExtractor_extract_all -->|method_call| BehavioralProfile_new
  BehavioralProfile["BehavioralProfile"]
  Woods__Extractors__ConfigurationExtractor_extract_all -->|method_call| BehavioralProfile
  Woods__Extractors__ConfigurationExtractor_extract_all -->|method_call| Rails_logger
  Woods__Extractors__ConfigurationExtractor_extract_all -->|method_call| Rails
  Woods__Extractors__ConfigurationExtractor_extract_configuration_file["Woods::Extractors::ConfigurationExtractor#extract_configuration_file"]
  Woods__Extractors__ConfigurationExtractor_extract_configuration_file -->|method_call| File
  Woods__Extractors__ConfigurationExtractor_extract_configuration_file -->|method_call| ExtractedUnit
  Woods__Extractors__ConfigurationExtractor_extract_configuration_file -->|method_call| Rails_logger
  Woods__Extractors__ConfigurationExtractor_extract_configuration_file -->|method_call| Rails
  Woods__Extractors__ConfigurationExtractor_build_identifier["Woods::Extractors::ConfigurationExtractor#build_identifier"]
  Woods__Extractors__ConfigurationExtractor_detect_config_type["Woods::Extractors::ConfigurationExtractor#detect_config_type"]
  Woods__Extractors__ConfigurationExtractor_annotate_source["Woods::Extractors::ConfigurationExtractor#annotate_source"]
  Woods__Extractors__ConfigurationExtractor_extract_metadata["Woods::Extractors::ConfigurationExtractor#extract_metadata"]
  Woods__Extractors__ConfigurationExtractor_detect_gem_references["Woods::Extractors::ConfigurationExtractor#detect_gem_references"]
  Woods__Extractors__ConfigurationExtractor_detect_config_settings["Woods::Extractors::ConfigurationExtractor#detect_config_settings"]
  Woods__Extractors__ConfigurationExtractor_detect_rails_config_blocks["Woods::Extractors::ConfigurationExtractor#detect_rails_config_blocks"]
  Woods__Extractors__ConfigurationExtractor_generic_config_name_["Woods::Extractors::ConfigurationExtractor#generic_config_name?"]
  Woods__Extractors__ConfigurationExtractor_extract_dependencies["Woods::Extractors::ConfigurationExtractor#extract_dependencies"]
  Woods__Extractors__ControllerExtractor["Woods::Extractors::ControllerExtractor"]
  AstSourceExtraction["AstSourceExtraction"]
  Woods__Extractors__ControllerExtractor -->|include| AstSourceExtraction
  Woods__Extractors__ControllerExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ControllerExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ControllerExtractor_initialize["Woods::Extractors::ControllerExtractor#initialize"]
  Woods__Extractors__ControllerExtractor_extract_all["Woods::Extractors::ControllerExtractor#extract_all"]
  ApplicationController["ApplicationController"]
  Woods__Extractors__ControllerExtractor_extract_all -->|method_call| ApplicationController
  Woods__Extractors__ControllerExtractor_extract_controller["Woods::Extractors::ControllerExtractor#extract_controller"]
  Woods__Extractors__ControllerExtractor_extract_controller -->|method_call| ExtractedUnit
  Woods__Extractors__ControllerExtractor_extract_controller -->|method_call| File
  Woods__Extractors__ControllerExtractor_extract_controller -->|method_call| Rails_logger
  Woods__Extractors__ControllerExtractor_extract_controller -->|method_call| Rails
  Woods__Extractors__ControllerExtractor_build_routes_map["Woods::Extractors::ControllerExtractor#build_routes_map"]
  Rails_application_routes_routes["Rails.application.routes.routes"]
  Woods__Extractors__ControllerExtractor_build_routes_map -->|method_call| Rails_application_routes_routes
  Woods__Extractors__ControllerExtractor_extract_verb["Woods::Extractors::ControllerExtractor#extract_verb"]
  Woods__Extractors__ControllerExtractor_source_file_for["Woods::Extractors::ControllerExtractor#source_file_for"]
  Woods__Extractors__ControllerExtractor_source_file_for -->|method_call| Rails_root_join
  Woods__Extractors__ControllerExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__ControllerExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__ControllerExtractor_build_composite_source["Woods::Extractors::ControllerExtractor#build_composite_source"]
  Woods__Extractors__ControllerExtractor_build_composite_source -->|method_call| File
  Woods__Extractors__ControllerExtractor_build_routes_comment["Woods::Extractors::ControllerExtractor#build_routes_comment"]
  Woods__Extractors__ControllerExtractor_build_filters_comment["Woods::Extractors::ControllerExtractor#build_filters_comment"]
  Woods__Extractors__ControllerExtractor_extract_filter_chain["Woods::Extractors::ControllerExtractor#extract_filter_chain"]
  Woods__Extractors__ControllerExtractor_extract_callback_conditions["Woods::Extractors::ControllerExtractor#extract_callback_conditions"]
  Woods__Extractors__ControllerExtractor_extract_action_filter_actions["Woods::Extractors::ControllerExtractor#extract_action_filter_actions"]
  Woods__Extractors__ControllerExtractor_condition_label["Woods::Extractors::ControllerExtractor#condition_label"]
  Woods__Extractors__ControllerExtractor_extract_metadata["Woods::Extractors::ControllerExtractor#extract_metadata"]
  Woods__Extractors__ControllerExtractor_extract_included_concerns["Woods::Extractors::ControllerExtractor#extract_included_concerns"]
  Woods__Extractors__ControllerExtractor_extract_respond_formats["Woods::Extractors::ControllerExtractor#extract_respond_formats"]
  Woods__Extractors__ControllerExtractor_extract_respond_formats -->|method_call| File
  Woods__Extractors__ControllerExtractor_extract_permitted_params["Woods::Extractors::ControllerExtractor#extract_permitted_params"]
  Woods__Extractors__ControllerExtractor_extract_permitted_params -->|method_call| File
  Woods__Extractors__ControllerExtractor_extract_dependencies["Woods::Extractors::ControllerExtractor#extract_dependencies"]
  Woods__Extractors__ControllerExtractor_extract_dependencies -->|method_call| File
  Woods__Extractors__ControllerExtractor_build_action_chunks["Woods::Extractors::ControllerExtractor#build_action_chunks"]
  Woods__Extractors__ControllerExtractor_applicable_filters["Woods::Extractors::ControllerExtractor#applicable_filters"]
  Woods__Extractors__ControllerExtractor_callback_applies_to_action_["Woods::Extractors::ControllerExtractor#callback_applies_to_action?"]
  Woods__Extractors__DatabaseViewExtractor["Woods::Extractors::DatabaseViewExtractor"]
  Woods__Extractors__DatabaseViewExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__DatabaseViewExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__DatabaseViewExtractor_initialize["Woods::Extractors::DatabaseViewExtractor#initialize"]
  Woods__Extractors__DatabaseViewExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__DatabaseViewExtractor_initialize -->|method_call| Rails
  Woods__Extractors__DatabaseViewExtractor_extract_all["Woods::Extractors::DatabaseViewExtractor#extract_all"]
  Woods__Extractors__DatabaseViewExtractor_extract_view_file["Woods::Extractors::DatabaseViewExtractor#extract_view_file"]
  Woods__Extractors__DatabaseViewExtractor_extract_view_file -->|method_call| File
  Woods__Extractors__DatabaseViewExtractor_extract_view_file -->|method_call| ExtractedUnit
  Woods__Extractors__DatabaseViewExtractor_extract_view_file -->|method_call| Rails_logger
  Woods__Extractors__DatabaseViewExtractor_extract_view_file -->|method_call| Rails
  Woods__Extractors__DatabaseViewExtractor_latest_view_files["Woods::Extractors::DatabaseViewExtractor#latest_view_files"]
  Woods__Extractors__DatabaseViewExtractor_latest_view_files -->|method_call| Dir___
  Woods__Extractors__DatabaseViewExtractor_latest_view_files -->|method_call| File_basename
  Woods__Extractors__DatabaseViewExtractor_latest_view_files -->|method_call| File
  Woods__Extractors__DatabaseViewExtractor_extract_view_name["Woods::Extractors::DatabaseViewExtractor#extract_view_name"]
  Woods__Extractors__DatabaseViewExtractor_extract_view_name -->|method_call| File
  Woods__Extractors__DatabaseViewExtractor_extract_version["Woods::Extractors::DatabaseViewExtractor#extract_version"]
  Woods__Extractors__DatabaseViewExtractor_extract_version -->|method_call| File
  Woods__Extractors__DatabaseViewExtractor_annotate_source["Woods::Extractors::DatabaseViewExtractor#annotate_source"]
  Woods__Extractors__DatabaseViewExtractor_extract_metadata["Woods::Extractors::DatabaseViewExtractor#extract_metadata"]
  Woods__Extractors__DatabaseViewExtractor_materialized_view_["Woods::Extractors::DatabaseViewExtractor#materialized_view?"]
  Woods__Extractors__DatabaseViewExtractor_extract_referenced_tables["Woods::Extractors::DatabaseViewExtractor#extract_referenced_tables"]
  Woods__Extractors__DatabaseViewExtractor_extract_selected_columns["Woods::Extractors::DatabaseViewExtractor#extract_selected_columns"]
  Woods__Extractors__DatabaseViewExtractor_sql_keyword_["Woods::Extractors::DatabaseViewExtractor#sql_keyword?"]
  SQL_KEYWORDS["SQL_KEYWORDS"]
  Woods__Extractors__DatabaseViewExtractor_sql_keyword_ -->|method_call| SQL_KEYWORDS
  Woods__Extractors__DatabaseViewExtractor_extract_dependencies["Woods::Extractors::DatabaseViewExtractor#extract_dependencies"]
  INTERNAL_TABLES["INTERNAL_TABLES"]
  Woods__Extractors__DatabaseViewExtractor_extract_dependencies -->|method_call| INTERNAL_TABLES
  Woods__Extractors__DecoratorExtractor["Woods::Extractors::DecoratorExtractor"]
  Woods__Extractors__DecoratorExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__DecoratorExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__DecoratorExtractor_initialize["Woods::Extractors::DecoratorExtractor#initialize"]
  DECORATOR_DIRECTORIES_map["DECORATOR_DIRECTORIES.map"]
  Woods__Extractors__DecoratorExtractor_initialize -->|method_call| DECORATOR_DIRECTORIES_map
  DECORATOR_DIRECTORIES["DECORATOR_DIRECTORIES"]
  Woods__Extractors__DecoratorExtractor_initialize -->|method_call| DECORATOR_DIRECTORIES
  Woods__Extractors__DecoratorExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__DecoratorExtractor_initialize -->|method_call| Rails
  Woods__Extractors__DecoratorExtractor_extract_all["Woods::Extractors::DecoratorExtractor#extract_all"]
  Woods__Extractors__DecoratorExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__DecoratorExtractor_extract_decorator_file["Woods::Extractors::DecoratorExtractor#extract_decorator_file"]
  Woods__Extractors__DecoratorExtractor_extract_decorator_file -->|method_call| File
  Woods__Extractors__DecoratorExtractor_extract_decorator_file -->|method_call| ExtractedUnit
  Woods__Extractors__DecoratorExtractor_extract_decorator_file -->|method_call| Rails_logger
  Woods__Extractors__DecoratorExtractor_extract_decorator_file -->|method_call| Rails
  Woods__Extractors__DecoratorExtractor_extract_class_name["Woods::Extractors::DecoratorExtractor#extract_class_name"]
  Woods__Extractors__DecoratorExtractor_skip_file_["Woods::Extractors::DecoratorExtractor#skip_file?"]
  Woods__Extractors__DecoratorExtractor_annotate_source["Woods::Extractors::DecoratorExtractor#annotate_source"]
  Woods__Extractors__DecoratorExtractor_extract_metadata["Woods::Extractors::DecoratorExtractor#extract_metadata"]
  Woods__Extractors__DecoratorExtractor_infer_decorator_type["Woods::Extractors::DecoratorExtractor#infer_decorator_type"]
  DIRECTORY_TYPE_MAP["DIRECTORY_TYPE_MAP"]
  Woods__Extractors__DecoratorExtractor_infer_decorator_type -->|method_call| DIRECTORY_TYPE_MAP
  Woods__Extractors__DecoratorExtractor_infer_decorated_model["Woods::Extractors::DecoratorExtractor#infer_decorated_model"]
  DECORATOR_SUFFIXES["DECORATOR_SUFFIXES"]
  Woods__Extractors__DecoratorExtractor_infer_decorated_model -->|method_call| DECORATOR_SUFFIXES
  Woods__Extractors__DecoratorExtractor_draper_["Woods::Extractors::DecoratorExtractor#draper?"]
  Woods__Extractors__DecoratorExtractor_extract_delegated_methods["Woods::Extractors::DecoratorExtractor#extract_delegated_methods"]
  Woods__Extractors__DecoratorExtractor_detect_entry_points["Woods::Extractors::DecoratorExtractor#detect_entry_points"]
  Woods__Extractors__DecoratorExtractor_extract_dependencies["Woods::Extractors::DecoratorExtractor#extract_dependencies"]
  Woods__Extractors__EngineExtractor["Woods::Extractors::EngineExtractor"]
  Woods__Extractors__EngineExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__EngineExtractor_initialize["Woods::Extractors::EngineExtractor#initialize"]
  Woods__Extractors__EngineExtractor_extract_all["Woods::Extractors::EngineExtractor#extract_all"]
  Woods__Extractors__EngineExtractor_engines_available_["Woods::Extractors::EngineExtractor#engines_available?"]
  Woods__Extractors__EngineExtractor_engines_available_ -->|method_call| Rails
  Woods__Extractors__EngineExtractor_engines_available_ -->|method_call| Rails_application
  Woods__Extractors__EngineExtractor_engine_subclasses["Woods::Extractors::EngineExtractor#engine_subclasses"]
  Rails__Engine["Rails::Engine"]
  Woods__Extractors__EngineExtractor_engine_subclasses -->|method_call| Rails__Engine
  ObjectSpace_each_object["ObjectSpace.each_object"]
  Woods__Extractors__EngineExtractor_engine_subclasses -->|method_call| ObjectSpace_each_object
  Woods__Extractors__EngineExtractor_build_mount_map["Woods::Extractors::EngineExtractor#build_mount_map"]
  Woods__Extractors__EngineExtractor_build_mount_map -->|method_call| Rails_application_routes_routes
  Woods__Extractors__EngineExtractor_engine_class_["Woods::Extractors::EngineExtractor#engine_class?"]
  Woods__Extractors__EngineExtractor_extract_mount_path["Woods::Extractors::EngineExtractor#extract_mount_path"]
  Woods__Extractors__EngineExtractor_extract_engine["Woods::Extractors::EngineExtractor#extract_engine"]
  Woods__Extractors__EngineExtractor_extract_engine -->|method_call| ExtractedUnit
  Woods__Extractors__EngineExtractor_extract_engine -->|method_call| Rails_logger
  Woods__Extractors__EngineExtractor_extract_engine -->|method_call| Rails
  Woods__Extractors__EngineExtractor_count_engine_routes["Woods::Extractors::EngineExtractor#count_engine_routes"]
  Woods__Extractors__EngineExtractor_extract_engine_controllers["Woods::Extractors::EngineExtractor#extract_engine_controllers"]
  Woods__Extractors__EngineExtractor_extract_engine_controllers -->|method_call| Set
  Woods__Extractors__EngineExtractor_build_engine_source["Woods::Extractors::EngineExtractor#build_engine_source"]
  Woods__Extractors__EngineExtractor_build_engine_dependencies["Woods::Extractors::EngineExtractor#build_engine_dependencies"]
  Woods__Extractors__EventExtractor["Woods::Extractors::EventExtractor"]
  Woods__Extractors__EventExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__EventExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__EventExtractor_initialize["Woods::Extractors::EventExtractor#initialize"]
  APP_DIRECTORIES_map["APP_DIRECTORIES.map"]
  Woods__Extractors__EventExtractor_initialize -->|method_call| APP_DIRECTORIES_map
  APP_DIRECTORIES["APP_DIRECTORIES"]
  Woods__Extractors__EventExtractor_initialize -->|method_call| APP_DIRECTORIES
  Woods__Extractors__EventExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__EventExtractor_initialize -->|method_call| Rails
  Woods__Extractors__EventExtractor_extract_all["Woods::Extractors::EventExtractor#extract_all"]
  Woods__Extractors__EventExtractor_scan_file["Woods::Extractors::EventExtractor#scan_file"]
  Woods__Extractors__EventExtractor_scan_file -->|method_call| File
  Woods__Extractors__EventExtractor_scan_file -->|method_call| Rails_logger
  Woods__Extractors__EventExtractor_scan_file -->|method_call| Rails
  Woods__Extractors__EventExtractor_scan_active_support_notifications["Woods::Extractors::EventExtractor#scan_active_support_notifications"]
  Woods__Extractors__EventExtractor_scan_wisper_patterns["Woods::Extractors::EventExtractor#scan_wisper_patterns"]
  Woods__Extractors__EventExtractor_register_publisher["Woods::Extractors::EventExtractor#register_publisher"]
  Woods__Extractors__EventExtractor_register_subscriber["Woods::Extractors::EventExtractor#register_subscriber"]
  Woods__Extractors__EventExtractor_build_unit["Woods::Extractors::EventExtractor#build_unit"]
  Woods__Extractors__EventExtractor_build_unit -->|method_call| ExtractedUnit
  Woods__Extractors__EventExtractor_load_source_files["Woods::Extractors::EventExtractor#load_source_files"]
  Woods__Extractors__EventExtractor_load_source_files -->|method_call| File
  Woods__Extractors__EventExtractor_build_source_annotation["Woods::Extractors::EventExtractor#build_source_annotation"]
  Woods__Extractors__EventExtractor_build_dependencies["Woods::Extractors::EventExtractor#build_dependencies"]
  Woods__Extractors__FactoryExtractor["Woods::Extractors::FactoryExtractor"]
  Woods__Extractors__FactoryExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__FactoryExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__FactoryExtractor_initialize["Woods::Extractors::FactoryExtractor#initialize"]
  FACTORY_DIRECTORIES_map["FACTORY_DIRECTORIES.map"]
  Woods__Extractors__FactoryExtractor_initialize -->|method_call| FACTORY_DIRECTORIES_map
  FACTORY_DIRECTORIES["FACTORY_DIRECTORIES"]
  Woods__Extractors__FactoryExtractor_initialize -->|method_call| FACTORY_DIRECTORIES
  Woods__Extractors__FactoryExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__FactoryExtractor_initialize -->|method_call| Rails
  Woods__Extractors__FactoryExtractor_extract_all["Woods::Extractors::FactoryExtractor#extract_all"]
  Woods__Extractors__FactoryExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__FactoryExtractor_extract_factory_file["Woods::Extractors::FactoryExtractor#extract_factory_file"]
  Woods__Extractors__FactoryExtractor_extract_factory_file -->|method_call| File
  Woods__Extractors__FactoryExtractor_extract_factory_file -->|method_call| Rails_logger
  Woods__Extractors__FactoryExtractor_extract_factory_file -->|method_call| Rails
  Woods__Extractors__FactoryExtractor_parse_factories["Woods::Extractors::FactoryExtractor#parse_factories"]
  Woods__Extractors__FactoryExtractor_match_factory["Woods::Extractors::FactoryExtractor#match_factory"]
  Woods__Extractors__FactoryExtractor_classify["Woods::Extractors::FactoryExtractor#classify"]
  Woods__Extractors__FactoryExtractor_block_opener_["Woods::Extractors::FactoryExtractor#block_opener?"]
  Woods__Extractors__FactoryExtractor_build_unit["Woods::Extractors::FactoryExtractor#build_unit"]
  Woods__Extractors__FactoryExtractor_build_unit -->|method_call| ExtractedUnit
  Woods__Extractors__FactoryExtractor_build_source_annotation["Woods::Extractors::FactoryExtractor#build_source_annotation"]
  Woods__Extractors__FactoryExtractor_build_metadata["Woods::Extractors::FactoryExtractor#build_metadata"]
  Woods__Extractors__FactoryExtractor_extract_dependencies["Woods::Extractors::FactoryExtractor#extract_dependencies"]
  Woods__Extractors__GraphQLExtractor["Woods::Extractors::GraphQLExtractor"]
  Woods__Extractors__GraphQLExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__GraphQLExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__GraphQLExtractor_initialize["Woods::Extractors::GraphQLExtractor#initialize"]
  Woods__Extractors__GraphQLExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__GraphQLExtractor_initialize -->|method_call| Rails
  Woods__Extractors__GraphQLExtractor_extract_all["Woods::Extractors::GraphQLExtractor#extract_all"]
  Woods__Extractors__GraphQLExtractor_extract_all -->|method_call| Set
  Woods__Extractors__GraphQLExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__GraphQLExtractor_extract_graphql_file["Woods::Extractors::GraphQLExtractor#extract_graphql_file"]
  Woods__Extractors__GraphQLExtractor_extract_graphql_file -->|method_call| File
  Woods__Extractors__GraphQLExtractor_extract_graphql_file -->|method_call| ExtractedUnit
  Woods__Extractors__GraphQLExtractor_extract_graphql_file -->|method_call| Rails_logger
  Woods__Extractors__GraphQLExtractor_extract_graphql_file -->|method_call| Rails
  Woods__Extractors__GraphQLExtractor_graphql_available_["Woods::Extractors::GraphQLExtractor#graphql_available?"]
  Woods__Extractors__GraphQLExtractor_find_schema_class["Woods::Extractors::GraphQLExtractor#find_schema_class"]
  GraphQL__Schema_descendants["GraphQL::Schema.descendants"]
  Woods__Extractors__GraphQLExtractor_find_schema_class -->|method_call| GraphQL__Schema_descendants
  Woods__Extractors__GraphQLExtractor_load_runtime_types["Woods::Extractors::GraphQLExtractor#load_runtime_types"]
  Woods__Extractors__GraphQLExtractor_extract_from_runtime_type["Woods::Extractors::GraphQLExtractor#extract_from_runtime_type"]
  Woods__Extractors__GraphQLExtractor_extract_from_runtime_type -->|method_call| File
  Woods__Extractors__GraphQLExtractor_extract_from_runtime_type -->|method_call| ExtractedUnit
  Woods__Extractors__GraphQLExtractor_extract_from_runtime_type -->|method_call| Rails_logger
  Woods__Extractors__GraphQLExtractor_extract_from_runtime_type -->|method_call| Rails
  Woods__Extractors__GraphQLExtractor_source_file_for_class["Woods::Extractors::GraphQLExtractor#source_file_for_class"]
  Woods__Extractors__GraphQLExtractor_source_file_for_class -->|method_call| Rails_root_join
  Woods__Extractors__GraphQLExtractor_source_file_for_class -->|method_call| Rails_root
  Woods__Extractors__GraphQLExtractor_source_file_for_class -->|method_call| Rails
  Woods__Extractors__GraphQLExtractor_classify_runtime_type["Woods::Extractors::GraphQLExtractor#classify_runtime_type"]
  Woods__Extractors__GraphQLExtractor_classify_unit_type["Woods::Extractors::GraphQLExtractor#classify_unit_type"]
  Woods__Extractors__GraphQLExtractor_graphql_class_["Woods::Extractors::GraphQLExtractor#graphql_class?"]
  Woods__Extractors__GraphQLExtractor_extract_class_name["Woods::Extractors::GraphQLExtractor#extract_class_name"]
  Woods__Extractors__GraphQLExtractor_build_annotated_source["Woods::Extractors::GraphQLExtractor#build_annotated_source"]
  Woods__Extractors__GraphQLExtractor_format_type_label["Woods::Extractors::GraphQLExtractor#format_type_label"]
  Woods__Extractors__GraphQLExtractor_build_metadata["Woods::Extractors::GraphQLExtractor#build_metadata"]
  Woods__Extractors__GraphQLExtractor_detect_graphql_kind["Woods::Extractors::GraphQLExtractor#detect_graphql_kind"]
  Woods__Extractors__GraphQLExtractor_extract_parent_class["Woods::Extractors::GraphQLExtractor#extract_parent_class"]
  Woods__Extractors__GraphQLExtractor_extract_fields["Woods::Extractors::GraphQLExtractor#extract_fields"]
  Woods__Extractors__GraphQLExtractor_extract_fields_from_runtime["Woods::Extractors::GraphQLExtractor#extract_fields_from_runtime"]
  Woods__Extractors__GraphQLExtractor_field_nullable_["Woods::Extractors::GraphQLExtractor#field_nullable?"]
  Woods__Extractors__GraphQLExtractor_extract_fields_from_source["Woods::Extractors::GraphQLExtractor#extract_fields_from_source"]
  Woods__Extractors__GraphQLExtractor_extract_arguments["Woods::Extractors::GraphQLExtractor#extract_arguments"]
  Woods__Extractors__GraphQLExtractor_extract_arguments_from_runtime["Woods::Extractors::GraphQLExtractor#extract_arguments_from_runtime"]
  Woods__Extractors__GraphQLExtractor_extract_arguments_from_source["Woods::Extractors::GraphQLExtractor#extract_arguments_from_source"]
  Woods__Extractors__GraphQLExtractor_extract_interfaces["Woods::Extractors::GraphQLExtractor#extract_interfaces"]
  Woods__Extractors__GraphQLExtractor_extract_connections["Woods::Extractors::GraphQLExtractor#extract_connections"]
  Woods__Extractors__GraphQLExtractor_extract_resolver_references["Woods::Extractors::GraphQLExtractor#extract_resolver_references"]
  Woods__Extractors__GraphQLExtractor_extract_authorization["Woods::Extractors::GraphQLExtractor#extract_authorization"]
  Woods__Extractors__GraphQLExtractor_extract_complexity["Woods::Extractors::GraphQLExtractor#extract_complexity"]
  Woods__Extractors__GraphQLExtractor_extract_enum_values["Woods::Extractors::GraphQLExtractor#extract_enum_values"]
  Woods__Extractors__GraphQLExtractor_extract_union_members["Woods::Extractors::GraphQLExtractor#extract_union_members"]
  Woods__Extractors__GraphQLExtractor_count_fields["Woods::Extractors::GraphQLExtractor#count_fields"]
  Woods__Extractors__GraphQLExtractor_count_arguments["Woods::Extractors::GraphQLExtractor#count_arguments"]
  Woods__Extractors__GraphQLExtractor_extract_dependencies["Woods::Extractors::GraphQLExtractor#extract_dependencies"]
  Woods__Extractors__GraphQLExtractor_build_chunks["Woods::Extractors::GraphQLExtractor#build_chunks"]
  Woods__Extractors__GraphQLExtractor_build_summary_chunk["Woods::Extractors::GraphQLExtractor#build_summary_chunk"]
  Woods__Extractors__GraphQLExtractor_build_field_group_chunk["Woods::Extractors::GraphQLExtractor#build_field_group_chunk"]
  Woods__Extractors__GraphQLExtractor_build_arguments_chunk["Woods::Extractors::GraphQLExtractor#build_arguments_chunk"]
  Woods__Extractors__I18nExtractor["Woods::Extractors::I18nExtractor"]
  Woods__Extractors__I18nExtractor_initialize["Woods::Extractors::I18nExtractor#initialize"]
  I18N_DIRECTORIES_map["I18N_DIRECTORIES.map"]
  Woods__Extractors__I18nExtractor_initialize -->|method_call| I18N_DIRECTORIES_map
  I18N_DIRECTORIES["I18N_DIRECTORIES"]
  Woods__Extractors__I18nExtractor_initialize -->|method_call| I18N_DIRECTORIES
  Woods__Extractors__I18nExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__I18nExtractor_initialize -->|method_call| Rails
  Woods__Extractors__I18nExtractor_extract_all["Woods::Extractors::I18nExtractor#extract_all"]
  Woods__Extractors__I18nExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__I18nExtractor_extract_i18n_file["Woods::Extractors::I18nExtractor#extract_i18n_file"]
  Woods__Extractors__I18nExtractor_extract_i18n_file -->|method_call| File
  YAML["YAML"]
  Woods__Extractors__I18nExtractor_extract_i18n_file -->|method_call| YAML
  Woods__Extractors__I18nExtractor_extract_i18n_file -->|method_call| ExtractedUnit
  Woods__Extractors__I18nExtractor_extract_i18n_file -->|method_call| Rails_logger
  Woods__Extractors__I18nExtractor_extract_i18n_file -->|method_call| Rails
  Woods__Extractors__I18nExtractor_build_identifier["Woods::Extractors::I18nExtractor#build_identifier"]
  Woods__Extractors__I18nExtractor_build_metadata["Woods::Extractors::I18nExtractor#build_metadata"]
  Woods__Extractors__I18nExtractor_flatten_keys["Woods::Extractors::I18nExtractor#flatten_keys"]
  Woods__Extractors__JobExtractor["Woods::Extractors::JobExtractor"]
  Woods__Extractors__JobExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__JobExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__JobExtractor_initialize["Woods::Extractors::JobExtractor#initialize"]
  JOB_DIRECTORIES_map["JOB_DIRECTORIES.map"]
  Woods__Extractors__JobExtractor_initialize -->|method_call| JOB_DIRECTORIES_map
  JOB_DIRECTORIES["JOB_DIRECTORIES"]
  Woods__Extractors__JobExtractor_initialize -->|method_call| JOB_DIRECTORIES
  Woods__Extractors__JobExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__JobExtractor_initialize -->|method_call| Rails
  Woods__Extractors__JobExtractor_extract_all["Woods::Extractors::JobExtractor#extract_all"]
  Woods__Extractors__JobExtractor_extract_all -->|method_call| Dir___
  ApplicationJob_descendants["ApplicationJob.descendants"]
  Woods__Extractors__JobExtractor_extract_all -->|method_call| ApplicationJob_descendants
  Woods__Extractors__JobExtractor_extract_job_file["Woods::Extractors::JobExtractor#extract_job_file"]
  Woods__Extractors__JobExtractor_extract_job_file -->|method_call| File
  Woods__Extractors__JobExtractor_extract_job_file -->|method_call| ExtractedUnit
  Woods__Extractors__JobExtractor_extract_job_file -->|method_call| Rails_logger
  Woods__Extractors__JobExtractor_extract_job_file -->|method_call| Rails
  Woods__Extractors__JobExtractor_extract_job_class["Woods::Extractors::JobExtractor#extract_job_class"]
  Woods__Extractors__JobExtractor_extract_job_class -->|method_call| File
  Woods__Extractors__JobExtractor_extract_job_class -->|method_call| ExtractedUnit
  Woods__Extractors__JobExtractor_extract_job_class -->|method_call| Rails_logger
  Woods__Extractors__JobExtractor_extract_job_class -->|method_call| Rails
  Woods__Extractors__JobExtractor_extract_class_name["Woods::Extractors::JobExtractor#extract_class_name"]
  Woods__Extractors__JobExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__JobExtractor_job_file_["Woods::Extractors::JobExtractor#job_file?"]
  Woods__Extractors__JobExtractor_source_file_for["Woods::Extractors::JobExtractor#source_file_for"]
  Woods__Extractors__JobExtractor_source_file_for -->|method_call| Rails_root_join
  Woods__Extractors__JobExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__JobExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__JobExtractor_annotate_source["Woods::Extractors::JobExtractor#annotate_source"]
  Woods__Extractors__JobExtractor_detect_job_type["Woods::Extractors::JobExtractor#detect_job_type"]
  Woods__Extractors__JobExtractor_extract_queue["Woods::Extractors::JobExtractor#extract_queue"]
  Woods__Extractors__JobExtractor_extract_queue -->|method_call| Regexp
  Woods__Extractors__JobExtractor_extract_metadata_from_source["Woods::Extractors::JobExtractor#extract_metadata_from_source"]
  Woods__Extractors__JobExtractor_extract_metadata_from_class["Woods::Extractors::JobExtractor#extract_metadata_from_class"]
  Woods__Extractors__JobExtractor_extract_sidekiq_options["Woods::Extractors::JobExtractor#extract_sidekiq_options"]
  Woods__Extractors__JobExtractor_extract_sidekiq_options -->|method_call| Regexp
  Woods__Extractors__JobExtractor_extract_retry_config["Woods::Extractors::JobExtractor#extract_retry_config"]
  Woods__Extractors__JobExtractor_extract_concurrency["Woods::Extractors::JobExtractor#extract_concurrency"]
  Woods__Extractors__JobExtractor_extract_perform_params["Woods::Extractors::JobExtractor#extract_perform_params"]
  Woods__Extractors__JobExtractor_extract_perform_params -->|method_call| Regexp
  Woods__Extractors__JobExtractor_extract_discard_on["Woods::Extractors::JobExtractor#extract_discard_on"]
  Woods__Extractors__JobExtractor_extract_retry_on["Woods::Extractors::JobExtractor#extract_retry_on"]
  Woods__Extractors__JobExtractor_extract_callbacks["Woods::Extractors::JobExtractor#extract_callbacks"]
  Woods__Extractors__JobExtractor_extract_dependencies["Woods::Extractors::JobExtractor#extract_dependencies"]
  Woods__Extractors__JobExtractor_extract_enqueued_jobs["Woods::Extractors::JobExtractor#extract_enqueued_jobs"]
  Woods__Extractors__MailerExtractor["Woods::Extractors::MailerExtractor"]
  Woods__Extractors__MailerExtractor -->|include| AstSourceExtraction
  Woods__Extractors__MailerExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__MailerExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__MailerExtractor_initialize["Woods::Extractors::MailerExtractor#initialize"]
  Woods__Extractors__MailerExtractor_extract_all["Woods::Extractors::MailerExtractor#extract_all"]
  Woods__Extractors__MailerExtractor_extract_mailer["Woods::Extractors::MailerExtractor#extract_mailer"]
  Woods__Extractors__MailerExtractor_extract_mailer -->|method_call| ExtractedUnit
  Woods__Extractors__MailerExtractor_extract_mailer -->|method_call| File
  Woods__Extractors__MailerExtractor_extract_mailer -->|method_call| Rails_logger
  Woods__Extractors__MailerExtractor_extract_mailer -->|method_call| Rails
  Woods__Extractors__MailerExtractor_source_file_for["Woods::Extractors::MailerExtractor#source_file_for"]
  Woods__Extractors__MailerExtractor_source_file_for -->|method_call| Rails_root_join
  Woods__Extractors__MailerExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__MailerExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__MailerExtractor_annotate_source["Woods::Extractors::MailerExtractor#annotate_source"]
  Woods__Extractors__MailerExtractor_extract_metadata["Woods::Extractors::MailerExtractor#extract_metadata"]
  Woods__Extractors__MailerExtractor_extract_defaults["Woods::Extractors::MailerExtractor#extract_defaults"]
  Woods__Extractors__MailerExtractor_extract_callbacks["Woods::Extractors::MailerExtractor#extract_callbacks"]
  Woods__Extractors__MailerExtractor_extract_callback_conditions["Woods::Extractors::MailerExtractor#extract_callback_conditions"]
  Woods__Extractors__MailerExtractor_extract_action_filter_actions["Woods::Extractors::MailerExtractor#extract_action_filter_actions"]
  Woods__Extractors__MailerExtractor_condition_label["Woods::Extractors::MailerExtractor#condition_label"]
  Woods__Extractors__MailerExtractor_extract_layout["Woods::Extractors::MailerExtractor#extract_layout"]
  Woods__Extractors__MailerExtractor_extract_layout -->|method_call| Regexp
  Woods__Extractors__MailerExtractor_extract_helpers["Woods::Extractors::MailerExtractor#extract_helpers"]
  Woods__Extractors__MailerExtractor_discover_templates["Woods::Extractors::MailerExtractor#discover_templates"]
  Woods__Extractors__MailerExtractor_discover_templates -->|method_call| Rails_root
  Woods__Extractors__MailerExtractor_discover_templates -->|method_call| Rails
  Woods__Extractors__MailerExtractor_extract_dependencies["Woods::Extractors::MailerExtractor#extract_dependencies"]
  Woods__Extractors__MailerExtractor_build_action_chunks["Woods::Extractors::MailerExtractor#build_action_chunks"]
  Woods__Extractors__ManagerExtractor["Woods::Extractors::ManagerExtractor"]
  Woods__Extractors__ManagerExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ManagerExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ManagerExtractor_initialize["Woods::Extractors::ManagerExtractor#initialize"]
  MANAGER_DIRECTORIES_map["MANAGER_DIRECTORIES.map"]
  Woods__Extractors__ManagerExtractor_initialize -->|method_call| MANAGER_DIRECTORIES_map
  MANAGER_DIRECTORIES["MANAGER_DIRECTORIES"]
  Woods__Extractors__ManagerExtractor_initialize -->|method_call| MANAGER_DIRECTORIES
  Woods__Extractors__ManagerExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ManagerExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ManagerExtractor_extract_all["Woods::Extractors::ManagerExtractor#extract_all"]
  Woods__Extractors__ManagerExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__ManagerExtractor_extract_manager_file["Woods::Extractors::ManagerExtractor#extract_manager_file"]
  Woods__Extractors__ManagerExtractor_extract_manager_file -->|method_call| File
  Woods__Extractors__ManagerExtractor_extract_manager_file -->|method_call| ExtractedUnit
  Woods__Extractors__ManagerExtractor_extract_manager_file -->|method_call| Rails_logger
  Woods__Extractors__ManagerExtractor_extract_manager_file -->|method_call| Rails
  Woods__Extractors__ManagerExtractor_extract_class_name["Woods::Extractors::ManagerExtractor#extract_class_name"]
  Woods__Extractors__ManagerExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__ManagerExtractor_manager_file_["Woods::Extractors::ManagerExtractor#manager_file?"]
  Woods__Extractors__ManagerExtractor_annotate_source["Woods::Extractors::ManagerExtractor#annotate_source"]
  Woods__Extractors__ManagerExtractor_extract_metadata["Woods::Extractors::ManagerExtractor#extract_metadata"]
  Woods__Extractors__ManagerExtractor_detect_wrapped_model["Woods::Extractors::ManagerExtractor#detect_wrapped_model"]
  Woods__Extractors__ManagerExtractor_detect_wrapped_model -->|method_call| Regexp
  Regexp_last_match["Regexp.last_match"]
  Woods__Extractors__ManagerExtractor_detect_wrapped_model -->|method_call| Regexp_last_match
  Woods__Extractors__ManagerExtractor_detect_delegation_type["Woods::Extractors::ManagerExtractor#detect_delegation_type"]
  Woods__Extractors__ManagerExtractor_extract_delegated_methods["Woods::Extractors::ManagerExtractor#extract_delegated_methods"]
  Woods__Extractors__ManagerExtractor_extract_overridden_methods["Woods::Extractors::ManagerExtractor#extract_overridden_methods"]
  Woods__Extractors__ManagerExtractor_extract_custom_errors["Woods::Extractors::ManagerExtractor#extract_custom_errors"]
  Woods__Extractors__ManagerExtractor_extract_dependencies["Woods::Extractors::ManagerExtractor#extract_dependencies"]
  Woods__Extractors__MiddlewareExtractor["Woods::Extractors::MiddlewareExtractor"]
  Woods__Extractors__MiddlewareExtractor_initialize["Woods::Extractors::MiddlewareExtractor#initialize"]
  Woods__Extractors__MiddlewareExtractor_extract_all["Woods::Extractors::MiddlewareExtractor#extract_all"]
  Woods__Extractors__MiddlewareExtractor_extract_all -->|method_call| Rails_application
  Woods__Extractors__MiddlewareExtractor_extract_all -->|method_call| Rails
  Woods__Extractors__MiddlewareExtractor_extract_all -->|method_call| ExtractedUnit
  Woods__Extractors__MiddlewareExtractor_extract_all -->|method_call| Rails_logger
  Woods__Extractors__MiddlewareExtractor_middleware_available_["Woods::Extractors::MiddlewareExtractor#middleware_available?"]
  Woods__Extractors__MiddlewareExtractor_middleware_available_ -->|method_call| Rails
  Woods__Extractors__MiddlewareExtractor_middleware_available_ -->|method_call| Rails_application
  Woods__Extractors__MiddlewareExtractor_extract_middleware_entries["Woods::Extractors::MiddlewareExtractor#extract_middleware_entries"]
  Woods__Extractors__MiddlewareExtractor_extract_single_middleware["Woods::Extractors::MiddlewareExtractor#extract_single_middleware"]
  Woods__Extractors__MiddlewareExtractor_build_stack_source["Woods::Extractors::MiddlewareExtractor#build_stack_source"]
  Woods__Extractors__MiddlewareExtractor_build_stack_metadata["Woods::Extractors::MiddlewareExtractor#build_stack_metadata"]
  Woods__Extractors__MigrationExtractor["Woods::Extractors::MigrationExtractor"]
  Woods__Extractors__MigrationExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__MigrationExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__MigrationExtractor_initialize["Woods::Extractors::MigrationExtractor#initialize"]
  Woods__Extractors__MigrationExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__MigrationExtractor_initialize -->|method_call| Rails
  Woods__Extractors__MigrationExtractor_extract_all["Woods::Extractors::MigrationExtractor#extract_all"]
  Woods__Extractors__MigrationExtractor_extract_all -->|method_call| Dir
  Woods__Extractors__MigrationExtractor_extract_migration_file["Woods::Extractors::MigrationExtractor#extract_migration_file"]
  Woods__Extractors__MigrationExtractor_extract_migration_file -->|method_call| File
  Woods__Extractors__MigrationExtractor_extract_migration_file -->|method_call| ExtractedUnit
  Woods__Extractors__MigrationExtractor_extract_migration_file -->|method_call| Rails_logger
  Woods__Extractors__MigrationExtractor_extract_migration_file -->|method_call| Rails
  Woods__Extractors__MigrationExtractor_extract_class_name["Woods::Extractors::MigrationExtractor#extract_class_name"]
  Woods__Extractors__MigrationExtractor_migration_class_["Woods::Extractors::MigrationExtractor#migration_class?"]
  Woods__Extractors__MigrationExtractor_extract_metadata["Woods::Extractors::MigrationExtractor#extract_metadata"]
  Woods__Extractors__MigrationExtractor_extract_migration_version["Woods::Extractors::MigrationExtractor#extract_migration_version"]
  Woods__Extractors__MigrationExtractor_extract_migration_version -->|method_call| File
  Woods__Extractors__MigrationExtractor_extract_rails_version["Woods::Extractors::MigrationExtractor#extract_rails_version"]
  Woods__Extractors__MigrationExtractor_detect_direction["Woods::Extractors::MigrationExtractor#detect_direction"]
  Woods__Extractors__MigrationExtractor_extract_tables_affected["Woods::Extractors::MigrationExtractor#extract_tables_affected"]
  TABLE_OPERATIONS["TABLE_OPERATIONS"]
  Woods__Extractors__MigrationExtractor_extract_tables_affected -->|method_call| TABLE_OPERATIONS
  Woods__Extractors__MigrationExtractor_extract_columns_added["Woods::Extractors::MigrationExtractor#extract_columns_added"]
  Woods__Extractors__MigrationExtractor_extract_columns_removed["Woods::Extractors::MigrationExtractor#extract_columns_removed"]
  Woods__Extractors__MigrationExtractor_extract_indexes_added["Woods::Extractors::MigrationExtractor#extract_indexes_added"]
  Woods__Extractors__MigrationExtractor_extract_indexes_removed["Woods::Extractors::MigrationExtractor#extract_indexes_removed"]
  Woods__Extractors__MigrationExtractor_extract_references_added["Woods::Extractors::MigrationExtractor#extract_references_added"]
  Woods__Extractors__MigrationExtractor_extract_references_removed["Woods::Extractors::MigrationExtractor#extract_references_removed"]
  Woods__Extractors__MigrationExtractor_extract_block_columns["Woods::Extractors::MigrationExtractor#extract_block_columns"]
  COLUMN_TYPE_METHODS["COLUMN_TYPE_METHODS"]
  Woods__Extractors__MigrationExtractor_extract_block_columns -->|method_call| COLUMN_TYPE_METHODS
  Woods__Extractors__MigrationExtractor_extract_explicit_column_calls["Woods::Extractors::MigrationExtractor#extract_explicit_column_calls"]
  Woods__Extractors__MigrationExtractor_extract_block_references["Woods::Extractors::MigrationExtractor#extract_block_references"]
  Woods__Extractors__MigrationExtractor_extract_operations["Woods::Extractors::MigrationExtractor#extract_operations"]
  Woods__Extractors__MigrationExtractor_extract_operations -->|method_call| Hash
  Woods__Extractors__MigrationExtractor_extract_operations -->|method_call| TABLE_OPERATIONS
  Woods__Extractors__MigrationExtractor_data_migration_["Woods::Extractors::MigrationExtractor#data_migration?"]
  DATA_MIGRATION_PATTERNS["DATA_MIGRATION_PATTERNS"]
  Woods__Extractors__MigrationExtractor_data_migration_ -->|method_call| DATA_MIGRATION_PATTERNS
  Woods__Extractors__MigrationExtractor_annotate_source["Woods::Extractors::MigrationExtractor#annotate_source"]
  Woods__Extractors__MigrationExtractor_extract_dependencies["Woods::Extractors::MigrationExtractor#extract_dependencies"]
  Woods__Extractors__MigrationExtractor_extract_dependencies -->|method_call| INTERNAL_TABLES
  Woods__Extractors__ModelExtractor["Woods::Extractors::ModelExtractor"]
  Woods__Extractors__ModelExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ModelExtractor_initialize["Woods::Extractors::ModelExtractor#initialize"]
  Woods__Extractors__ModelExtractor_extract_all["Woods::Extractors::ModelExtractor#extract_all"]
  ActiveRecord__Base_descendants_reject_reject_reject_map["ActiveRecord::Base.descendants.reject.reject.reject.map"]
  Woods__Extractors__ModelExtractor_extract_all -->|method_call| ActiveRecord__Base_descendants_reject_reject_reject_map
  ActiveRecord__Base_descendants_reject_reject_reject["ActiveRecord::Base.descendants.reject.reject.reject"]
  Woods__Extractors__ModelExtractor_extract_all -->|method_call| ActiveRecord__Base_descendants_reject_reject_reject
  Woods__Extractors__ModelExtractor_extract_model["Woods::Extractors::ModelExtractor#extract_model"]
  Woods__Extractors__ModelExtractor_extract_model -->|method_call| ExtractedUnit
  Woods__Extractors__ModelExtractor_extract_model -->|method_call| File
  Woods__Extractors__ModelExtractor_extract_model -->|method_call| Rails_logger
  Woods__Extractors__ModelExtractor_extract_model -->|method_call| Rails
  Woods__Extractors__ModelExtractor_source_file_for["Woods::Extractors::ModelExtractor#source_file_for"]
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| Rails_root_join
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| File
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| Object
  Object_const_source_location["Object.const_source_location"]
  Woods__Extractors__ModelExtractor_source_file_for -->|method_call| Object_const_source_location
  Woods__Extractors__ModelExtractor_habtm_join_model_["Woods::Extractors::ModelExtractor#habtm_join_model?"]
  Woods__Extractors__ModelExtractor_build_composite_source["Woods::Extractors::ModelExtractor#build_composite_source"]
  Woods__Extractors__ModelExtractor_build_schema_comment["Woods::Extractors::ModelExtractor#build_schema_comment"]
  Woods__Extractors__ModelExtractor_format_columns_comment["Woods::Extractors::ModelExtractor#format_columns_comment"]
  Woods__Extractors__ModelExtractor_format_indexes_comment["Woods::Extractors::ModelExtractor#format_indexes_comment"]
  ActiveRecord__Base_connection_indexes["ActiveRecord::Base.connection.indexes"]
  Woods__Extractors__ModelExtractor_format_indexes_comment -->|method_call| ActiveRecord__Base_connection_indexes
  Woods__Extractors__ModelExtractor_format_foreign_keys_comment["Woods::Extractors::ModelExtractor#format_foreign_keys_comment"]
  ActiveRecord__Base_connection_foreign_keys["ActiveRecord::Base.connection.foreign_keys"]
  Woods__Extractors__ModelExtractor_format_foreign_keys_comment -->|method_call| ActiveRecord__Base_connection_foreign_keys
  Woods__Extractors__ModelExtractor_build_model_source_with_concerns["Woods::Extractors::ModelExtractor#build_model_source_with_concerns"]
  Woods__Extractors__ModelExtractor_build_model_source_with_concerns -->|method_call| File
  Woods__Extractors__ModelExtractor_extract_included_modules["Woods::Extractors::ModelExtractor#extract_included_modules"]
  Woods__Extractors__ModelExtractor_extract_included_modules -->|method_call| Rails_root
  Woods__Extractors__ModelExtractor_extract_included_modules -->|method_call| Rails
  Woods__Extractors__ModelExtractor_extract_included_modules -->|method_call| Object
  Woods__Extractors__ModelExtractor_defined_in_app_["Woods::Extractors::ModelExtractor#defined_in_app?"]
  Woods__Extractors__ModelExtractor_defined_in_app_ -->|method_call| Object
  Woods__Extractors__ModelExtractor_concern_source["Woods::Extractors::ModelExtractor#concern_source"]
  Woods__Extractors__ModelExtractor_concern_source -->|method_call| File
  Woods__Extractors__ModelExtractor_concern_path_for["Woods::Extractors::ModelExtractor#concern_path_for"]
  Woods__Extractors__ModelExtractor_concern_path_for -->|method_call| Rails_root
  Woods__Extractors__ModelExtractor_concern_path_for -->|method_call| Rails
  Woods__Extractors__ModelExtractor_concern_path_for -->|method_call| File
  Woods__Extractors__ModelExtractor_extract_metadata["Woods::Extractors::ModelExtractor#extract_metadata"]
  Woods__Extractors__ModelExtractor_extract_active_storage_attachments["Woods::Extractors::ModelExtractor#extract_active_storage_attachments"]
  Woods__Extractors__ModelExtractor_extract_action_text_fields["Woods::Extractors::ModelExtractor#extract_action_text_fields"]
  Woods__Extractors__ModelExtractor_extract_variant_definitions["Woods::Extractors::ModelExtractor#extract_variant_definitions"]
  Woods__Extractors__ModelExtractor_extract_database_roles["Woods::Extractors::ModelExtractor#extract_database_roles"]
  Woods__Extractors__ModelExtractor_extract_shard_config["Woods::Extractors::ModelExtractor#extract_shard_config"]
  Woods__Extractors__ModelExtractor_parse_role_hash["Woods::Extractors::ModelExtractor#parse_role_hash"]
  Woods__Extractors__ModelExtractor_extract_associations["Woods::Extractors::ModelExtractor#extract_associations"]
  Woods__Extractors__ModelExtractor_extract_association_options["Woods::Extractors::ModelExtractor#extract_association_options"]
  Woods__Extractors__ModelExtractor_extract_validations["Woods::Extractors::ModelExtractor#extract_validations"]
  Woods__Extractors__ModelExtractor_extract_callbacks["Woods::Extractors::ModelExtractor#extract_callbacks"]
  Woods__Extractors__ModelExtractor_extract_scopes["Woods::Extractors::ModelExtractor#extract_scopes"]
  Woods__Extractors__ModelExtractor_extract_scopes -->|method_call| File
  Woods__Extractors__ModelExtractor_extract_scopes -->|method_call| Ast__Parser
  Woods__Extractors__ModelExtractor_extract_scopes_from_ast["Woods::Extractors::ModelExtractor#extract_scopes_from_ast"]
  Woods__Extractors__ModelExtractor_extract_scopes_by_regex["Woods::Extractors::ModelExtractor#extract_scopes_by_regex"]
  Woods__Extractors__ModelExtractor_extract_enums["Woods::Extractors::ModelExtractor#extract_enums"]
  Woods__Extractors__ModelExtractor_extract_dependencies["Woods::Extractors::ModelExtractor#extract_dependencies"]
  Woods__Extractors__ModelExtractor_extract_dependencies -->|method_call| File
  Woods__Extractors__ModelExtractor_enrich_callbacks_with_side_effects["Woods::Extractors::ModelExtractor#enrich_callbacks_with_side_effects"]
  CallbackAnalyzer["CallbackAnalyzer"]
  Woods__Extractors__ModelExtractor_enrich_callbacks_with_side_effects -->|method_call| CallbackAnalyzer
  Woods__Extractors__ModelExtractor_build_chunks["Woods::Extractors::ModelExtractor#build_chunks"]
  Woods__Extractors__ModelExtractor_add_chunk["Woods::Extractors::ModelExtractor#add_chunk"]
  Woods__Extractors__ModelExtractor_build_summary_chunk["Woods::Extractors::ModelExtractor#build_summary_chunk"]
  Woods__Extractors__ModelExtractor_build_associations_chunk["Woods::Extractors::ModelExtractor#build_associations_chunk"]
  Woods__Extractors__ModelExtractor_build_callbacks_chunk["Woods::Extractors::ModelExtractor#build_callbacks_chunk"]
  Woods__Extractors__ModelExtractor_format_callback_line["Woods::Extractors::ModelExtractor#format_callback_line"]
  Woods__Extractors__ModelExtractor_build_callback_effects_chunk["Woods::Extractors::ModelExtractor#build_callback_effects_chunk"]
  Woods__Extractors__ModelExtractor_callback_lifecycle_group["Woods::Extractors::ModelExtractor#callback_lifecycle_group"]
  Woods__Extractors__ModelExtractor_describe_callback_effects["Woods::Extractors::ModelExtractor#describe_callback_effects"]
  Woods__Extractors__ModelExtractor_build_validations_chunk["Woods::Extractors::ModelExtractor#build_validations_chunk"]
  Woods__Extractors__ModelExtractor_condition_label["Woods::Extractors::ModelExtractor#condition_label"]
  Woods__Extractors__ModelExtractor_format_validation_conditions["Woods::Extractors::ModelExtractor#format_validation_conditions"]
  Woods__Extractors__ModelExtractor_format_callback_conditions["Woods::Extractors::ModelExtractor#format_callback_conditions"]
  Woods__Extractors__ModelExtractor_implicit_belongs_to_validator_["Woods::Extractors::ModelExtractor#implicit_belongs_to_validator?"]
  Woods__Extractors__ModelExtractor_filter_instance_methods["Woods::Extractors::ModelExtractor#filter_instance_methods"]
  AR_INTERNAL_METHOD_PATTERNS["AR_INTERNAL_METHOD_PATTERNS"]
  Woods__Extractors__ModelExtractor_filter_instance_methods -->|method_call| AR_INTERNAL_METHOD_PATTERNS
  Woods__Extractors__ModelExtractor_sti_base_["Woods::Extractors::ModelExtractor#sti_base?"]
  Woods__Extractors__ModelExtractor_sti_child_["Woods::Extractors::ModelExtractor#sti_child?"]
  Woods__Extractors__ModelExtractor_callback_count["Woods::Extractors::ModelExtractor#callback_count"]
  Woods__Extractors__ModelExtractor_count_loc["Woods::Extractors::ModelExtractor#count_loc"]
  Woods__Extractors__ModelExtractor_count_loc -->|method_call| File
  Woods__Extractors__ModelExtractor_count_loc -->|method_call| File_readlines
  Woods__Extractors__PhlexExtractor["Woods::Extractors::PhlexExtractor"]
  Woods__Extractors__PhlexExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__PhlexExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__PhlexExtractor_initialize["Woods::Extractors::PhlexExtractor#initialize"]
  Woods__Extractors__PhlexExtractor_extract_all["Woods::Extractors::PhlexExtractor#extract_all"]
  Woods__Extractors__PhlexExtractor_extract_component["Woods::Extractors::PhlexExtractor#extract_component"]
  Woods__Extractors__PhlexExtractor_extract_component -->|method_call| ExtractedUnit
  Woods__Extractors__PhlexExtractor_extract_component -->|method_call| Rails_logger
  Woods__Extractors__PhlexExtractor_extract_component -->|method_call| Rails
  Woods__Extractors__PhlexExtractor_find_component_base["Woods::Extractors::PhlexExtractor#find_component_base"]
  PHLEX_BASES["PHLEX_BASES"]
  Woods__Extractors__PhlexExtractor_find_component_base -->|method_call| PHLEX_BASES
  Woods__Extractors__PhlexExtractor_view_component_subclass_["Woods::Extractors::PhlexExtractor#view_component_subclass?"]
  Woods__Extractors__PhlexExtractor_source_file_for["Woods::Extractors::PhlexExtractor#source_file_for"]
  Woods__Extractors__PhlexExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__PhlexExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__PhlexExtractor_source_file_for -->|method_call| File
  Woods__Extractors__PhlexExtractor_read_source["Woods::Extractors::PhlexExtractor#read_source"]
  Woods__Extractors__PhlexExtractor_read_source -->|method_call| File
  Woods__Extractors__PhlexExtractor_extract_metadata["Woods::Extractors::PhlexExtractor#extract_metadata"]
  Woods__Extractors__PhlexExtractor_extract_slots["Woods::Extractors::PhlexExtractor#extract_slots"]
  Woods__Extractors__PhlexExtractor_extract_renders_many["Woods::Extractors::PhlexExtractor#extract_renders_many"]
  Woods__Extractors__PhlexExtractor_extract_renders_one["Woods::Extractors::PhlexExtractor#extract_renders_one"]
  Woods__Extractors__PhlexExtractor_extract_initialize_params["Woods::Extractors::PhlexExtractor#extract_initialize_params"]
  Woods__Extractors__PhlexExtractor_extract_dependencies["Woods::Extractors::PhlexExtractor#extract_dependencies"]
  Woods__Extractors__PolicyExtractor["Woods::Extractors::PolicyExtractor"]
  Woods__Extractors__PolicyExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__PolicyExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__PolicyExtractor_initialize["Woods::Extractors::PolicyExtractor#initialize"]
  POLICY_DIRECTORIES_map["POLICY_DIRECTORIES.map"]
  Woods__Extractors__PolicyExtractor_initialize -->|method_call| POLICY_DIRECTORIES_map
  POLICY_DIRECTORIES["POLICY_DIRECTORIES"]
  Woods__Extractors__PolicyExtractor_initialize -->|method_call| POLICY_DIRECTORIES
  Woods__Extractors__PolicyExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__PolicyExtractor_initialize -->|method_call| Rails
  Woods__Extractors__PolicyExtractor_extract_all["Woods::Extractors::PolicyExtractor#extract_all"]
  Woods__Extractors__PolicyExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__PolicyExtractor_extract_policy_file["Woods::Extractors::PolicyExtractor#extract_policy_file"]
  Woods__Extractors__PolicyExtractor_extract_policy_file -->|method_call| File
  Woods__Extractors__PolicyExtractor_extract_policy_file -->|method_call| ExtractedUnit
  Woods__Extractors__PolicyExtractor_extract_policy_file -->|method_call| Rails_logger
  Woods__Extractors__PolicyExtractor_extract_policy_file -->|method_call| Rails
  Woods__Extractors__PolicyExtractor_extract_class_name["Woods::Extractors::PolicyExtractor#extract_class_name"]
  Woods__Extractors__PolicyExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__PolicyExtractor_skip_file_["Woods::Extractors::PolicyExtractor#skip_file?"]
  Woods__Extractors__PolicyExtractor_annotate_source["Woods::Extractors::PolicyExtractor#annotate_source"]
  Woods__Extractors__PolicyExtractor_extract_metadata["Woods::Extractors::PolicyExtractor#extract_metadata"]
  Woods__Extractors__PolicyExtractor_detect_decision_methods["Woods::Extractors::PolicyExtractor#detect_decision_methods"]
  Woods__Extractors__PolicyExtractor_detect_decision_methods -->|method_call| Regexp
  Woods__Extractors__PolicyExtractor_detect_evaluated_models["Woods::Extractors::PolicyExtractor#detect_evaluated_models"]
  Woods__Extractors__PolicyExtractor_detect_evaluated_models -->|method_call| Regexp
  Woods__Extractors__PolicyExtractor_detect_evaluated_models -->|method_call| Regexp_last_match
  Woods__Extractors__PolicyExtractor_pundit_policy_["Woods::Extractors::PolicyExtractor#pundit_policy?"]
  Woods__Extractors__PolicyExtractor_extract_custom_errors["Woods::Extractors::PolicyExtractor#extract_custom_errors"]
  Woods__Extractors__PolicyExtractor_extract_dependencies["Woods::Extractors::PolicyExtractor#extract_dependencies"]
  Woods__Extractors__PunditExtractor["Woods::Extractors::PunditExtractor"]
  Woods__Extractors__PunditExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__PunditExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__PunditExtractor_initialize["Woods::Extractors::PunditExtractor#initialize"]
  PUNDIT_DIRECTORIES_map["PUNDIT_DIRECTORIES.map"]
  Woods__Extractors__PunditExtractor_initialize -->|method_call| PUNDIT_DIRECTORIES_map
  PUNDIT_DIRECTORIES["PUNDIT_DIRECTORIES"]
  Woods__Extractors__PunditExtractor_initialize -->|method_call| PUNDIT_DIRECTORIES
  Woods__Extractors__PunditExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__PunditExtractor_initialize -->|method_call| Rails
  Woods__Extractors__PunditExtractor_extract_all["Woods::Extractors::PunditExtractor#extract_all"]
  Woods__Extractors__PunditExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__PunditExtractor_extract_pundit_file["Woods::Extractors::PunditExtractor#extract_pundit_file"]
  Woods__Extractors__PunditExtractor_extract_pundit_file -->|method_call| File
  Woods__Extractors__PunditExtractor_extract_pundit_file -->|method_call| ExtractedUnit
  Woods__Extractors__PunditExtractor_extract_pundit_file -->|method_call| Rails_logger
  Woods__Extractors__PunditExtractor_extract_pundit_file -->|method_call| Rails
  Woods__Extractors__PunditExtractor_extract_class_name["Woods::Extractors::PunditExtractor#extract_class_name"]
  Woods__Extractors__PunditExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__PunditExtractor_pundit_policy_["Woods::Extractors::PunditExtractor#pundit_policy?"]
  Woods__Extractors__PunditExtractor_annotate_source["Woods::Extractors::PunditExtractor#annotate_source"]
  Woods__Extractors__PunditExtractor_extract_metadata["Woods::Extractors::PunditExtractor#extract_metadata"]
  Woods__Extractors__PunditExtractor_detect_authorization_actions["Woods::Extractors::PunditExtractor#detect_authorization_actions"]
  Woods__Extractors__PunditExtractor_infer_model["Woods::Extractors::PunditExtractor#infer_model"]
  Woods__Extractors__PunditExtractor_extract_dependencies["Woods::Extractors::PunditExtractor#extract_dependencies"]
  Woods__Extractors__RailsSourceExtractor["Woods::Extractors::RailsSourceExtractor"]
  Woods__Extractors__RailsSourceExtractor_initialize["Woods::Extractors::RailsSourceExtractor#initialize"]
  Woods__Extractors__RailsSourceExtractor_initialize -->|method_call| Rails
  Woods__Extractors__RailsSourceExtractor_extract_all["Woods::Extractors::RailsSourceExtractor#extract_all"]
  Woods__Extractors__RailsSourceExtractor_extract_rails_sources["Woods::Extractors::RailsSourceExtractor#extract_rails_sources"]
  RAILS_PATHS["RAILS_PATHS"]
  Woods__Extractors__RailsSourceExtractor_extract_rails_sources -->|method_call| RAILS_PATHS
  Woods__Extractors__RailsSourceExtractor_extract_rails_sources -->|method_call| Dir___
  Woods__Extractors__RailsSourceExtractor_extract_gem_sources["Woods::Extractors::RailsSourceExtractor#extract_gem_sources"]
  GEM_CONFIGS["GEM_CONFIGS"]
  Woods__Extractors__RailsSourceExtractor_extract_gem_sources -->|method_call| GEM_CONFIGS
  Woods__Extractors__RailsSourceExtractor_extract_gem_sources -->|method_call| Dir___
  Woods__Extractors__RailsSourceExtractor_find_gem_path["Woods::Extractors::RailsSourceExtractor#find_gem_path"]
  Gem__Specification["Gem::Specification"]
  Woods__Extractors__RailsSourceExtractor_find_gem_path -->|method_call| Gem__Specification
  Woods__Extractors__RailsSourceExtractor_find_gem_path -->|method_call| Pathname
  Woods__Extractors__RailsSourceExtractor_gem_version["Woods::Extractors::RailsSourceExtractor#gem_version"]
  Gem__Specification_find_by_name_version["Gem::Specification.find_by_name.version"]
  Woods__Extractors__RailsSourceExtractor_gem_version -->|method_call| Gem__Specification_find_by_name_version
  Gem__Specification_find_by_name["Gem::Specification.find_by_name"]
  Woods__Extractors__RailsSourceExtractor_gem_version -->|method_call| Gem__Specification_find_by_name
  Woods__Extractors__RailsSourceExtractor_gem_version -->|method_call| Gem__Specification
  Woods__Extractors__RailsSourceExtractor_extract_framework_file["Woods::Extractors::RailsSourceExtractor#extract_framework_file"]
  Woods__Extractors__RailsSourceExtractor_extract_framework_file -->|method_call| File
  Woods__Extractors__RailsSourceExtractor_extract_framework_file -->|method_call| ExtractedUnit
  Woods__Extractors__RailsSourceExtractor_extract_framework_file -->|method_call| Rails_logger
  Woods__Extractors__RailsSourceExtractor_extract_framework_file -->|method_call| Rails
  Woods__Extractors__RailsSourceExtractor_extract_gem_file["Woods::Extractors::RailsSourceExtractor#extract_gem_file"]
  Woods__Extractors__RailsSourceExtractor_extract_gem_file -->|method_call| File
  Woods__Extractors__RailsSourceExtractor_extract_gem_file -->|method_call| ExtractedUnit
  Woods__Extractors__RailsSourceExtractor_extract_gem_file -->|method_call| Rails_logger
  Woods__Extractors__RailsSourceExtractor_extract_gem_file -->|method_call| Rails
  Woods__Extractors__RailsSourceExtractor_annotate_framework_source["Woods::Extractors::RailsSourceExtractor#annotate_framework_source"]
  Woods__Extractors__RailsSourceExtractor_annotate_gem_source["Woods::Extractors::RailsSourceExtractor#annotate_gem_source"]
  Woods__Extractors__RailsSourceExtractor_extract_module_names["Woods::Extractors::RailsSourceExtractor#extract_module_names"]
  Woods__Extractors__RailsSourceExtractor_extract_class_names["Woods::Extractors::RailsSourceExtractor#extract_class_names"]
  Woods__Extractors__RailsSourceExtractor_extract_public_api["Woods::Extractors::RailsSourceExtractor#extract_public_api"]
  Woods__Extractors__RailsSourceExtractor_extract_public_api -->|method_call| Regexp
  Woods__Extractors__RailsSourceExtractor_extract_dsl_methods["Woods::Extractors::RailsSourceExtractor#extract_dsl_methods"]
  Woods__Extractors__RailsSourceExtractor_extract_option_definitions["Woods::Extractors::RailsSourceExtractor#extract_option_definitions"]
  Woods__Extractors__RailsSourceExtractor_public_api_file_["Woods::Extractors::RailsSourceExtractor#public_api_file?"]
  Woods__Extractors__RailsSourceExtractor_rate_importance["Woods::Extractors::RailsSourceExtractor#rate_importance"]
  Woods__Extractors__RailsSourceExtractor_extract_mixins["Woods::Extractors::RailsSourceExtractor#extract_mixins"]
  Woods__Extractors__RailsSourceExtractor_extract_configuration["Woods::Extractors::RailsSourceExtractor#extract_configuration"]
  Woods__Extractors__RakeTaskExtractor["Woods::Extractors::RakeTaskExtractor"]
  Woods__Extractors__RakeTaskExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__RakeTaskExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__RakeTaskExtractor_initialize["Woods::Extractors::RakeTaskExtractor#initialize"]
  RAKE_DIRECTORIES_map["RAKE_DIRECTORIES.map"]
  Woods__Extractors__RakeTaskExtractor_initialize -->|method_call| RAKE_DIRECTORIES_map
  RAKE_DIRECTORIES["RAKE_DIRECTORIES"]
  Woods__Extractors__RakeTaskExtractor_initialize -->|method_call| RAKE_DIRECTORIES
  Woods__Extractors__RakeTaskExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__RakeTaskExtractor_initialize -->|method_call| Rails
  Woods__Extractors__RakeTaskExtractor_extract_all["Woods::Extractors::RakeTaskExtractor#extract_all"]
  Woods__Extractors__RakeTaskExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__RakeTaskExtractor_extract_rake_file["Woods::Extractors::RakeTaskExtractor#extract_rake_file"]
  Woods__Extractors__RakeTaskExtractor_extract_rake_file -->|method_call| File
  Woods__Extractors__RakeTaskExtractor_extract_rake_file -->|method_call| Rails_logger
  Woods__Extractors__RakeTaskExtractor_extract_rake_file -->|method_call| Rails
  Woods__Extractors__RakeTaskExtractor_parse_tasks["Woods::Extractors::RakeTaskExtractor#parse_tasks"]
  Woods__Extractors__RakeTaskExtractor_extract_namespace_name["Woods::Extractors::RakeTaskExtractor#extract_namespace_name"]
  Woods__Extractors__RakeTaskExtractor_extract_desc["Woods::Extractors::RakeTaskExtractor#extract_desc"]
  Woods__Extractors__RakeTaskExtractor_parse_task_line["Woods::Extractors::RakeTaskExtractor#parse_task_line"]
  Woods__Extractors__RakeTaskExtractor_parse_task_signature["Woods::Extractors::RakeTaskExtractor#parse_task_signature"]
  Woods__Extractors__RakeTaskExtractor_parse_task_signature -->|method_call| Regexp
  Regexp_last_match_scan["Regexp.last_match.scan"]
  Woods__Extractors__RakeTaskExtractor_parse_task_signature -->|method_call| Regexp_last_match_scan
  Woods__Extractors__RakeTaskExtractor_parse_task_signature -->|method_call| Regexp_last_match
  Woods__Extractors__RakeTaskExtractor_parse_dependency_list["Woods::Extractors::RakeTaskExtractor#parse_dependency_list"]
  Woods__Extractors__RakeTaskExtractor_extract_task_block["Woods::Extractors::RakeTaskExtractor#extract_task_block"]
  Woods__Extractors__RakeTaskExtractor_block_opener_["Woods::Extractors::RakeTaskExtractor#block_opener?"]
  Woods__Extractors__RakeTaskExtractor_excluded_namespace_["Woods::Extractors::RakeTaskExtractor#excluded_namespace?"]
  EXCLUDED_NAMESPACES["EXCLUDED_NAMESPACES"]
  Woods__Extractors__RakeTaskExtractor_excluded_namespace_ -->|method_call| EXCLUDED_NAMESPACES
  Woods__Extractors__RakeTaskExtractor_build_unit["Woods::Extractors::RakeTaskExtractor#build_unit"]
  Woods__Extractors__RakeTaskExtractor_build_unit -->|method_call| ExtractedUnit
  Woods__Extractors__RakeTaskExtractor_build_source_annotation["Woods::Extractors::RakeTaskExtractor#build_source_annotation"]
  Woods__Extractors__RakeTaskExtractor_build_metadata["Woods::Extractors::RakeTaskExtractor#build_metadata"]
  Woods__Extractors__RakeTaskExtractor_extract_dependencies["Woods::Extractors::RakeTaskExtractor#extract_dependencies"]
  Woods__Extractors__RouteExtractor["Woods::Extractors::RouteExtractor"]
  Woods__Extractors__RouteExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__RouteExtractor_initialize["Woods::Extractors::RouteExtractor#initialize"]
  Woods__Extractors__RouteExtractor_extract_all["Woods::Extractors::RouteExtractor#extract_all"]
  Rails_application_routes["Rails.application.routes"]
  Woods__Extractors__RouteExtractor_extract_all -->|method_call| Rails_application_routes
  Woods__Extractors__RouteExtractor_extract_all -->|method_call| Rails_application
  Woods__Extractors__RouteExtractor_extract_all -->|method_call| Rails
  Woods__Extractors__RouteExtractor_rails_routes_available_["Woods::Extractors::RouteExtractor#rails_routes_available?"]
  Woods__Extractors__RouteExtractor_rails_routes_available_ -->|method_call| Rails
  Woods__Extractors__RouteExtractor_rails_routes_available_ -->|method_call| Rails_application
  Woods__Extractors__RouteExtractor_rails_routes_available_ -->|method_call| Rails_application_routes
  Woods__Extractors__RouteExtractor_extract_route["Woods::Extractors::RouteExtractor#extract_route"]
  Woods__Extractors__RouteExtractor_extract_route -->|method_call| ExtractedUnit
  Woods__Extractors__RouteExtractor_extract_route -->|method_call| Rails_logger
  Woods__Extractors__RouteExtractor_extract_route -->|method_call| Rails
  Woods__Extractors__RouteExtractor_route_defaults["Woods::Extractors::RouteExtractor#route_defaults"]
  Woods__Extractors__RouteExtractor_route_verb["Woods::Extractors::RouteExtractor#route_verb"]
  Woods__Extractors__RouteExtractor_route_path["Woods::Extractors::RouteExtractor#route_path"]
  Woods__Extractors__RouteExtractor_build_route_source["Woods::Extractors::RouteExtractor#build_route_source"]
  Woods__Extractors__RouteExtractor_build_route_metadata["Woods::Extractors::RouteExtractor#build_route_metadata"]
  Woods__Extractors__RouteExtractor_route_constraints["Woods::Extractors::RouteExtractor#route_constraints"]
  Woods__Extractors__RouteExtractor_build_route_dependencies["Woods::Extractors::RouteExtractor#build_route_dependencies"]
  Woods__Extractors__ScheduledJobExtractor["Woods::Extractors::ScheduledJobExtractor"]
  Woods__Extractors__ScheduledJobExtractor_initialize["Woods::Extractors::ScheduledJobExtractor#initialize"]
  SCHEDULE_FILES["SCHEDULE_FILES"]
  Woods__Extractors__ScheduledJobExtractor_initialize -->|method_call| SCHEDULE_FILES
  Woods__Extractors__ScheduledJobExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ScheduledJobExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ScheduledJobExtractor_initialize -->|method_call| File
  Woods__Extractors__ScheduledJobExtractor_extract_all["Woods::Extractors::ScheduledJobExtractor#extract_all"]
  Woods__Extractors__ScheduledJobExtractor_extract_scheduled_job_file["Woods::Extractors::ScheduledJobExtractor#extract_scheduled_job_file"]
  Woods__Extractors__ScheduledJobExtractor_extract_scheduled_job_file -->|method_call| Rails_logger
  Woods__Extractors__ScheduledJobExtractor_extract_scheduled_job_file -->|method_call| Rails
  Woods__Extractors__ScheduledJobExtractor_extract_yaml_schedule["Woods::Extractors::ScheduledJobExtractor#extract_yaml_schedule"]
  Woods__Extractors__ScheduledJobExtractor_extract_yaml_schedule -->|method_call| File
  Woods__Extractors__ScheduledJobExtractor_extract_yaml_schedule -->|method_call| YAML
  Woods__Extractors__ScheduledJobExtractor_unwrap_environment_nesting["Woods::Extractors::ScheduledJobExtractor#unwrap_environment_nesting"]
  ENVIRONMENT_KEYS["ENVIRONMENT_KEYS"]
  Woods__Extractors__ScheduledJobExtractor_unwrap_environment_nesting -->|method_call| ENVIRONMENT_KEYS
  Woods__Extractors__ScheduledJobExtractor_build_yaml_unit["Woods::Extractors::ScheduledJobExtractor#build_yaml_unit"]
  Woods__Extractors__ScheduledJobExtractor_build_yaml_unit -->|method_call| ExtractedUnit
  Woods__Extractors__ScheduledJobExtractor_extract_cron["Woods::Extractors::ScheduledJobExtractor#extract_cron"]
  Woods__Extractors__ScheduledJobExtractor_extract_whenever_schedule["Woods::Extractors::ScheduledJobExtractor#extract_whenever_schedule"]
  Woods__Extractors__ScheduledJobExtractor_extract_whenever_schedule -->|method_call| File
  Woods__Extractors__ScheduledJobExtractor_parse_whenever_blocks["Woods::Extractors::ScheduledJobExtractor#parse_whenever_blocks"]
  Woods__Extractors__ScheduledJobExtractor_detect_whenever_command["Woods::Extractors::ScheduledJobExtractor#detect_whenever_command"]
  Woods__Extractors__ScheduledJobExtractor_detect_whenever_command -->|method_call| Regexp
  Woods__Extractors__ScheduledJobExtractor_extract_job_class_from_runner["Woods::Extractors::ScheduledJobExtractor#extract_job_class_from_runner"]
  Woods__Extractors__ScheduledJobExtractor_build_whenever_unit["Woods::Extractors::ScheduledJobExtractor#build_whenever_unit"]
  Woods__Extractors__ScheduledJobExtractor_build_whenever_unit -->|method_call| ExtractedUnit
  Woods__Extractors__ScheduledJobExtractor_infer_format["Woods::Extractors::ScheduledJobExtractor#infer_format"]
  Woods__Extractors__ScheduledJobExtractor_infer_format -->|method_call| File
  Woods__Extractors__ScheduledJobExtractor_infer_format -->|method_call| SCHEDULE_FILES
  Woods__Extractors__ScheduledJobExtractor_build_dependencies["Woods::Extractors::ScheduledJobExtractor#build_dependencies"]
  Woods__Extractors__ScheduledJobExtractor_humanize_frequency["Woods::Extractors::ScheduledJobExtractor#humanize_frequency"]
  CRON_HUMANIZE["CRON_HUMANIZE"]
  Woods__Extractors__ScheduledJobExtractor_humanize_frequency -->|method_call| CRON_HUMANIZE
  Woods__Extractors__SerializerExtractor["Woods::Extractors::SerializerExtractor"]
  Woods__Extractors__SerializerExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__SerializerExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__SerializerExtractor_initialize["Woods::Extractors::SerializerExtractor#initialize"]
  SERIALIZER_DIRECTORIES_map["SERIALIZER_DIRECTORIES.map"]
  Woods__Extractors__SerializerExtractor_initialize -->|method_call| SERIALIZER_DIRECTORIES_map
  SERIALIZER_DIRECTORIES["SERIALIZER_DIRECTORIES"]
  Woods__Extractors__SerializerExtractor_initialize -->|method_call| SERIALIZER_DIRECTORIES
  Woods__Extractors__SerializerExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__SerializerExtractor_initialize -->|method_call| Rails
  Woods__Extractors__SerializerExtractor_extract_all["Woods::Extractors::SerializerExtractor#extract_all"]
  Woods__Extractors__SerializerExtractor_extract_all -->|method_call| Dir___
  BASE_CLASSES["BASE_CLASSES"]
  Woods__Extractors__SerializerExtractor_extract_all -->|method_call| BASE_CLASSES
  Woods__Extractors__SerializerExtractor_extract_serializer_file["Woods::Extractors::SerializerExtractor#extract_serializer_file"]
  Woods__Extractors__SerializerExtractor_extract_serializer_file -->|method_call| File
  Woods__Extractors__SerializerExtractor_extract_serializer_file -->|method_call| ExtractedUnit
  Woods__Extractors__SerializerExtractor_extract_serializer_file -->|method_call| Rails_logger
  Woods__Extractors__SerializerExtractor_extract_serializer_file -->|method_call| Rails
  Woods__Extractors__SerializerExtractor_extract_serializer_class["Woods::Extractors::SerializerExtractor#extract_serializer_class"]
  Woods__Extractors__SerializerExtractor_extract_serializer_class -->|method_call| File
  Woods__Extractors__SerializerExtractor_extract_serializer_class -->|method_call| ExtractedUnit
  Woods__Extractors__SerializerExtractor_extract_serializer_class -->|method_call| Rails_logger
  Woods__Extractors__SerializerExtractor_extract_serializer_class -->|method_call| Rails
  Woods__Extractors__SerializerExtractor_extract_class_name["Woods::Extractors::SerializerExtractor#extract_class_name"]
  Woods__Extractors__SerializerExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__SerializerExtractor_serializer_file_["Woods::Extractors::SerializerExtractor#serializer_file?"]
  Woods__Extractors__SerializerExtractor_source_file_for["Woods::Extractors::SerializerExtractor#source_file_for"]
  Woods__Extractors__SerializerExtractor_source_file_for -->|method_call| Rails_root_join
  Woods__Extractors__SerializerExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__SerializerExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__SerializerExtractor_annotate_source["Woods::Extractors::SerializerExtractor#annotate_source"]
  Woods__Extractors__SerializerExtractor_detect_serializer_type["Woods::Extractors::SerializerExtractor#detect_serializer_type"]
  Woods__Extractors__SerializerExtractor_detect_wrapped_model["Woods::Extractors::SerializerExtractor#detect_wrapped_model"]
  Woods__Extractors__SerializerExtractor_detect_wrapped_model -->|method_call| Regexp_last_match
  Woods__Extractors__SerializerExtractor_detect_wrapped_model -->|method_call| Regexp
  Woods__Extractors__SerializerExtractor_extract_metadata_from_source["Woods::Extractors::SerializerExtractor#extract_metadata_from_source"]
  Woods__Extractors__SerializerExtractor_extract_metadata_from_class["Woods::Extractors::SerializerExtractor#extract_metadata_from_class"]
  Woods__Extractors__SerializerExtractor_extract_attributes["Woods::Extractors::SerializerExtractor#extract_attributes"]
  Woods__Extractors__SerializerExtractor_extract_associations["Woods::Extractors::SerializerExtractor#extract_associations"]
  Woods__Extractors__SerializerExtractor_extract_custom_methods["Woods::Extractors::SerializerExtractor#extract_custom_methods"]
  Woods__Extractors__SerializerExtractor_extract_views["Woods::Extractors::SerializerExtractor#extract_views"]
  Woods__Extractors__SerializerExtractor_extract_dependencies["Woods::Extractors::SerializerExtractor#extract_dependencies"]
  Woods__Extractors__ServiceExtractor["Woods::Extractors::ServiceExtractor"]
  Woods__Extractors__ServiceExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ServiceExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ServiceExtractor_initialize["Woods::Extractors::ServiceExtractor#initialize"]
  SERVICE_DIRECTORIES_map["SERVICE_DIRECTORIES.map"]
  Woods__Extractors__ServiceExtractor_initialize -->|method_call| SERVICE_DIRECTORIES_map
  SERVICE_DIRECTORIES["SERVICE_DIRECTORIES"]
  Woods__Extractors__ServiceExtractor_initialize -->|method_call| SERVICE_DIRECTORIES
  Woods__Extractors__ServiceExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ServiceExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ServiceExtractor_extract_all["Woods::Extractors::ServiceExtractor#extract_all"]
  Woods__Extractors__ServiceExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__ServiceExtractor_extract_service_file["Woods::Extractors::ServiceExtractor#extract_service_file"]
  Woods__Extractors__ServiceExtractor_extract_service_file -->|method_call| File
  Woods__Extractors__ServiceExtractor_extract_service_file -->|method_call| ExtractedUnit
  Woods__Extractors__ServiceExtractor_extract_service_file -->|method_call| Rails_logger
  Woods__Extractors__ServiceExtractor_extract_service_file -->|method_call| Rails
  Woods__Extractors__ServiceExtractor_extract_class_name["Woods::Extractors::ServiceExtractor#extract_class_name"]
  Woods__Extractors__ServiceExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__ServiceExtractor_skip_file_["Woods::Extractors::ServiceExtractor#skip_file?"]
  Woods__Extractors__ServiceExtractor_annotate_source["Woods::Extractors::ServiceExtractor#annotate_source"]
  Woods__Extractors__ServiceExtractor_detect_entry_points["Woods::Extractors::ServiceExtractor#detect_entry_points"]
  Woods__Extractors__ServiceExtractor_extract_metadata["Woods::Extractors::ServiceExtractor#extract_metadata"]
  Woods__Extractors__ServiceExtractor_extract_injected_deps["Woods::Extractors::ServiceExtractor#extract_injected_deps"]
  Woods__Extractors__ServiceExtractor_extract_custom_errors["Woods::Extractors::ServiceExtractor#extract_custom_errors"]
  Woods__Extractors__ServiceExtractor_extract_rescue_handlers["Woods::Extractors::ServiceExtractor#extract_rescue_handlers"]
  Woods__Extractors__ServiceExtractor_infer_return_type["Woods::Extractors::ServiceExtractor#infer_return_type"]
  Woods__Extractors__ServiceExtractor_estimate_complexity["Woods::Extractors::ServiceExtractor#estimate_complexity"]
  Woods__Extractors__ServiceExtractor_infer_service_type["Woods::Extractors::ServiceExtractor#infer_service_type"]
  Woods__Extractors__ServiceExtractor_extract_dependencies["Woods::Extractors::ServiceExtractor#extract_dependencies"]
  Woods__Extractors__SharedDependencyScanner["Woods::Extractors::SharedDependencyScanner"]
  Woods__Extractors__SharedDependencyScanner_scan_model_dependencies["Woods::Extractors::SharedDependencyScanner#scan_model_dependencies"]
  Woods__Extractors__SharedDependencyScanner_scan_service_dependencies["Woods::Extractors::SharedDependencyScanner#scan_service_dependencies"]
  Woods__Extractors__SharedDependencyScanner_scan_job_dependencies["Woods::Extractors::SharedDependencyScanner#scan_job_dependencies"]
  Woods__Extractors__SharedDependencyScanner_scan_mailer_dependencies["Woods::Extractors::SharedDependencyScanner#scan_mailer_dependencies"]
  Woods__Extractors__SharedDependencyScanner_scan_common_dependencies["Woods::Extractors::SharedDependencyScanner#scan_common_dependencies"]
  Woods__Extractors__SharedUtilityMethods["Woods::Extractors::SharedUtilityMethods"]
  Woods__Extractors__SharedUtilityMethods_extract_namespace["Woods::Extractors::SharedUtilityMethods#extract_namespace"]
  Woods__Extractors__SharedUtilityMethods_extract_public_methods["Woods::Extractors::SharedUtilityMethods#extract_public_methods"]
  Woods__Extractors__SharedUtilityMethods_extract_public_methods -->|method_call| Regexp
  Woods__Extractors__SharedUtilityMethods_extract_class_methods["Woods::Extractors::SharedUtilityMethods#extract_class_methods"]
  Woods__Extractors__SharedUtilityMethods_extract_initialize_params["Woods::Extractors::SharedUtilityMethods#extract_initialize_params"]
  Woods__Extractors__StateMachineExtractor["Woods::Extractors::StateMachineExtractor"]
  Woods__Extractors__StateMachineExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__StateMachineExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__StateMachineExtractor_initialize["Woods::Extractors::StateMachineExtractor#initialize"]
  MODEL_DIRECTORIES_map["MODEL_DIRECTORIES.map"]
  Woods__Extractors__StateMachineExtractor_initialize -->|method_call| MODEL_DIRECTORIES_map
  MODEL_DIRECTORIES["MODEL_DIRECTORIES"]
  Woods__Extractors__StateMachineExtractor_initialize -->|method_call| MODEL_DIRECTORIES
  Woods__Extractors__StateMachineExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__StateMachineExtractor_initialize -->|method_call| Rails
  Woods__Extractors__StateMachineExtractor_extract_all["Woods::Extractors::StateMachineExtractor#extract_all"]
  Woods__Extractors__StateMachineExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__StateMachineExtractor_extract_model_file["Woods::Extractors::StateMachineExtractor#extract_model_file"]
  Woods__Extractors__StateMachineExtractor_extract_model_file -->|method_call| File
  Woods__Extractors__StateMachineExtractor_extract_model_file -->|method_call| Rails_logger
  Woods__Extractors__StateMachineExtractor_extract_model_file -->|method_call| Rails
  Woods__Extractors__StateMachineExtractor_detect_class_name["Woods::Extractors::StateMachineExtractor#detect_class_name"]
  Woods__Extractors__StateMachineExtractor_detect_class_name -->|method_call| Regexp
  Woods__Extractors__StateMachineExtractor_extract_aasm_units["Woods::Extractors::StateMachineExtractor#extract_aasm_units"]
  Woods__Extractors__StateMachineExtractor_parse_initial_state_aasm["Woods::Extractors::StateMachineExtractor#parse_initial_state_aasm"]
  Woods__Extractors__StateMachineExtractor_extract_statesman_units["Woods::Extractors::StateMachineExtractor#extract_statesman_units"]
  Woods__Extractors__StateMachineExtractor_parse_statesman_transitions["Woods::Extractors::StateMachineExtractor#parse_statesman_transitions"]
  Woods__Extractors__StateMachineExtractor_extract_state_machines_units["Woods::Extractors::StateMachineExtractor#extract_state_machines_units"]
  Woods__Extractors__StateMachineExtractor_extract_block_for_state_machine["Woods::Extractors::StateMachineExtractor#extract_block_for_state_machine"]
  Woods__Extractors__StateMachineExtractor_parse_state_machine_callbacks["Woods::Extractors::StateMachineExtractor#parse_state_machine_callbacks"]
  Woods__Extractors__StateMachineExtractor_parse_events_from_source["Woods::Extractors::StateMachineExtractor#parse_events_from_source"]
  Woods__Extractors__StateMachineExtractor_parse_transition_line["Woods::Extractors::StateMachineExtractor#parse_transition_line"]
  Woods__Extractors__StateMachineExtractor_block_opener_["Woods::Extractors::StateMachineExtractor#block_opener?"]
  Woods__Extractors__StateMachineExtractor_build_unit["Woods::Extractors::StateMachineExtractor#build_unit"]
  Woods__Extractors__StateMachineExtractor_build_unit -->|method_call| ExtractedUnit
  Woods__Extractors__StateMachineExtractor_build_dependencies["Woods::Extractors::StateMachineExtractor#build_dependencies"]
  Woods__Extractors__TestMappingExtractor["Woods::Extractors::TestMappingExtractor"]
  Woods__Extractors__TestMappingExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__TestMappingExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__TestMappingExtractor_initialize["Woods::Extractors::TestMappingExtractor#initialize"]
  Woods__Extractors__TestMappingExtractor_initialize -->|method_call| Rails
  Woods__Extractors__TestMappingExtractor_extract_all["Woods::Extractors::TestMappingExtractor#extract_all"]
  Woods__Extractors__TestMappingExtractor_extract_test_file["Woods::Extractors::TestMappingExtractor#extract_test_file"]
  Woods__Extractors__TestMappingExtractor_extract_test_file -->|method_call| File
  Woods__Extractors__TestMappingExtractor_extract_test_file -->|method_call| ExtractedUnit
  Woods__Extractors__TestMappingExtractor_extract_test_file -->|method_call| Rails_logger
  Woods__Extractors__TestMappingExtractor_extract_test_file -->|method_call| Rails
  Woods__Extractors__TestMappingExtractor_rspec_units["Woods::Extractors::TestMappingExtractor#rspec_units"]
  Woods__Extractors__TestMappingExtractor_rspec_units -->|method_call| Dir___
  Woods__Extractors__TestMappingExtractor_minitest_units["Woods::Extractors::TestMappingExtractor#minitest_units"]
  Woods__Extractors__TestMappingExtractor_minitest_units -->|method_call| Dir___
  Woods__Extractors__TestMappingExtractor_detect_framework["Woods::Extractors::TestMappingExtractor#detect_framework"]
  Woods__Extractors__TestMappingExtractor_extract_metadata["Woods::Extractors::TestMappingExtractor#extract_metadata"]
  Woods__Extractors__TestMappingExtractor_extract_subject_class["Woods::Extractors::TestMappingExtractor#extract_subject_class"]
  Woods__Extractors__TestMappingExtractor_extract_rspec_subject["Woods::Extractors::TestMappingExtractor#extract_rspec_subject"]
  Woods__Extractors__TestMappingExtractor_extract_minitest_subject["Woods::Extractors::TestMappingExtractor#extract_minitest_subject"]
  Woods__Extractors__TestMappingExtractor_count_tests["Woods::Extractors::TestMappingExtractor#count_tests"]
  Woods__Extractors__TestMappingExtractor_extract_shared_examples_defined["Woods::Extractors::TestMappingExtractor#extract_shared_examples_defined"]
  Woods__Extractors__TestMappingExtractor_extract_shared_examples_used["Woods::Extractors::TestMappingExtractor#extract_shared_examples_used"]
  Woods__Extractors__TestMappingExtractor_infer_test_type["Woods::Extractors::TestMappingExtractor#infer_test_type"]
  Woods__Extractors__TestMappingExtractor_extract_dependencies["Woods::Extractors::TestMappingExtractor#extract_dependencies"]
  Woods__Extractors__TestMappingExtractor_infer_type_from_test_type["Woods::Extractors::TestMappingExtractor#infer_type_from_test_type"]
  Woods__Extractors__ValidatorExtractor["Woods::Extractors::ValidatorExtractor"]
  Woods__Extractors__ValidatorExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ValidatorExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ValidatorExtractor_initialize["Woods::Extractors::ValidatorExtractor#initialize"]
  VALIDATOR_DIRECTORIES_map["VALIDATOR_DIRECTORIES.map"]
  Woods__Extractors__ValidatorExtractor_initialize -->|method_call| VALIDATOR_DIRECTORIES_map
  VALIDATOR_DIRECTORIES["VALIDATOR_DIRECTORIES"]
  Woods__Extractors__ValidatorExtractor_initialize -->|method_call| VALIDATOR_DIRECTORIES
  Woods__Extractors__ValidatorExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ValidatorExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ValidatorExtractor_extract_all["Woods::Extractors::ValidatorExtractor#extract_all"]
  Woods__Extractors__ValidatorExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__ValidatorExtractor_extract_validator_file["Woods::Extractors::ValidatorExtractor#extract_validator_file"]
  Woods__Extractors__ValidatorExtractor_extract_validator_file -->|method_call| File
  Woods__Extractors__ValidatorExtractor_extract_validator_file -->|method_call| ExtractedUnit
  Woods__Extractors__ValidatorExtractor_extract_validator_file -->|method_call| Rails_logger
  Woods__Extractors__ValidatorExtractor_extract_validator_file -->|method_call| Rails
  Woods__Extractors__ValidatorExtractor_extract_class_name["Woods::Extractors::ValidatorExtractor#extract_class_name"]
  Woods__Extractors__ValidatorExtractor_extract_class_name -->|method_call| Regexp
  Woods__Extractors__ValidatorExtractor_validator_file_["Woods::Extractors::ValidatorExtractor#validator_file?"]
  Woods__Extractors__ValidatorExtractor_annotate_source["Woods::Extractors::ValidatorExtractor#annotate_source"]
  Woods__Extractors__ValidatorExtractor_extract_metadata["Woods::Extractors::ValidatorExtractor#extract_metadata"]
  Woods__Extractors__ValidatorExtractor_detect_validator_type["Woods::Extractors::ValidatorExtractor#detect_validator_type"]
  Woods__Extractors__ValidatorExtractor_extract_validated_attributes["Woods::Extractors::ValidatorExtractor#extract_validated_attributes"]
  Woods__Extractors__ValidatorExtractor_extract_validation_rules["Woods::Extractors::ValidatorExtractor#extract_validation_rules"]
  Woods__Extractors__ValidatorExtractor_extract_error_messages["Woods::Extractors::ValidatorExtractor#extract_error_messages"]
  Woods__Extractors__ValidatorExtractor_extract_options["Woods::Extractors::ValidatorExtractor#extract_options"]
  Woods__Extractors__ValidatorExtractor_infer_models_from_name["Woods::Extractors::ValidatorExtractor#infer_models_from_name"]
  Woods__Extractors__ValidatorExtractor_extract_custom_errors["Woods::Extractors::ValidatorExtractor#extract_custom_errors"]
  Woods__Extractors__ValidatorExtractor_extract_dependencies["Woods::Extractors::ValidatorExtractor#extract_dependencies"]
  Woods__Extractors__ViewComponentExtractor["Woods::Extractors::ViewComponentExtractor"]
  Woods__Extractors__ViewComponentExtractor -->|include| SharedUtilityMethods
  Woods__Extractors__ViewComponentExtractor -->|include| SharedDependencyScanner
  Woods__Extractors__ViewComponentExtractor_initialize["Woods::Extractors::ViewComponentExtractor#initialize"]
  Woods__Extractors__ViewComponentExtractor_extract_all["Woods::Extractors::ViewComponentExtractor#extract_all"]
  Woods__Extractors__ViewComponentExtractor_extract_component["Woods::Extractors::ViewComponentExtractor#extract_component"]
  Woods__Extractors__ViewComponentExtractor_extract_component -->|method_call| ExtractedUnit
  Woods__Extractors__ViewComponentExtractor_extract_component -->|method_call| Rails_logger
  Woods__Extractors__ViewComponentExtractor_extract_component -->|method_call| Rails
  Woods__Extractors__ViewComponentExtractor_find_component_base["Woods::Extractors::ViewComponentExtractor#find_component_base"]
  Woods__Extractors__ViewComponentExtractor_preview_class_["Woods::Extractors::ViewComponentExtractor#preview_class?"]
  Woods__Extractors__ViewComponentExtractor_source_file_for["Woods::Extractors::ViewComponentExtractor#source_file_for"]
  Woods__Extractors__ViewComponentExtractor_source_file_for -->|method_call| Rails_root
  Woods__Extractors__ViewComponentExtractor_source_file_for -->|method_call| Rails
  Woods__Extractors__ViewComponentExtractor_source_file_for -->|method_call| File
  Woods__Extractors__ViewComponentExtractor_read_source["Woods::Extractors::ViewComponentExtractor#read_source"]
  Woods__Extractors__ViewComponentExtractor_read_source -->|method_call| File
  Woods__Extractors__ViewComponentExtractor_extract_metadata["Woods::Extractors::ViewComponentExtractor#extract_metadata"]
  Woods__Extractors__ViewComponentExtractor_extract_slots["Woods::Extractors::ViewComponentExtractor#extract_slots"]
  Woods__Extractors__ViewComponentExtractor_extract_renders_many["Woods::Extractors::ViewComponentExtractor#extract_renders_many"]
  Woods__Extractors__ViewComponentExtractor_extract_renders_one["Woods::Extractors::ViewComponentExtractor#extract_renders_one"]
  Woods__Extractors__ViewComponentExtractor_extract_initialize_params["Woods::Extractors::ViewComponentExtractor#extract_initialize_params"]
  Woods__Extractors__ViewComponentExtractor_detect_sidecar_template["Woods::Extractors::ViewComponentExtractor#detect_sidecar_template"]
  Woods__Extractors__ViewComponentExtractor_detect_sidecar_template -->|method_call| Rails_root
  Woods__Extractors__ViewComponentExtractor_detect_sidecar_template -->|method_call| Rails
  Woods__Extractors__ViewComponentExtractor_detect_sidecar_template -->|method_call| File
  Woods__Extractors__ViewComponentExtractor_detect_preview_class["Woods::Extractors::ViewComponentExtractor#detect_preview_class"]
  Woods__Extractors__ViewComponentExtractor_detect_collection_support["Woods::Extractors::ViewComponentExtractor#detect_collection_support"]
  Woods__Extractors__ViewComponentExtractor_extract_callbacks["Woods::Extractors::ViewComponentExtractor#extract_callbacks"]
  Woods__Extractors__ViewComponentExtractor_extract_content_areas["Woods::Extractors::ViewComponentExtractor#extract_content_areas"]
  Woods__Extractors__ViewComponentExtractor_extract_dependencies["Woods::Extractors::ViewComponentExtractor#extract_dependencies"]
  Woods__Extractors__ViewTemplateExtractor["Woods::Extractors::ViewTemplateExtractor"]
  Woods__Extractors__ViewTemplateExtractor_initialize["Woods::Extractors::ViewTemplateExtractor#initialize"]
  VIEW_DIRECTORIES_map["VIEW_DIRECTORIES.map"]
  Woods__Extractors__ViewTemplateExtractor_initialize -->|method_call| VIEW_DIRECTORIES_map
  VIEW_DIRECTORIES["VIEW_DIRECTORIES"]
  Woods__Extractors__ViewTemplateExtractor_initialize -->|method_call| VIEW_DIRECTORIES
  Woods__Extractors__ViewTemplateExtractor_initialize -->|method_call| Rails_root
  Woods__Extractors__ViewTemplateExtractor_initialize -->|method_call| Rails
  Woods__Extractors__ViewTemplateExtractor_extract_all["Woods::Extractors::ViewTemplateExtractor#extract_all"]
  Woods__Extractors__ViewTemplateExtractor_extract_all -->|method_call| Dir___
  Woods__Extractors__ViewTemplateExtractor_extract_all -->|method_call| Dir
  Woods__Extractors__ViewTemplateExtractor_extract_view_template_file["Woods::Extractors::ViewTemplateExtractor#extract_view_template_file"]
  Woods__Extractors__ViewTemplateExtractor_extract_view_template_file -->|method_call| File
  Woods__Extractors__ViewTemplateExtractor_extract_view_template_file -->|method_call| ExtractedUnit
  Woods__Extractors__ViewTemplateExtractor_extract_view_template_file -->|method_call| Rails_logger
  Woods__Extractors__ViewTemplateExtractor_extract_view_template_file -->|method_call| Rails
  Woods__Extractors__ViewTemplateExtractor_build_identifier["Woods::Extractors::ViewTemplateExtractor#build_identifier"]
  Woods__Extractors__ViewTemplateExtractor_extract_view_namespace["Woods::Extractors::ViewTemplateExtractor#extract_view_namespace"]
  Woods__Extractors__ViewTemplateExtractor_extract_view_namespace -->|method_call| File
  Woods__Extractors__ViewTemplateExtractor_build_metadata["Woods::Extractors::ViewTemplateExtractor#build_metadata"]
  Woods__Extractors__ViewTemplateExtractor_partial_["Woods::Extractors::ViewTemplateExtractor#partial?"]
  Woods__Extractors__ViewTemplateExtractor_partial_ -->|method_call| File_basename
  Woods__Extractors__ViewTemplateExtractor_partial_ -->|method_call| File
  Woods__Extractors__ViewTemplateExtractor_extract_rendered_partials["Woods::Extractors::ViewTemplateExtractor#extract_rendered_partials"]
  Woods__Extractors__ViewTemplateExtractor_extract_rendered_partials -->|method_call| Set
  Woods__Extractors__ViewTemplateExtractor_extract_instance_variables["Woods::Extractors::ViewTemplateExtractor#extract_instance_variables"]
  Woods__Extractors__ViewTemplateExtractor_extract_helpers["Woods::Extractors::ViewTemplateExtractor#extract_helpers"]
  Woods__Extractors__ViewTemplateExtractor_extract_helpers -->|method_call| Set
  COMMON_HELPERS["COMMON_HELPERS"]
  Woods__Extractors__ViewTemplateExtractor_extract_helpers -->|method_call| COMMON_HELPERS
  Woods__Extractors__ViewTemplateExtractor_build_dependencies["Woods::Extractors::ViewTemplateExtractor#build_dependencies"]
  Woods__Extractors__ViewTemplateExtractor_resolve_partial_identifier["Woods::Extractors::ViewTemplateExtractor#resolve_partial_identifier"]
  Woods__Extractors__ViewTemplateExtractor_resolve_partial_identifier -->|method_call| File
  Woods__Extractors__ViewTemplateExtractor_infer_controller["Woods::Extractors::ViewTemplateExtractor#infer_controller"]
  Woods__Feedback["Woods::Feedback"]
  Woods__Feedback__GapDetector["Woods::Feedback::GapDetector"]
  Woods__Feedback__GapDetector_initialize["Woods::Feedback::GapDetector#initialize"]
  Woods__Feedback__GapDetector_detect["Woods::Feedback::GapDetector#detect"]
  Woods__Feedback__GapDetector_detect_low_score_patterns["Woods::Feedback::GapDetector#detect_low_score_patterns"]
  Woods__Feedback__GapDetector_count_keywords["Woods::Feedback::GapDetector#count_keywords"]
  Woods__Feedback__GapDetector_count_keywords -->|method_call| Hash
  Woods__Feedback__GapDetector_detect_frequently_missing["Woods::Feedback::GapDetector#detect_frequently_missing"]
  Woods__Feedback__GapDetector_detect_frequently_missing -->|method_call| Hash
  Woods__Feedback__Store["Woods::Feedback::Store"]
  Woods__Feedback__Store_initialize["Woods::Feedback::Store#initialize"]
  Woods__Feedback__Store_record_rating["Woods::Feedback::Store#record_rating"]
  Woods__Feedback__Store_record_gap["Woods::Feedback::Store#record_gap"]
  Woods__Feedback__Store_all_entries["Woods::Feedback::Store#all_entries"]
  Woods__Feedback__Store_all_entries -->|method_call| File
  Woods__Feedback__Store_all_entries -->|method_call| JSON
  Woods__Feedback__Store_ratings["Woods::Feedback::Store#ratings"]
  Woods__Feedback__Store_gaps["Woods::Feedback::Store#gaps"]
  Woods__Feedback__Store_average_score["Woods::Feedback::Store#average_score"]
  Woods__Feedback__Store_append["Woods::Feedback::Store#append"]
  Woods__Feedback__Store_append -->|method_call| FileUtils
  Woods__Feedback__Store_append -->|method_call| File
  Woods__FlowAnalysis["Woods::FlowAnalysis"]
  Woods__FlowAnalysis__OperationExtractor["Woods::FlowAnalysis::OperationExtractor"]
  Woods__FlowAnalysis__OperationExtractor_extract["Woods::FlowAnalysis::OperationExtractor#extract"]
  Woods__FlowAnalysis__OperationExtractor_walk["Woods::FlowAnalysis::OperationExtractor#walk"]
  Woods__FlowAnalysis__OperationExtractor_walk_children["Woods::FlowAnalysis::OperationExtractor#walk_children"]
  Woods__FlowAnalysis__OperationExtractor_handle_block["Woods::FlowAnalysis::OperationExtractor#handle_block"]
  Woods__FlowAnalysis__OperationExtractor_handle_send["Woods::FlowAnalysis::OperationExtractor#handle_send"]
  Woods__FlowAnalysis__OperationExtractor_handle_conditional["Woods::FlowAnalysis::OperationExtractor#handle_conditional"]
  Woods__FlowAnalysis__OperationExtractor_handle_case["Woods::FlowAnalysis::OperationExtractor#handle_case"]
  Woods__FlowAnalysis__OperationExtractor_transaction_call_["Woods::FlowAnalysis::OperationExtractor#transaction_call?"]
  TRANSACTION_METHODS["TRANSACTION_METHODS"]
  Woods__FlowAnalysis__OperationExtractor_transaction_call_ -->|method_call| TRANSACTION_METHODS
  Woods__FlowAnalysis__OperationExtractor_async_call_["Woods::FlowAnalysis::OperationExtractor#async_call?"]
  Woods__FlowAnalysis__OperationExtractor_async_call_ -->|method_call| ASYNC_METHODS
  Woods__FlowAnalysis__OperationExtractor_response_call_["Woods::FlowAnalysis::OperationExtractor#response_call?"]
  RESPONSE_METHODS["RESPONSE_METHODS"]
  Woods__FlowAnalysis__OperationExtractor_response_call_ -->|method_call| RESPONSE_METHODS
  Woods__FlowAnalysis__OperationExtractor_dynamic_dispatch_["Woods::FlowAnalysis::OperationExtractor#dynamic_dispatch?"]
  DYNAMIC_DISPATCH_METHODS["DYNAMIC_DISPATCH_METHODS"]
  Woods__FlowAnalysis__OperationExtractor_dynamic_dispatch_ -->|method_call| DYNAMIC_DISPATCH_METHODS
  Woods__FlowAnalysis__OperationExtractor_significant_call_["Woods::FlowAnalysis::OperationExtractor#significant_call?"]
  Ast__INSIGNIFICANT_METHODS["Ast::INSIGNIFICANT_METHODS"]
  Woods__FlowAnalysis__OperationExtractor_significant_call_ -->|method_call| Ast__INSIGNIFICANT_METHODS
  Woods__FlowAnalysis__ResponseCodeMapper["Woods::FlowAnalysis::ResponseCodeMapper"]
  Woods__FlowAnalysis__ResponseCodeMapper_resolve_method["Woods::FlowAnalysis::ResponseCodeMapper.resolve_method"]
  STATUS_CODES["STATUS_CODES"]
  Woods__FlowAnalysis__ResponseCodeMapper_resolve_method -->|method_call| STATUS_CODES
  Woods__FlowAnalysis__ResponseCodeMapper_resolve_status["Woods::FlowAnalysis::ResponseCodeMapper.resolve_status"]
  Woods__FlowAnalysis__ResponseCodeMapper_resolve_status -->|method_call| STATUS_CODES
  Woods__FlowAnalysis__ResponseCodeMapper_extract_status_from_args["Woods::FlowAnalysis::ResponseCodeMapper.extract_status_from_args"]
  Woods__FlowAssembler["Woods::FlowAssembler"]
  Woods__FlowAssembler_initialize["Woods::FlowAssembler#initialize"]
  Woods__FlowAssembler_initialize -->|method_call| Ast__Parser
  Woods__FlowAssembler_initialize -->|method_call| Ast__MethodExtractor
  Woods__FlowAssembler_initialize -->|method_call| FlowAnalysis__OperationExtractor
  Woods__FlowAssembler_assemble["Woods::FlowAssembler#assemble"]
  Woods__FlowAssembler_assemble -->|method_call| Set
  FlowDocument["FlowDocument"]
  Woods__FlowAssembler_assemble -->|method_call| FlowDocument
  Woods__FlowAssembler_expand["Woods::FlowAssembler#expand"]
  Woods__FlowAssembler_extract_operations["Woods::FlowAssembler#extract_operations"]
  Woods__FlowAssembler_prepend_callbacks["Woods::FlowAssembler#prepend_callbacks"]
  Woods__FlowAssembler_expand_operation["Woods::FlowAssembler#expand_operation"]
  Woods__FlowAssembler_resolve_target["Woods::FlowAssembler#resolve_target"]
  Woods__FlowAssembler_parse_identifier["Woods::FlowAssembler#parse_identifier"]
  Woods__FlowAssembler_load_unit["Woods::FlowAssembler#load_unit"]
  Woods__FlowAssembler_load_unit -->|method_call| Dir___
  Woods__FlowAssembler_load_unit -->|method_call| JSON
  Woods__FlowAssembler_extract_route["Woods::FlowAssembler#extract_route"]
  Woods__FlowDocument["Woods::FlowDocument"]
  Woods__FlowDocument_initialize["Woods::FlowDocument#initialize"]
  Woods__FlowDocument_initialize -->|method_call| Time_now
  Woods__FlowDocument_initialize -->|method_call| Time
  Woods__FlowDocument_to_h["Woods::FlowDocument#to_h"]
  Woods__FlowDocument_from_h["Woods::FlowDocument.from_h"]
  Woods__FlowDocument_deep_symbolize_keys["Woods::FlowDocument.deep_symbolize_keys"]
  Woods__FlowDocument_to_markdown["Woods::FlowDocument#to_markdown"]
  Woods__FlowDocument_format_header["Woods::FlowDocument#format_header"]
  Woods__FlowDocument_format_step["Woods::FlowDocument#format_step"]
  Woods__FlowDocument_format_operations["Woods::FlowDocument#format_operations"]
  Woods__FlowPrecomputer["Woods::FlowPrecomputer"]
  Woods__FlowPrecomputer_initialize["Woods::FlowPrecomputer#initialize"]
  Woods__FlowPrecomputer_initialize -->|method_call| File
  Woods__FlowPrecomputer_precompute["Woods::FlowPrecomputer#precompute"]
  Woods__FlowPrecomputer_precompute -->|method_call| FileUtils
  FlowAssembler["FlowAssembler"]
  Woods__FlowPrecomputer_precompute -->|method_call| FlowAssembler
  Woods__FlowPrecomputer_controller_units["Woods::FlowPrecomputer#controller_units"]
  Woods__FlowPrecomputer_assemble_and_write["Woods::FlowPrecomputer#assemble_and_write"]
  Woods__FlowPrecomputer_assemble_and_write -->|method_call| File
  Woods__FlowPrecomputer_assemble_and_write -->|method_call| Rails_logger
  Woods__FlowPrecomputer_assemble_and_write -->|method_call| Rails
  Woods__FlowPrecomputer_write_flow_index["Woods::FlowPrecomputer#write_flow_index"]
  Woods__FlowPrecomputer_write_flow_index -->|method_call| File
  Woods__Formatting["Woods::Formatting"]
  Woods__Formatting__Base["Woods::Formatting::Base"]
  Woods__Formatting__Base_format["Woods::Formatting::Base#format"]
  Woods__Formatting__Base_estimate_tokens["Woods::Formatting::Base#estimate_tokens"]
  Woods__Formatting__ClaudeAdapter["Woods::Formatting::ClaudeAdapter"]
  Base["Base"]
  Woods__Formatting__ClaudeAdapter -->|inheritance| Base
  Woods__Formatting__ClaudeAdapter_format["Woods::Formatting::ClaudeAdapter#format"]
  Woods__Formatting__ClaudeAdapter_format_content["Woods::Formatting::ClaudeAdapter#format_content"]
  Woods__Formatting__ClaudeAdapter_format_sources["Woods::Formatting::ClaudeAdapter#format_sources"]
  Woods__Formatting__ClaudeAdapter_source_attributes["Woods::Formatting::ClaudeAdapter#source_attributes"]
  Woods__Formatting__ClaudeAdapter_indent["Woods::Formatting::ClaudeAdapter#indent"]
  Woods__Formatting__ClaudeAdapter_escape_xml["Woods::Formatting::ClaudeAdapter#escape_xml"]
  Woods__Formatting__GenericAdapter["Woods::Formatting::GenericAdapter"]
  Woods__Formatting__GenericAdapter -->|inheritance| Base
  Woods__Formatting__GenericAdapter_format["Woods::Formatting::GenericAdapter#format"]
  Woods__Formatting__GenericAdapter_format_sources["Woods::Formatting::GenericAdapter#format_sources"]
  Woods__Formatting__GptAdapter["Woods::Formatting::GptAdapter"]
  Woods__Formatting__GptAdapter -->|inheritance| Base
  Woods__Formatting__GptAdapter_format["Woods::Formatting::GptAdapter#format"]
  Woods__Formatting__GptAdapter_format_sources["Woods::Formatting::GptAdapter#format_sources"]
  Woods__Formatting__HumanAdapter["Woods::Formatting::HumanAdapter"]
  Woods__Formatting__HumanAdapter -->|inheritance| Base
  Woods__Formatting__HumanAdapter_format["Woods::Formatting::HumanAdapter#format"]
  Woods__Formatting__HumanAdapter_format_header["Woods::Formatting::HumanAdapter#format_header"]
  Woods__Formatting__HumanAdapter_format_sources["Woods::Formatting::HumanAdapter#format_sources"]
  Woods__Formatting__HumanAdapter_format_source_entry["Woods::Formatting::HumanAdapter#format_source_entry"]
  Woods__GraphAnalyzer["Woods::GraphAnalyzer"]
  Woods__GraphAnalyzer_initialize["Woods::GraphAnalyzer#initialize"]
  Woods__GraphAnalyzer_orphans["Woods::GraphAnalyzer#orphans"]
  EXCLUDED_ORPHAN_TYPES["EXCLUDED_ORPHAN_TYPES"]
  Woods__GraphAnalyzer_orphans -->|method_call| EXCLUDED_ORPHAN_TYPES
  Woods__GraphAnalyzer_dead_ends["Woods::GraphAnalyzer#dead_ends"]
  Woods__GraphAnalyzer_hubs["Woods::GraphAnalyzer#hubs"]
  Woods__GraphAnalyzer_cycles["Woods::GraphAnalyzer#cycles"]
  Woods__GraphAnalyzer_bridges["Woods::GraphAnalyzer#bridges"]
  Woods__GraphAnalyzer_bridges -->|method_call| Hash
  Random["Random"]
  Woods__GraphAnalyzer_bridges -->|method_call| Random
  Woods__GraphAnalyzer_analyze["Woods::GraphAnalyzer#analyze"]
  Woods__GraphAnalyzer_graph_data["Woods::GraphAnalyzer#graph_data"]
  Woods__GraphAnalyzer_graph_nodes["Woods::GraphAnalyzer#graph_nodes"]
  Woods__GraphAnalyzer_graph_edges["Woods::GraphAnalyzer#graph_edges"]
  Woods__GraphAnalyzer_detect_cycles["Woods::GraphAnalyzer#detect_cycles"]
  Woods__GraphAnalyzer_detect_cycles -->|method_call| Hash
  Woods__GraphAnalyzer_detect_cycles -->|method_call| Set
  Woods__GraphAnalyzer_extract_cycle_from_path["Woods::GraphAnalyzer#extract_cycle_from_path"]
  Woods__GraphAnalyzer_normalize_cycle_signature["Woods::GraphAnalyzer#normalize_cycle_signature"]
  Woods__GraphAnalyzer_generate_sample_pairs["Woods::GraphAnalyzer#generate_sample_pairs"]
  Woods__GraphAnalyzer_generate_sample_pairs -->|method_call| Set
  Woods__GraphAnalyzer_bfs_shortest_path["Woods::GraphAnalyzer#bfs_shortest_path"]
  Woods__GraphAnalyzer_bfs_shortest_path -->|method_call| Set
  Woods__MCP["Woods::MCP"]
  Woods__MCP__IndexReader["Woods::MCP::IndexReader"]
  Woods__MCP__IndexReader_initialize["Woods::MCP::IndexReader#initialize"]
  Woods__MCP__IndexReader_initialize -->|method_call| Pathname
  Woods__MCP__IndexReader_reload_["Woods::MCP::IndexReader#reload!"]
  Woods__MCP__IndexReader_manifest["Woods::MCP::IndexReader#manifest"]
  Woods__MCP__IndexReader_summary["Woods::MCP::IndexReader#summary"]
  Woods__MCP__IndexReader_dependency_graph["Woods::MCP::IndexReader#dependency_graph"]
  Woods__MCP__IndexReader_dependency_graph -->|method_call| Woods__DependencyGraph
  Woods__MCP__IndexReader_graph_analysis["Woods::MCP::IndexReader#graph_analysis"]
  Woods__MCP__IndexReader_find_unit["Woods::MCP::IndexReader#find_unit"]
  Woods__MCP__IndexReader_list_units["Woods::MCP::IndexReader#list_units"]
  TYPE_TO_DIR["TYPE_TO_DIR"]
  Woods__MCP__IndexReader_list_units -->|method_call| TYPE_TO_DIR
  Woods__MCP__IndexReader_search["Woods::MCP::IndexReader#search"]
  Woods__MCP__IndexReader_search -->|method_call| Regexp
  Woods__MCP__IndexReader_search -->|method_call| TYPE_TO_DIR
  DIR_TO_TYPE["DIR_TO_TYPE"]
  Woods__MCP__IndexReader_search -->|method_call| DIR_TO_TYPE
  Woods__MCP__IndexReader_traverse_dependencies["Woods::MCP::IndexReader#traverse_dependencies"]
  Woods__MCP__IndexReader_traverse_dependents["Woods::MCP::IndexReader#traverse_dependents"]
  Woods__MCP__IndexReader_framework_sources["Woods::MCP::IndexReader#framework_sources"]
  Woods__MCP__IndexReader_framework_sources -->|method_call| Regexp
  Woods__MCP__IndexReader_recent_changes["Woods::MCP::IndexReader#recent_changes"]
  Woods__MCP__IndexReader_recent_changes -->|method_call| TYPE_TO_DIR
  Woods__MCP__IndexReader_raw_graph_data["Woods::MCP::IndexReader#raw_graph_data"]
  Woods__MCP__IndexReader_identifier_map["Woods::MCP::IndexReader#identifier_map"]
  Woods__MCP__IndexReader_build_identifier_map["Woods::MCP::IndexReader#build_identifier_map"]
  TYPE_DIRS["TYPE_DIRS"]
  Woods__MCP__IndexReader_build_identifier_map -->|method_call| TYPE_DIRS
  Woods__MCP__IndexReader_read_index["Woods::MCP::IndexReader#read_index"]
  Woods__MCP__IndexReader_read_index -->|method_call| JSON
  Woods__MCP__IndexReader_load_unit["Woods::MCP::IndexReader#load_unit"]
  Woods__MCP__IndexReader_load_unit -->|method_call| JSON
  Woods__MCP__IndexReader_parse_json["Woods::MCP::IndexReader#parse_json"]
  Woods__MCP__IndexReader_parse_json -->|method_call| JSON
  Woods__MCP__IndexReader_traverse["Woods::MCP::IndexReader#traverse"]
  Woods__MCP__IndexReader_traverse -->|method_call| Set
  Woods__MCP__Server["Woods::MCP::Server"]
  Woods__ModelNameCache["Woods::ModelNameCache"]
  Woods__Observability["Woods::Observability"]
  Woods__Observability__HealthCheck["Woods::Observability::HealthCheck"]
  Woods__Observability__HealthCheck_initialize["Woods::Observability::HealthCheck#initialize"]
  Woods__Observability__HealthCheck_run["Woods::Observability::HealthCheck#run"]
  HealthStatus["HealthStatus"]
  Woods__Observability__HealthCheck_run -->|method_call| HealthStatus
  Woods__Observability__HealthCheck_probe_store["Woods::Observability::HealthCheck#probe_store"]
  Woods__Observability__HealthCheck_probe_provider["Woods::Observability::HealthCheck#probe_provider"]
  Woods__Observability__Instrumentation["Woods::Observability::Instrumentation"]
  Woods__Observability__Instrumentation_instrument["Woods::Observability::Instrumentation#instrument"]
  ActiveSupport__Notifications["ActiveSupport::Notifications"]
  Woods__Observability__Instrumentation_instrument -->|method_call| ActiveSupport__Notifications
  Woods__Observability__StructuredLogger["Woods::Observability::StructuredLogger"]
  Woods__Observability__StructuredLogger_initialize["Woods::Observability::StructuredLogger#initialize"]
  Woods__Observability__StructuredLogger_info["Woods::Observability::StructuredLogger#info"]
  Woods__Observability__StructuredLogger_warn["Woods::Observability::StructuredLogger#warn"]
  Woods__Observability__StructuredLogger_error["Woods::Observability::StructuredLogger#error"]
  Woods__Observability__StructuredLogger_debug["Woods::Observability::StructuredLogger#debug"]
  Woods__Observability__StructuredLogger_write_entry["Woods::Observability::StructuredLogger#write_entry"]
  Woods__Operator["Woods::Operator"]
  Woods__Operator__ErrorEscalator["Woods::Operator::ErrorEscalator"]
  Woods__Operator__ErrorEscalator_classify["Woods::Operator::ErrorEscalator#classify"]
  Woods__Operator__ErrorEscalator_find_match["Woods::Operator::ErrorEscalator#find_match"]
  Woods__Operator__PipelineGuard["Woods::Operator::PipelineGuard"]
  Woods__Operator__PipelineGuard_initialize["Woods::Operator::PipelineGuard#initialize"]
  Woods__Operator__PipelineGuard_initialize -->|method_call| File
  Woods__Operator__PipelineGuard_allow_["Woods::Operator::PipelineGuard#allow?"]
  Woods__Operator__PipelineGuard_allow_ -->|method_call| Time_now
  Woods__Operator__PipelineGuard_allow_ -->|method_call| Time
  Woods__Operator__PipelineGuard_record_["Woods::Operator::PipelineGuard#record!"]
  Woods__Operator__PipelineGuard_record_ -->|method_call| FileUtils
  Woods__Operator__PipelineGuard_record_ -->|method_call| File
  Woods__Operator__PipelineGuard_record_ -->|method_call| JSON
  Woods__Operator__PipelineGuard_last_run["Woods::Operator::PipelineGuard#last_run"]
  Woods__Operator__PipelineGuard_last_run -->|method_call| Time
  Woods__Operator__PipelineGuard_read_state["Woods::Operator::PipelineGuard#read_state"]
  Woods__Operator__PipelineGuard_read_state -->|method_call| File
  Woods__Operator__PipelineGuard_read_state -->|method_call| JSON
  Woods__Operator__PipelineGuard_write_state["Woods::Operator::PipelineGuard#write_state"]
  Woods__Operator__PipelineGuard_write_state -->|method_call| FileUtils
  Woods__Operator__PipelineGuard_write_state -->|method_call| File
  Woods__Operator__StatusReporter["Woods::Operator::StatusReporter"]
  Woods__Operator__StatusReporter_initialize["Woods::Operator::StatusReporter#initialize"]
  Woods__Operator__StatusReporter_report["Woods::Operator::StatusReporter#report"]
  Woods__Operator__StatusReporter_read_manifest["Woods::Operator::StatusReporter#read_manifest"]
  Woods__Operator__StatusReporter_read_manifest -->|method_call| File
  Woods__Operator__StatusReporter_read_manifest -->|method_call| JSON
  Woods__Operator__StatusReporter_not_extracted_report["Woods::Operator::StatusReporter#not_extracted_report"]
  Woods__Operator__StatusReporter_compute_staleness["Woods::Operator::StatusReporter#compute_staleness"]
  Woods__Operator__StatusReporter_compute_staleness -->|method_call| Time_now
  Woods__Operator__StatusReporter_compute_staleness -->|method_call| Time
  Woods__Railtie["Woods::Railtie"]
  Rails__Railtie["Rails::Railtie"]
  Woods__Railtie -->|inheritance| Rails__Railtie
  Woods__Resilience["Woods::Resilience"]
  Woods__Resilience__CircuitOpenError["Woods::Resilience::CircuitOpenError"]
  Woods__Resilience__CircuitOpenError -->|inheritance| Woods__Error
  Woods__Resilience__CircuitBreaker["Woods::Resilience::CircuitBreaker"]
  Woods__Resilience__CircuitBreaker_initialize["Woods::Resilience::CircuitBreaker#initialize"]
  Woods__Resilience__CircuitBreaker_initialize -->|method_call| Mutex
  Woods__Resilience__CircuitBreaker_call["Woods::Resilience::CircuitBreaker#call"]
  Time_now__["Time.now.-"]
  Woods__Resilience__CircuitBreaker_call -->|method_call| Time_now__
  Woods__Resilience__CircuitBreaker_call -->|method_call| Time_now
  Woods__Resilience__CircuitBreaker_call -->|method_call| Time
  Woods__Resilience__CircuitBreaker_record_failure["Woods::Resilience::CircuitBreaker#record_failure"]
  Woods__Resilience__CircuitBreaker_record_failure -->|method_call| Time
  Woods__Resilience__CircuitBreaker_reset_["Woods::Resilience::CircuitBreaker#reset!"]
  Woods__Resilience__IndexValidator["Woods::Resilience::IndexValidator"]
  Woods__Resilience__IndexValidator_initialize["Woods::Resilience::IndexValidator#initialize"]
  Woods__Resilience__IndexValidator_validate["Woods::Resilience::IndexValidator#validate"]
  Woods__Resilience__IndexValidator_validate -->|method_call| Dir
  ValidationReport["ValidationReport"]
  Woods__Resilience__IndexValidator_validate -->|method_call| ValidationReport
  Dir_children["Dir.children"]
  Woods__Resilience__IndexValidator_validate -->|method_call| Dir_children
  Woods__Resilience__IndexValidator_validate -->|method_call| File
  Woods__Resilience__IndexValidator_validate_type_directory["Woods::Resilience::IndexValidator#validate_type_directory"]
  Woods__Resilience__IndexValidator_validate_type_directory -->|method_call| File
  Woods__Resilience__IndexValidator_validate_type_directory -->|method_call| JSON
  Woods__Resilience__IndexValidator_validate_type_directory -->|method_call| Set
  Woods__Resilience__IndexValidator_validate_index_entry["Woods::Resilience::IndexValidator#validate_index_entry"]
  Woods__Resilience__IndexValidator_find_unit_file["Woods::Resilience::IndexValidator#find_unit_file"]
  Woods__Resilience__IndexValidator_find_unit_file -->|method_call| File
  Woods__Resilience__IndexValidator_validate_content_hash["Woods::Resilience::IndexValidator#validate_content_hash"]
  Woods__Resilience__IndexValidator_validate_content_hash -->|method_call| JSON
  Woods__Resilience__IndexValidator_validate_content_hash -->|method_call| Digest__SHA256
  Woods__Resilience__IndexValidator_check_stale_files["Woods::Resilience::IndexValidator#check_stale_files"]
  Woods__Resilience__IndexValidator_check_stale_files -->|method_call| Dir___
  Woods__Resilience__IndexValidator_check_stale_files -->|method_call| File
  Woods__Resilience__IndexValidator_safe_filename["Woods::Resilience::IndexValidator#safe_filename"]
  Woods__Resilience__RetryableProvider["Woods::Resilience::RetryableProvider"]
  Woods__Resilience__RetryableProvider -->|include| Woods__Embedding__Provider__Interface
  Woods__Resilience__RetryableProvider_initialize["Woods::Resilience::RetryableProvider#initialize"]
  Woods__Resilience__RetryableProvider_embed["Woods::Resilience::RetryableProvider#embed"]
  Woods__Resilience__RetryableProvider_embed_batch["Woods::Resilience::RetryableProvider#embed_batch"]
  Woods__Resilience__RetryableProvider_dimensions["Woods::Resilience::RetryableProvider#dimensions"]
  Woods__Resilience__RetryableProvider_model_name["Woods::Resilience::RetryableProvider#model_name"]
  Woods__Resilience__RetryableProvider_with_retries["Woods::Resilience::RetryableProvider#with_retries"]
  Woods__Resilience__RetryableProvider_call_provider["Woods::Resilience::RetryableProvider#call_provider"]
  Woods__Retrieval["Woods::Retrieval"]
  Woods__Retrieval__ContextAssembler["Woods::Retrieval::ContextAssembler"]
  Woods__Retrieval__ContextAssembler_initialize["Woods::Retrieval::ContextAssembler#initialize"]
  Woods__Retrieval__ContextAssembler_assemble["Woods::Retrieval::ContextAssembler#assemble"]
  Woods__Retrieval__ContextAssembler_add_structural_section["Woods::Retrieval::ContextAssembler#add_structural_section"]
  Woods__Retrieval__ContextAssembler_add_candidate_section["Woods::Retrieval::ContextAssembler#add_candidate_section"]
  Woods__Retrieval__ContextAssembler_compute_section_budgets["Woods::Retrieval::ContextAssembler#compute_section_budgets"]
  Woods__Retrieval__ContextAssembler_assemble_section["Woods::Retrieval::ContextAssembler#assemble_section"]
  Woods__Retrieval__ContextAssembler_append_candidate["Woods::Retrieval::ContextAssembler#append_candidate"]
  Woods__Retrieval__ContextAssembler_format_unit["Woods::Retrieval::ContextAssembler#format_unit"]
  Woods__Retrieval__ContextAssembler_build_source_attribution["Woods::Retrieval::ContextAssembler#build_source_attribution"]
  Woods__Retrieval__ContextAssembler_framework_candidate_["Woods::Retrieval::ContextAssembler#framework_candidate?"]
  Woods__Retrieval__ContextAssembler_truncate_to_budget["Woods::Retrieval::ContextAssembler#truncate_to_budget"]
  Woods__Retrieval__ContextAssembler_estimate_tokens["Woods::Retrieval::ContextAssembler#estimate_tokens"]
  Woods__Retrieval__ContextAssembler_build_result["Woods::Retrieval::ContextAssembler#build_result"]
  AssembledContext["AssembledContext"]
  Woods__Retrieval__ContextAssembler_build_result -->|method_call| AssembledContext
  Woods__Retrieval__QueryClassifier["Woods::Retrieval::QueryClassifier"]
  Woods__Retrieval__QueryClassifier_classify["Woods::Retrieval::QueryClassifier#classify"]
  Classification["Classification"]
  Woods__Retrieval__QueryClassifier_classify -->|method_call| Classification
  Woods__Retrieval__QueryClassifier_detect_intent["Woods::Retrieval::QueryClassifier#detect_intent"]
  INTENT_PATTERNS["INTENT_PATTERNS"]
  Woods__Retrieval__QueryClassifier_detect_intent -->|method_call| INTENT_PATTERNS
  Woods__Retrieval__QueryClassifier_detect_scope["Woods::Retrieval::QueryClassifier#detect_scope"]
  SCOPE_PATTERNS["SCOPE_PATTERNS"]
  Woods__Retrieval__QueryClassifier_detect_scope -->|method_call| SCOPE_PATTERNS
  Woods__Retrieval__QueryClassifier_detect_target_type["Woods::Retrieval::QueryClassifier#detect_target_type"]
  TARGET_PATTERNS["TARGET_PATTERNS"]
  Woods__Retrieval__QueryClassifier_detect_target_type -->|method_call| TARGET_PATTERNS
  Woods__Retrieval__QueryClassifier_framework_query_["Woods::Retrieval::QueryClassifier#framework_query?"]
  Woods__Retrieval__QueryClassifier_extract_keywords["Woods::Retrieval::QueryClassifier#extract_keywords"]
  STOP_WORDS["STOP_WORDS"]
  Woods__Retrieval__QueryClassifier_extract_keywords -->|method_call| STOP_WORDS
  Woods__Retrieval__Ranker["Woods::Retrieval::Ranker"]
  Woods__Retrieval__Ranker_initialize["Woods::Retrieval::Ranker#initialize"]
  Woods__Retrieval__Ranker_rank["Woods::Retrieval::Ranker#rank"]
  Woods__Retrieval__Ranker_multi_source_["Woods::Retrieval::Ranker#multi_source?"]
  Woods__Retrieval__Ranker_apply_rrf["Woods::Retrieval::Ranker#apply_rrf"]
  Woods__Retrieval__Ranker_compute_rrf_scores["Woods::Retrieval::Ranker#compute_rrf_scores"]
  Woods__Retrieval__Ranker_compute_rrf_scores -->|method_call| Hash
  Woods__Retrieval__Ranker_rebuild_rrf_candidates["Woods::Retrieval::Ranker#rebuild_rrf_candidates"]
  Woods__Retrieval__Ranker_score_candidates["Woods::Retrieval::Ranker#score_candidates"]
  Woods__Retrieval__Ranker_sorted_by_weighted_score["Woods::Retrieval::Ranker#sorted_by_weighted_score"]
  Woods__Retrieval__Ranker_keyword_score["Woods::Retrieval::Ranker#keyword_score"]
  Woods__Retrieval__Ranker_recency_score["Woods::Retrieval::Ranker#recency_score"]
  Woods__Retrieval__Ranker_importance_score["Woods::Retrieval::Ranker#importance_score"]
  Woods__Retrieval__Ranker_type_match_score["Woods::Retrieval::Ranker#type_match_score"]
  Woods__Retrieval__Ranker_apply_diversity_penalty["Woods::Retrieval::Ranker#apply_diversity_penalty"]
  Woods__Retrieval__Ranker_apply_diversity_penalty -->|method_call| Hash
  Woods__Retrieval__Ranker_diversity_penalty_for["Woods::Retrieval::Ranker#diversity_penalty_for"]
  Woods__Retrieval__Ranker_dig_metadata["Woods::Retrieval::Ranker#dig_metadata"]
  Woods__Retrieval__Ranker_build_candidate["Woods::Retrieval::Ranker#build_candidate"]
  SearchExecutor__Candidate["SearchExecutor::Candidate"]
  Woods__Retrieval__Ranker_build_candidate -->|method_call| SearchExecutor__Candidate
  Woods__Retrieval__SearchExecutor["Woods::Retrieval::SearchExecutor"]
  Woods__Retrieval__SearchExecutor_initialize["Woods::Retrieval::SearchExecutor#initialize"]
  Woods__Retrieval__SearchExecutor_execute["Woods::Retrieval::SearchExecutor#execute"]
  ExecutionResult["ExecutionResult"]
  Woods__Retrieval__SearchExecutor_execute -->|method_call| ExecutionResult
  Woods__Retrieval__SearchExecutor_select_strategy["Woods::Retrieval::SearchExecutor#select_strategy"]
  STRATEGY_MAP["STRATEGY_MAP"]
  Woods__Retrieval__SearchExecutor_select_strategy -->|method_call| STRATEGY_MAP
  Woods__Retrieval__SearchExecutor_run_strategy["Woods::Retrieval::SearchExecutor#run_strategy"]
  Woods__Retrieval__SearchExecutor_execute_vector["Woods::Retrieval::SearchExecutor#execute_vector"]
  Candidate["Candidate"]
  Woods__Retrieval__SearchExecutor_execute_vector -->|method_call| Candidate
  Woods__Retrieval__SearchExecutor_execute_keyword["Woods::Retrieval::SearchExecutor#execute_keyword"]
  Woods__Retrieval__SearchExecutor_merge_keyword_results["Woods::Retrieval::SearchExecutor#merge_keyword_results"]
  Woods__Retrieval__SearchExecutor_rank_keyword_results["Woods::Retrieval::SearchExecutor#rank_keyword_results"]
  Woods__Retrieval__SearchExecutor_rank_keyword_results -->|method_call| Candidate
  Woods__Retrieval__SearchExecutor_execute_graph["Woods::Retrieval::SearchExecutor#execute_graph"]
  Woods__Retrieval__SearchExecutor_execute_hybrid["Woods::Retrieval::SearchExecutor#execute_hybrid"]
  Woods__Retrieval__SearchExecutor_execute_direct["Woods::Retrieval::SearchExecutor#execute_direct"]
  Woods__Retrieval__SearchExecutor_lookup_keyword_variants["Woods::Retrieval::SearchExecutor#lookup_keyword_variants"]
  Woods__Retrieval__SearchExecutor_build_vector_filters["Woods::Retrieval::SearchExecutor#build_vector_filters"]
  Woods__Retrieval__SearchExecutor_find_seed_identifiers["Woods::Retrieval::SearchExecutor#find_seed_identifiers"]
  Woods__Retrieval__SearchExecutor_deduplicate["Woods::Retrieval::SearchExecutor#deduplicate"]
  Woods__Retriever["Woods::Retriever"]
  Woods__Retriever_initialize["Woods::Retriever#initialize"]
  Retrieval__QueryClassifier["Retrieval::QueryClassifier"]
  Woods__Retriever_initialize -->|method_call| Retrieval__QueryClassifier
  Retrieval__SearchExecutor["Retrieval::SearchExecutor"]
  Woods__Retriever_initialize -->|method_call| Retrieval__SearchExecutor
  Retrieval__Ranker["Retrieval::Ranker"]
  Woods__Retriever_initialize -->|method_call| Retrieval__Ranker
  Retrieval__ContextAssembler["Retrieval::ContextAssembler"]
  Woods__Retriever_initialize -->|method_call| Retrieval__ContextAssembler
  Woods__Retriever_retrieve["Woods::Retriever#retrieve"]
  Woods__Retriever_retrieve -->|method_call| Process
  Woods__Retriever_retrieve -->|method_call| Process_clock_gettime
  RetrievalTrace["RetrievalTrace"]
  Woods__Retriever_retrieve -->|method_call| RetrievalTrace
  Woods__Retriever_assemble_context["Woods::Retriever#assemble_context"]
  Woods__Retriever_build_result["Woods::Retriever#build_result"]
  RetrievalResult["RetrievalResult"]
  Woods__Retriever_build_result -->|method_call| RetrievalResult
  Woods__Retriever_build_structural_context["Woods::Retriever#build_structural_context"]
  STRUCTURAL_TYPES["STRUCTURAL_TYPES"]
  Woods__Retriever_build_structural_context -->|method_call| STRUCTURAL_TYPES
  Woods__Retriever_count_by_type["Woods::Retriever#count_by_type"]
  Woods__RubyAnalyzer["Woods::RubyAnalyzer"]
  Woods__RubyAnalyzer__ClassAnalyzer["Woods::RubyAnalyzer::ClassAnalyzer"]
  FqnBuilder["FqnBuilder"]
  Woods__RubyAnalyzer__ClassAnalyzer -->|include| FqnBuilder
  Woods__RubyAnalyzer__ClassAnalyzer_initialize["Woods::RubyAnalyzer::ClassAnalyzer#initialize"]
  Woods__RubyAnalyzer__ClassAnalyzer_initialize -->|method_call| Ast__Parser
  Woods__RubyAnalyzer__ClassAnalyzer_analyze["Woods::RubyAnalyzer::ClassAnalyzer#analyze"]
  Woods__RubyAnalyzer__ClassAnalyzer_extract_definitions["Woods::RubyAnalyzer::ClassAnalyzer#extract_definitions"]
  Woods__RubyAnalyzer__ClassAnalyzer_process_class["Woods::RubyAnalyzer::ClassAnalyzer#process_class"]
  Woods__RubyAnalyzer__ClassAnalyzer_process_module["Woods::RubyAnalyzer::ClassAnalyzer#process_module"]
  Woods__RubyAnalyzer__ClassAnalyzer_process_definition["Woods::RubyAnalyzer::ClassAnalyzer#process_definition"]
  Woods__RubyAnalyzer__ClassAnalyzer_process_definition -->|method_call| ExtractedUnit
  Woods__RubyAnalyzer__ClassAnalyzer_build_namespace["Woods::RubyAnalyzer::ClassAnalyzer#build_namespace"]
  Woods__RubyAnalyzer__ClassAnalyzer_fqn_parts["Woods::RubyAnalyzer::ClassAnalyzer#fqn_parts"]
  Woods__RubyAnalyzer__ClassAnalyzer_extract_superclass["Woods::RubyAnalyzer::ClassAnalyzer#extract_superclass"]
  Woods__RubyAnalyzer__ClassAnalyzer_body_children["Woods::RubyAnalyzer::ClassAnalyzer#body_children"]
  Woods__RubyAnalyzer__ClassAnalyzer_extract_mixins["Woods::RubyAnalyzer::ClassAnalyzer#extract_mixins"]
  Woods__RubyAnalyzer__ClassAnalyzer_extract_constants["Woods::RubyAnalyzer::ClassAnalyzer#extract_constants"]
  Woods__RubyAnalyzer__ClassAnalyzer_count_methods["Woods::RubyAnalyzer::ClassAnalyzer#count_methods"]
  Woods__RubyAnalyzer__ClassAnalyzer_build_const_name["Woods::RubyAnalyzer::ClassAnalyzer#build_const_name"]
  Woods__RubyAnalyzer__ClassAnalyzer_extract_source["Woods::RubyAnalyzer::ClassAnalyzer#extract_source"]
  Woods__RubyAnalyzer__ClassAnalyzer_build_dependencies["Woods::RubyAnalyzer::ClassAnalyzer#build_dependencies"]
  Woods__RubyAnalyzer__DataFlowAnalyzer["Woods::RubyAnalyzer::DataFlowAnalyzer"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_initialize["Woods::RubyAnalyzer::DataFlowAnalyzer#initialize"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_initialize -->|method_call| Ast__Parser
  Ast__CallSiteExtractor["Ast::CallSiteExtractor"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_initialize -->|method_call| Ast__CallSiteExtractor
  Woods__RubyAnalyzer__DataFlowAnalyzer_annotate["Woods::RubyAnalyzer::DataFlowAnalyzer#annotate"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_detect_transformations["Woods::RubyAnalyzer::DataFlowAnalyzer#detect_transformations"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_categorize["Woods::RubyAnalyzer::DataFlowAnalyzer#categorize"]
  CONSTRUCTION_METHODS["CONSTRUCTION_METHODS"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_categorize -->|method_call| CONSTRUCTION_METHODS
  SERIALIZATION_METHODS["SERIALIZATION_METHODS"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_categorize -->|method_call| SERIALIZATION_METHODS
  DESERIALIZATION_METHODS["DESERIALIZATION_METHODS"]
  Woods__RubyAnalyzer__DataFlowAnalyzer_categorize -->|method_call| DESERIALIZATION_METHODS
  Woods__RubyAnalyzer__FqnBuilder["Woods::RubyAnalyzer::FqnBuilder"]
  Woods__RubyAnalyzer__FqnBuilder_build_fqn["Woods::RubyAnalyzer::FqnBuilder#build_fqn"]
  Woods__RubyAnalyzer__MermaidRenderer["Woods::RubyAnalyzer::MermaidRenderer"]
  Woods__RubyAnalyzer__MermaidRenderer_render_call_graph["Woods::RubyAnalyzer::MermaidRenderer#render_call_graph"]
  Woods__RubyAnalyzer__MermaidRenderer_render_dependency_map["Woods::RubyAnalyzer::MermaidRenderer#render_dependency_map"]
  Woods__RubyAnalyzer__MermaidRenderer_render_dataflow["Woods::RubyAnalyzer::MermaidRenderer#render_dataflow"]
  Woods__RubyAnalyzer__MermaidRenderer_render_architecture["Woods::RubyAnalyzer::MermaidRenderer#render_architecture"]
  Woods__RubyAnalyzer__MermaidRenderer_sanitize_id["Woods::RubyAnalyzer::MermaidRenderer#sanitize_id"]
  Woods__RubyAnalyzer__MermaidRenderer_escape_label["Woods::RubyAnalyzer::MermaidRenderer#escape_label"]
  Woods__RubyAnalyzer__MermaidRenderer_dataflow_shape["Woods::RubyAnalyzer::MermaidRenderer#dataflow_shape"]
  Woods__RubyAnalyzer__MethodAnalyzer["Woods::RubyAnalyzer::MethodAnalyzer"]
  Woods__RubyAnalyzer__MethodAnalyzer -->|include| FqnBuilder
  Woods__RubyAnalyzer__MethodAnalyzer__VisibilityTracker["Woods::RubyAnalyzer::MethodAnalyzer::VisibilityTracker"]
  Woods__RubyAnalyzer__MethodAnalyzer_initialize["Woods::RubyAnalyzer::MethodAnalyzer#initialize"]
  Woods__RubyAnalyzer__MethodAnalyzer_initialize -->|method_call| Ast__Parser
  Woods__RubyAnalyzer__MethodAnalyzer_initialize -->|method_call| Ast__CallSiteExtractor
  Woods__RubyAnalyzer__MethodAnalyzer_analyze["Woods::RubyAnalyzer::MethodAnalyzer#analyze"]
  Woods__RubyAnalyzer__MethodAnalyzer_extract_methods_from_tree["Woods::RubyAnalyzer::MethodAnalyzer#extract_methods_from_tree"]
  Woods__RubyAnalyzer__MethodAnalyzer_process_container_methods["Woods::RubyAnalyzer::MethodAnalyzer#process_container_methods"]
  VisibilityTracker["VisibilityTracker"]
  Woods__RubyAnalyzer__MethodAnalyzer_process_container_methods -->|method_call| VisibilityTracker
  Woods__RubyAnalyzer__MethodAnalyzer_build_method_unit["Woods::RubyAnalyzer::MethodAnalyzer#build_method_unit"]
  Woods__RubyAnalyzer__MethodAnalyzer_build_method_unit -->|method_call| ExtractedUnit
  Woods__RubyAnalyzer__MethodAnalyzer_extract_call_graph["Woods::RubyAnalyzer::MethodAnalyzer#extract_call_graph"]
  Woods__RubyAnalyzer__MethodAnalyzer_build_dependencies["Woods::RubyAnalyzer::MethodAnalyzer#build_dependencies"]
  Woods__RubyAnalyzer__MethodAnalyzer__VisibilityTracker_initialize["Woods::RubyAnalyzer::MethodAnalyzer::VisibilityTracker#initialize"]
  Woods__RubyAnalyzer__MethodAnalyzer__VisibilityTracker_process_send["Woods::RubyAnalyzer::MethodAnalyzer::VisibilityTracker#process_send"]
  VISIBILITY_METHODS["VISIBILITY_METHODS"]
  Woods__RubyAnalyzer__MethodAnalyzer__VisibilityTracker_process_send -->|method_call| VISIBILITY_METHODS
  Woods__RubyAnalyzer__TraceEnricher["Woods::RubyAnalyzer::TraceEnricher"]
  Woods__RubyAnalyzer__TraceEnricher_record["Woods::RubyAnalyzer::TraceEnricher.record"]
  TracePoint["TracePoint"]
  Woods__RubyAnalyzer__TraceEnricher_record -->|method_call| TracePoint
  Woods__RubyAnalyzer__TraceEnricher_merge["Woods::RubyAnalyzer::TraceEnricher.merge"]
  Woods__SessionTracer["Woods::SessionTracer"]
  Woods__SessionTracer__FileStore["Woods::SessionTracer::FileStore"]
  Store["Store"]
  Woods__SessionTracer__FileStore -->|inheritance| Store
  Woods__SessionTracer__FileStore_initialize["Woods::SessionTracer::FileStore#initialize"]
  Woods__SessionTracer__FileStore_initialize -->|method_call| FileUtils
  Woods__SessionTracer__FileStore_record["Woods::SessionTracer::FileStore#record"]
  Woods__SessionTracer__FileStore_record -->|method_call| File
  Woods__SessionTracer__FileStore_read["Woods::SessionTracer::FileStore#read"]
  Woods__SessionTracer__FileStore_read -->|method_call| File
  Woods__SessionTracer__FileStore_read -->|method_call| File_readlines
  Woods__SessionTracer__FileStore_read -->|method_call| JSON
  Woods__SessionTracer__FileStore_sessions["Woods::SessionTracer::FileStore#sessions"]
  Woods__SessionTracer__FileStore_sessions -->|method_call| File
  Woods__SessionTracer__FileStore_sessions -->|method_call| Dir_glob
  File_mtime_to_f["File.mtime.to_f"]
  Woods__SessionTracer__FileStore_sessions -->|method_call| File_mtime_to_f
  File_mtime["File.mtime"]
  Woods__SessionTracer__FileStore_sessions -->|method_call| File_mtime
  Woods__SessionTracer__FileStore_clear["Woods::SessionTracer::FileStore#clear"]
  Woods__SessionTracer__FileStore_clear -->|method_call| FileUtils
  Woods__SessionTracer__FileStore_clear_all["Woods::SessionTracer::FileStore#clear_all"]
  Woods__SessionTracer__FileStore_clear_all -->|method_call| File
  Woods__SessionTracer__FileStore_clear_all -->|method_call| Dir_glob
  Woods__SessionTracer__FileStore_session_path["Woods::SessionTracer::FileStore#session_path"]
  Woods__SessionTracer__FileStore_session_path -->|method_call| File
  Woods__SessionTracer__Middleware["Woods::SessionTracer::Middleware"]
  Woods__SessionTracer__Middleware_initialize["Woods::SessionTracer::Middleware#initialize"]
  Woods__SessionTracer__Middleware_call["Woods::SessionTracer::Middleware#call"]
  Woods__SessionTracer__Middleware_call -->|method_call| Process
  Woods__SessionTracer__Middleware_call -->|method_call| Process_clock_gettime
  Woods__SessionTracer__Middleware_record_request["Woods::SessionTracer::Middleware#record_request"]
  Woods__SessionTracer__Middleware_extract_session_id["Woods::SessionTracer::Middleware#extract_session_id"]
  Woods__SessionTracer__Middleware_excluded_["Woods::SessionTracer::Middleware#excluded?"]
  Woods__SessionTracer__Middleware_classify_controller["Woods::SessionTracer::Middleware#classify_controller"]
  Woods__SessionTracer__Middleware_extract_format["Woods::SessionTracer::Middleware#extract_format"]
  Woods__SessionTracer__RedisStore["Woods::SessionTracer::RedisStore"]
  Woods__SessionTracer__RedisStore -->|inheritance| Store
  Woods__SessionTracer__RedisStore_initialize["Woods::SessionTracer::RedisStore#initialize"]
  Woods__SessionTracer__RedisStore_record["Woods::SessionTracer::RedisStore#record"]
  Woods__SessionTracer__RedisStore_read["Woods::SessionTracer::RedisStore#read"]
  Woods__SessionTracer__RedisStore_read -->|method_call| JSON
  Woods__SessionTracer__RedisStore_sessions["Woods::SessionTracer::RedisStore#sessions"]
  Woods__SessionTracer__RedisStore_clear["Woods::SessionTracer::RedisStore#clear"]
  Woods__SessionTracer__RedisStore_clear_all["Woods::SessionTracer::RedisStore#clear_all"]
  Woods__SessionTracer__RedisStore_session_key["Woods::SessionTracer::RedisStore#session_key"]
  Woods__SessionTracer__SessionFlowAssembler["Woods::SessionTracer::SessionFlowAssembler"]
  Woods__SessionTracer__SessionFlowAssembler_initialize["Woods::SessionTracer::SessionFlowAssembler#initialize"]
  Woods__SessionTracer__SessionFlowAssembler_assemble["Woods::SessionTracer::SessionFlowAssembler#assemble"]
  Woods__SessionTracer__SessionFlowAssembler_assemble -->|method_call| Set
  SessionFlowDocument["SessionFlowDocument"]
  Woods__SessionTracer__SessionFlowAssembler_assemble -->|method_call| SessionFlowDocument
  Woods__SessionTracer__SessionFlowAssembler_build_step["Woods::SessionTracer::SessionFlowAssembler#build_step"]
  Woods__SessionTracer__SessionFlowAssembler_resolve_dependencies["Woods::SessionTracer::SessionFlowAssembler#resolve_dependencies"]
  ASYNC_TYPES["ASYNC_TYPES"]
  Woods__SessionTracer__SessionFlowAssembler_resolve_dependencies -->|method_call| ASYNC_TYPES
  Woods__SessionTracer__SessionFlowAssembler_expand_transitive["Woods::SessionTracer::SessionFlowAssembler#expand_transitive"]
  Woods__SessionTracer__SessionFlowAssembler_unit_summary["Woods::SessionTracer::SessionFlowAssembler#unit_summary"]
  Woods__SessionTracer__SessionFlowAssembler_apply_budget["Woods::SessionTracer::SessionFlowAssembler#apply_budget"]
  Woods__SessionTracer__SessionFlowAssembler_estimate_tokens["Woods::SessionTracer::SessionFlowAssembler#estimate_tokens"]
  Woods__SessionTracer__SessionFlowAssembler_estimate_token_count["Woods::SessionTracer::SessionFlowAssembler#estimate_token_count"]
  Woods__SessionTracer__SessionFlowAssembler_empty_document["Woods::SessionTracer::SessionFlowAssembler#empty_document"]
  Woods__SessionTracer__SessionFlowAssembler_empty_document -->|method_call| SessionFlowDocument
  Woods__SessionTracer__SessionFlowDocument["Woods::SessionTracer::SessionFlowDocument"]
  Woods__SessionTracer__SessionFlowDocument_initialize["Woods::SessionTracer::SessionFlowDocument#initialize"]
  Time_now_utc["Time.now.utc"]
  Woods__SessionTracer__SessionFlowDocument_initialize -->|method_call| Time_now_utc
  Woods__SessionTracer__SessionFlowDocument_initialize -->|method_call| Time_now
  Woods__SessionTracer__SessionFlowDocument_initialize -->|method_call| Time
  Woods__SessionTracer__SessionFlowDocument_to_h["Woods::SessionTracer::SessionFlowDocument#to_h"]
  Woods__SessionTracer__SessionFlowDocument_from_h["Woods::SessionTracer::SessionFlowDocument.from_h"]
  Woods__SessionTracer__SessionFlowDocument_to_markdown["Woods::SessionTracer::SessionFlowDocument#to_markdown"]
  Woods__SessionTracer__SessionFlowDocument_to_context["Woods::SessionTracer::SessionFlowDocument#to_context"]
  Woods__SessionTracer__SessionFlowDocument_deep_symbolize_keys["Woods::SessionTracer::SessionFlowDocument.deep_symbolize_keys"]
  Woods__SessionTracer__SolidCacheStore["Woods::SessionTracer::SolidCacheStore"]
  Woods__SessionTracer__SolidCacheStore -->|inheritance| Store
  Woods__SessionTracer__SolidCacheStore_initialize["Woods::SessionTracer::SolidCacheStore#initialize"]
  Woods__SessionTracer__SolidCacheStore_record["Woods::SessionTracer::SolidCacheStore#record"]
  Woods__SessionTracer__SolidCacheStore_record -->|method_call| JSON
  Woods__SessionTracer__SolidCacheStore_read["Woods::SessionTracer::SolidCacheStore#read"]
  Woods__SessionTracer__SolidCacheStore_read -->|method_call| JSON
  Woods__SessionTracer__SolidCacheStore_sessions["Woods::SessionTracer::SolidCacheStore#sessions"]
  Woods__SessionTracer__SolidCacheStore_clear["Woods::SessionTracer::SolidCacheStore#clear"]
  Woods__SessionTracer__SolidCacheStore_clear_all["Woods::SessionTracer::SolidCacheStore#clear_all"]
  Woods__SessionTracer__SolidCacheStore_session_key["Woods::SessionTracer::SolidCacheStore#session_key"]
  Woods__SessionTracer__SolidCacheStore_read_index["Woods::SessionTracer::SolidCacheStore#read_index"]
  Woods__SessionTracer__SolidCacheStore_read_index -->|method_call| JSON
  Woods__SessionTracer__SolidCacheStore_write_index["Woods::SessionTracer::SolidCacheStore#write_index"]
  Woods__SessionTracer__SolidCacheStore_update_index["Woods::SessionTracer::SolidCacheStore#update_index"]
  Woods__SessionTracer__Store["Woods::SessionTracer::Store"]
  Woods__SessionTracer__Store_record["Woods::SessionTracer::Store#record"]
  Woods__SessionTracer__Store_read["Woods::SessionTracer::Store#read"]
  Woods__SessionTracer__Store_sessions["Woods::SessionTracer::Store#sessions"]
  Woods__SessionTracer__Store_clear["Woods::SessionTracer::Store#clear"]
  Woods__SessionTracer__Store_clear_all["Woods::SessionTracer::Store#clear_all"]
  Woods__SessionTracer__Store_sanitize_session_id["Woods::SessionTracer::Store#sanitize_session_id"]
  Woods__Storage["Woods::Storage"]
  Woods__Storage__GraphStore["Woods::Storage::GraphStore"]
  Woods__Storage__GraphStore__Interface["Woods::Storage::GraphStore::Interface"]
  Woods__Storage__GraphStore__Memory["Woods::Storage::GraphStore::Memory"]
  Woods__Storage__GraphStore__Memory -->|include| Interface
  Woods__Storage__GraphStore__Interface_dependencies_of["Woods::Storage::GraphStore::Interface#dependencies_of"]
  Woods__Storage__GraphStore__Interface_dependents_of["Woods::Storage::GraphStore::Interface#dependents_of"]
  Woods__Storage__GraphStore__Interface_affected_by["Woods::Storage::GraphStore::Interface#affected_by"]
  Woods__Storage__GraphStore__Interface_by_type["Woods::Storage::GraphStore::Interface#by_type"]
  Woods__Storage__GraphStore__Interface_pagerank["Woods::Storage::GraphStore::Interface#pagerank"]
  Woods__Storage__GraphStore__Memory_initialize["Woods::Storage::GraphStore::Memory#initialize"]
  Woods__Storage__GraphStore__Memory_initialize -->|method_call| DependencyGraph
  Woods__Storage__GraphStore__Memory_register["Woods::Storage::GraphStore::Memory#register"]
  Woods__Storage__GraphStore__Memory_dependencies_of["Woods::Storage::GraphStore::Memory#dependencies_of"]
  Woods__Storage__GraphStore__Memory_dependents_of["Woods::Storage::GraphStore::Memory#dependents_of"]
  Woods__Storage__GraphStore__Memory_affected_by["Woods::Storage::GraphStore::Memory#affected_by"]
  Woods__Storage__GraphStore__Memory_by_type["Woods::Storage::GraphStore::Memory#by_type"]
  Woods__Storage__GraphStore__Memory_pagerank["Woods::Storage::GraphStore::Memory#pagerank"]
  Woods__Storage__MetadataStore["Woods::Storage::MetadataStore"]
  Woods__Storage__MetadataStore__Interface["Woods::Storage::MetadataStore::Interface"]
  Woods__Storage__MetadataStore__SQLite["Woods::Storage::MetadataStore::SQLite"]
  Woods__Storage__MetadataStore__SQLite -->|include| Interface
  Woods__Storage__MetadataStore__Interface_store["Woods::Storage::MetadataStore::Interface#store"]
  Woods__Storage__MetadataStore__Interface_find["Woods::Storage::MetadataStore::Interface#find"]
  Woods__Storage__MetadataStore__Interface_find_by_type["Woods::Storage::MetadataStore::Interface#find_by_type"]
  Woods__Storage__MetadataStore__Interface_search["Woods::Storage::MetadataStore::Interface#search"]
  Woods__Storage__MetadataStore__Interface_delete["Woods::Storage::MetadataStore::Interface#delete"]
  Woods__Storage__MetadataStore__Interface_count["Woods::Storage::MetadataStore::Interface#count"]
  Woods__Storage__MetadataStore__SQLite_initialize["Woods::Storage::MetadataStore::SQLite#initialize"]
  SQLite3__Database["SQLite3::Database"]
  Woods__Storage__MetadataStore__SQLite_initialize -->|method_call| SQLite3__Database
  Woods__Storage__MetadataStore__SQLite_store["Woods::Storage::MetadataStore::SQLite#store"]
  Woods__Storage__MetadataStore__SQLite_store -->|method_call| JSON
  Woods__Storage__MetadataStore__SQLite_find["Woods::Storage::MetadataStore::SQLite#find"]
  Woods__Storage__MetadataStore__SQLite_find -->|method_call| JSON
  Woods__Storage__MetadataStore__SQLite_find_by_type["Woods::Storage::MetadataStore::SQLite#find_by_type"]
  Woods__Storage__MetadataStore__SQLite_find_by_type -->|method_call| JSON
  Woods__Storage__MetadataStore__SQLite_search["Woods::Storage::MetadataStore::SQLite#search"]
  Woods__Storage__MetadataStore__SQLite_search -->|method_call| JSON
  Woods__Storage__MetadataStore__SQLite_delete["Woods::Storage::MetadataStore::SQLite#delete"]
  Woods__Storage__MetadataStore__SQLite_count["Woods::Storage::MetadataStore::SQLite#count"]
  Woods__Storage__MetadataStore__SQLite_create_table["Woods::Storage::MetadataStore::SQLite#create_table"]
  Woods__Storage__VectorStore["Woods::Storage::VectorStore"]
  Woods__Storage__VectorStore__Pgvector["Woods::Storage::VectorStore::Pgvector"]
  Woods__Storage__VectorStore__Pgvector -->|include| Interface
  Woods__Storage__VectorStore__Pgvector_initialize["Woods::Storage::VectorStore::Pgvector#initialize"]
  Woods__Storage__VectorStore__Pgvector_ensure_schema_["Woods::Storage::VectorStore::Pgvector#ensure_schema!"]
  Woods__Storage__VectorStore__Pgvector_store["Woods::Storage::VectorStore::Pgvector#store"]
  Woods__Storage__VectorStore__Pgvector_search["Woods::Storage::VectorStore::Pgvector#search"]
  Woods__Storage__VectorStore__Pgvector_delete["Woods::Storage::VectorStore::Pgvector#delete"]
  Woods__Storage__VectorStore__Pgvector_delete_by_filter["Woods::Storage::VectorStore::Pgvector#delete_by_filter"]
  Woods__Storage__VectorStore__Pgvector_count["Woods::Storage::VectorStore::Pgvector#count"]
  Woods__Storage__VectorStore__Pgvector_row_to_result["Woods::Storage::VectorStore::Pgvector#row_to_result"]
  Woods__Storage__VectorStore__Pgvector_row_to_result -->|method_call| JSON
  SearchResult["SearchResult"]
  Woods__Storage__VectorStore__Pgvector_row_to_result -->|method_call| SearchResult
  Woods__Storage__VectorStore__Pgvector_build_where["Woods::Storage::VectorStore::Pgvector#build_where"]
  Woods__Storage__VectorStore__Pgvector_validate_vector_["Woods::Storage::VectorStore::Pgvector#validate_vector!"]
  Woods__Storage__VectorStore__Qdrant["Woods::Storage::VectorStore::Qdrant"]
  Woods__Storage__VectorStore__Qdrant -->|include| Interface
  Woods__Storage__VectorStore__Qdrant_initialize["Woods::Storage::VectorStore::Qdrant#initialize"]
  Woods__Storage__VectorStore__Qdrant_ensure_collection_["Woods::Storage::VectorStore::Qdrant#ensure_collection!"]
  Woods__Storage__VectorStore__Qdrant_store["Woods::Storage::VectorStore::Qdrant#store"]
  Woods__Storage__VectorStore__Qdrant_search["Woods::Storage::VectorStore::Qdrant#search"]
  Woods__Storage__VectorStore__Qdrant_search -->|method_call| SearchResult
  Woods__Storage__VectorStore__Qdrant_delete["Woods::Storage::VectorStore::Qdrant#delete"]
  Woods__Storage__VectorStore__Qdrant_delete_by_filter["Woods::Storage::VectorStore::Qdrant#delete_by_filter"]
  Woods__Storage__VectorStore__Qdrant_count["Woods::Storage::VectorStore::Qdrant#count"]
  Woods__Storage__VectorStore__Qdrant_build_filter["Woods::Storage::VectorStore::Qdrant#build_filter"]
  Woods__Storage__VectorStore__Qdrant_request["Woods::Storage::VectorStore::Qdrant#request"]
  Woods__Storage__VectorStore__Qdrant_request -->|method_call| JSON
  Woods__Storage__VectorStore__Qdrant_build_http["Woods::Storage::VectorStore::Qdrant#build_http"]
  Woods__Storage__VectorStore__Qdrant_build_http -->|method_call| Net__HTTP
  Woods__Storage__VectorStore__Qdrant_build_request["Woods::Storage::VectorStore::Qdrant#build_request"]
  Woods__Storage__VectorStore__Interface["Woods::Storage::VectorStore::Interface"]
  Woods__Storage__VectorStore__InMemory["Woods::Storage::VectorStore::InMemory"]
  Woods__Storage__VectorStore__InMemory -->|include| Interface
  Woods__Storage__VectorStore__Interface_store["Woods::Storage::VectorStore::Interface#store"]
  Woods__Storage__VectorStore__Interface_search["Woods::Storage::VectorStore::Interface#search"]
  Woods__Storage__VectorStore__Interface_delete["Woods::Storage::VectorStore::Interface#delete"]
  Woods__Storage__VectorStore__Interface_delete_by_filter["Woods::Storage::VectorStore::Interface#delete_by_filter"]
  Woods__Storage__VectorStore__Interface_count["Woods::Storage::VectorStore::Interface#count"]
  Woods__Storage__VectorStore__InMemory_initialize["Woods::Storage::VectorStore::InMemory#initialize"]
  Woods__Storage__VectorStore__InMemory_store["Woods::Storage::VectorStore::InMemory#store"]
  Woods__Storage__VectorStore__InMemory_search["Woods::Storage::VectorStore::InMemory#search"]
  Woods__Storage__VectorStore__InMemory_search -->|method_call| SearchResult
  Woods__Storage__VectorStore__InMemory_delete["Woods::Storage::VectorStore::InMemory#delete"]
  Woods__Storage__VectorStore__InMemory_delete_by_filter["Woods::Storage::VectorStore::InMemory#delete_by_filter"]
  Woods__Storage__VectorStore__InMemory_count["Woods::Storage::VectorStore::InMemory#count"]
  Woods__Storage__VectorStore__InMemory_filter_entries["Woods::Storage::VectorStore::InMemory#filter_entries"]
  Woods__Storage__VectorStore__InMemory_cosine_similarity["Woods::Storage::VectorStore::InMemory#cosine_similarity"]
  Math["Math"]
  Woods__Storage__VectorStore__InMemory_cosine_similarity -->|method_call| Math
  Woods__Temporal["Woods::Temporal"]
  Woods__Temporal__SnapshotStore["Woods::Temporal::SnapshotStore"]
  Woods__Temporal__SnapshotStore_initialize["Woods::Temporal::SnapshotStore#initialize"]
  Woods__Temporal__SnapshotStore_capture["Woods::Temporal::SnapshotStore#capture"]
  Woods__Temporal__SnapshotStore_list["Woods::Temporal::SnapshotStore#list"]
  Woods__Temporal__SnapshotStore_find["Woods::Temporal::SnapshotStore#find"]
  Woods__Temporal__SnapshotStore_diff["Woods::Temporal::SnapshotStore#diff"]
  Woods__Temporal__SnapshotStore_unit_history["Woods::Temporal::SnapshotStore#unit_history"]
  Woods__Temporal__SnapshotStore_history_entry_from_row["Woods::Temporal::SnapshotStore#history_entry_from_row"]
  Woods__Temporal__SnapshotStore_mark_changed_entries["Woods::Temporal::SnapshotStore#mark_changed_entries"]
  Woods__Temporal__SnapshotStore_mget["Woods::Temporal::SnapshotStore#mget"]
  Woods__Temporal__SnapshotStore_upsert_snapshot["Woods::Temporal::SnapshotStore#upsert_snapshot"]
  Woods__Temporal__SnapshotStore_upsert_snapshot -->|method_call| Time_now
  Woods__Temporal__SnapshotStore_upsert_snapshot -->|method_call| Time
  Woods__Temporal__SnapshotStore_upsert_snapshot -->|method_call| JSON
  Woods__Temporal__SnapshotStore_update_diff_stats["Woods::Temporal::SnapshotStore#update_diff_stats"]
  Woods__Temporal__SnapshotStore_find_latest["Woods::Temporal::SnapshotStore#find_latest"]
  Woods__Temporal__SnapshotStore_fetch_snapshot_id["Woods::Temporal::SnapshotStore#fetch_snapshot_id"]
  Woods__Temporal__SnapshotStore_insert_unit_hashes["Woods::Temporal::SnapshotStore#insert_unit_hashes"]
  Woods__Temporal__SnapshotStore_load_snapshot_units["Woods::Temporal::SnapshotStore#load_snapshot_units"]
  Woods__Temporal__SnapshotStore_compute_diff["Woods::Temporal::SnapshotStore#compute_diff"]
  Woods__Temporal__SnapshotStore_compute_diff_stats["Woods::Temporal::SnapshotStore#compute_diff_stats"]
  Woods__Temporal__SnapshotStore_row_to_hash["Woods::Temporal::SnapshotStore#row_to_hash"]