diff --git a/config/install/drupalmoduleupgrader.entity_operations.yml b/config/install/drupalmoduleupgrader.entity_operations.yml
index c899372..93e55d4 100644
--- a/config/install/drupalmoduleupgrader.entity_operations.yml
+++ b/config/install/drupalmoduleupgrader.entity_operations.yml
@@ -1,19 +1,19 @@
 # This file controls the behavior of EntityOperationDeriver, which derives the
 # EntityOperation function rewriter, which converts calls to things like user_save()
 # to $user->save().
-
-entity:
-  - save
-  - delete
-  - label
-node:
-  - save
-  - delete
-user:
-  - delete
-comment:
-  - save
-  - delete
-taxonomy_term:
-  - save
-  - delete
+definitions:
+  entity:
+    - save
+    - delete
+    - label
+  node:
+    - save
+    - delete
+  user:
+    - delete
+  comment:
+    - save
+    - delete
+  taxonomy_term:
+    - save
+    - delete
diff --git a/config/install/drupalmoduleupgrader.functions.yml b/config/install/drupalmoduleupgrader.functions.yml
index 1e68698..38f8887 100644
--- a/config/install/drupalmoduleupgrader.functions.yml
+++ b/config/install/drupalmoduleupgrader.functions.yml
@@ -8,992 +8,993 @@
 # If 'disable' is true, the Disable plugin will unconditionally comment out
 # calls to the function, and leave a FIXME notice above it.
 
-assets:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2169605'
-      title: '`drupal_add_css()`, `drupal_add_js()` and `drupal_add_library()` removed in favor of `#attached`'
-    -
-      url: 'https://www.drupal.org/node/2408597'
-      title: '`AssetResolverInterface` and `AttachedAssetsInterface` replace internal Asset API functions'
-  tags:
-    category:
-      - render
-      - ui
-  functions:
-    - drupal_add_css
-    - _drupal_add_css
-    - drupal_add_js
-    - _drupal_add_js
-    - drupal_add_library
-    - _drupal_add_library
-    - drupal_get_css
-    - drupal_get_js
-    - drupal_sort_css_js
-  fixme: |
-    The Assets API has totally changed. CSS, JavaScript, and libraries are now
-    attached directly to render arrays using the #attached property.
-  disable: true
-
-cache:
-  message: 'The caching system has been rewritten.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1884796'
-      title: 'Drupal 8 Cache API'
-    -
-      url: 'https://www.drupal.org/node/1272696'
-      title: 'New cache API'
-  tags:
-    category:
-      - cache
-  functions:
-    - cache_clear_all
-    - cache_get
-    - cache_get_multiple
-    - _cache_get_object
-    - cache_is_empty
-    - cache_set
-
-conf_path:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2275139'
-      title: '`@function` moved into `DrupalKernel`'
-  tags:
-    category:
-      - system
-
-confirm_form:
-  message: '`@function` is now `\Drupal\Core\Form\ConfirmFormBase`'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1945416'
-      title: '`@function` removed'
-  tags:
-    category:
-      - form
-
-crypt:
-  message: '`@function` has moved into the Crypt component.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1984806'
-      title: '`@function` moved into `\Drupal\Component\Utility\Crypt`'
-  tags:
-    category:
-      - utility
-  functions:
-    - drupal_hash_base64
-    - drupal_hmac_base64
-    - drupal_random_bytes
-
-ctools_get_plugins:
-  message: 'The CTools plugin system has moved into core.'
-  documentation:
-    -
-      url: 'https://api.drupal.org/api/drupal/core%21modules%21system%21core.api.php/group/plugin_api/8'
-      title: 'Drupal 8 Plugin API'
-  tags:
-    category:
-      - ctools
-
-ctools_include:
-  message: 'Most CTools APIs have moved into core.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2164623'
-      title: 'Many common dependencies added to core'
-  tags:
-    category:
-      - ctools
-  disable: true
-  fixme: 'Most CTools APIs have been moved into core.'
-
-ctools_export:
-  message: 'The CTools Export API has moved into core.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/developing/api/entity'
-      title: 'Drupal 8 Entity API'
-  tags:
-    category:
-      - ctools
-      - entity
-  functions:
-    - ctools_export_crud_new
-    - ctools_export_crud_load
-    - ctools_export_crud_load_multiple
-    - ctools_export_crud_load_all
-    - ctools_export_crud_save
-    - ctools_export_crud_delete
-    - ctools_export_crud_export
-    - ctools_export_crud_import
-    - ctools_export_crud_set_status
-    - ctools_export_crud_enable
-    - ctools_export_crud_disable
-    - ctools_export_load_object
-    - ctools_export_load_object_reset
-    - ctools_get_default_object
-    - ctools_export_unpack_object
-    - ctools_var_export
-    - ctools_export_object
-    - ctools_export_get_schema
-    - ctools_export_get_schemas
-    - ctools_export_get_schemas_by_module
-    - ctools_export_set_status
-    - ctools_export_set_object_status
-    - ctools_export_form
-    - ctools_export_new_object
-    - ctools_export_to_hook_code
-    - ctools_export_default_to_hook_code
-    - ctools_export_default_list
-  disable: true
-  fixme: 'The CTools Export API has been merged with the core entity API.'
-
-ctools_object_cache:
-  message: 'The CTools object caching system has moved into core.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1805940'
-      title: 'TempStore API added to core'
-    -
-      url: 'https://www.drupal.org/node/2164623'
-      title: 'Modules added to Drupal 8 core'
-  tags:
-    category:
-      - ctools
-      - cache
-  functions:
-    - ctools_object_cache_get
-    - ctools_object_cache_set
-
-current_path:
-  message: '`@function` has been replaced by the <current> route.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2382211'
-      title: '`current_path()` replaced by the <current> route'
-  tags:
-    category:
-      - menu
-      - system
-
-drupal_add_tabledrag:
-  message: '`@function` is now the `#tabledrag` property of a render array.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2160571'
-      title: '`@function` replaced by render array attachment'
-  tags:
-    category:
-      - render
-      - ui
-  fixme: |
-    TableDrag is now attached with the #tabledrag property of certain render
-    arrays. @function is now internal and should never be called directly.
-  disable: true
-
-drupal_array:
-  message: '`@function` has been moved into the NestedArray utility class.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1870678'
-      title: '`drupal_array_*` functions replaced by static methods of `NestedArray` utility'
-  tags:
-    category:
-      - utility
-  functions:
-    - drupal_array_merge_deep
-    - drupal_array_merge_deep_array
-    - drupal_array_get_nested_value
-    - drupal_array_set_nested_value
-    - drupal_array_unset_nested_value
-    - drupal_array_nested_key_exists
-
-drupal_cron_run:
-  message: '`@function` was moved into the `cron` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2181921'
-      title: '`@function` replaced by cron service'
-  tags:
-    category:
-      - system
-
-drupal_exit:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2017339'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-
-drupal_get_query_array:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2079005'
-      title: '`@function` replaced by native `parse_str()` function'
-  tags:
-    category:
-      - utility
-  fixme: |
-    @function has been removed in favor of PHP's native parse_str(). You should
-    use that function instead and pass a destination array by reference.
-    For more information, see:
-    https://www.drupal.org/node/2079005
-    http://www.php.net/parse_str
-  disable: true
-
-drupal_get_title:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2067859'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-      - ui
-
-drupal_goto:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2023537'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-
-drupal_http_request:
-  message: '`@function` has been replaced by Guzzle.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1862446'
-      title: 'Guzzle HTTP client in Drupal core'
-    -
-      url: 'http://docs.guzzlephp.org/en/latest'
-      title: 'Guzzle documentation'
-  tags:
-    category:
-      - system
-  fixme: |
-    @function has been replaced by the Guzzle HTTP client, which is bundled
-    with Drupal core.
-  disable: true
-
-drupal_is_cli:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2295037'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-
-drupal_map_assoc:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2207453'
-      title: '`@function` removed'
-  tags:
-    category:
-      - form
-      - utility
-
-drupal_render:
-  message: '`@function` has been removed.'
-  tags:
-    category:
-      - render
-
-drupal_set_title:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2067859'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-      - ui
-  fixme: |
-    @function has been removed. There are now a few ways to set the title
-    dynamically, depending on the situation.
-  disable: true
-
-drupal_site_offline:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1628046'
-      title: '`@function` removed in favor of exceptions'
-  tags:
-    category:
-      - system
-  fixme: |
-    @function has been removed. If your code needs to fail, it should throw
-    a meaningful exception instead.
-  disable: true
-
-drupal_valid_path:
-  message: '`@function` has been moved into the PathValidator service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2302541'
-      title: '`@function` moved into PathValidator service'
-  tags:
-    category:
-      - system
-
-drupal_var_export:
-  message: '`@function` is now part of the Variable utility.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2368411'
-      title: '`@function` moved into Variable utility'
-  tags:
-    category:
-      - system
-
-drupal_write_record:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2340291'
-      title: '`@function` removed'
-  tags:
-    category:
-      - db
-      - system
-
-element:
-  message: '`@function` is now a method of the `Element` class.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2173683'
-      title: '`element_*` functions moved into `Element` class'
-  tags:
-    category:
-      - render
-      - utility
-  functions:
-    - element_child
-    - element_children
-    - element_get_visible_children
-    - element_properties
-    - element_property
-    - element_set_attributes
-
-entity_create:
-  message: '`@function` is now a method of `EntityInterface`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2266845'
-      title: '`@function` replaced by `EntityInterface::create()`'
-  tags:
-    category:
-      - entity
-
-entity_extract_ids:
-  message: '`@function` replaced by methods of `EntityInterface`'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1724986'
-      title: '`@function` removed'
-  tags:
-    category:
-      - entity
-
-entity_get_info:
-  message: '`@function` is now a method of the EntityManager service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1929006'
-      title: '`@function` is deprecated'
-  tags:
-    category:
-      - entity
-
-entity_crud:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2266845'
-      title: 'Entities are now classed objects implementing `EntityInterface`'
-  tags:
-    category:
-      - entity
-  functions:
-    - entity_load
-    - entity_load_multiple
-    - entity_save
-    - entity_delete
-    - entity_label
-    - node_load
-    - node_load_multiple
-    - node_save
-    - node_delete
-    - user_load
-    - user_load_multiple
-    - user_save
-    - user_delete
-    - comment_load
-    - comment_load_multiple
-    - comment_save
-    - comment_delete
-    - taxonomy_term_load
-    - taxonomy_term_load_multiple
-    - taxonomy_term_save
-    - taxonomy_term_delete
-
-field:
-  message: 'The Field API CRUD functions have been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2012896'
-      title: 'Fields and field instances are now entities'
-  tags:
-    category:
-      - field
-  functions:
-    - field_create_field
-    - field_create_instance
-    - field_delete_field
-    - field_delete_instance
-    - field_info_fields
-  fixme: |
-    Fields and field instances are now exportable configuration entities, and
-    the Field Info API has been removed.
-  disable: true
-
-field_formatter:
-  message: '`@function` has been replaced with a field formatter plugin manager.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1805846'
-      title: 'Field formatters are now plugins'
-  tags:
-    category:
-      - field
-  functions:
-    - field_info_formatter_types
-    - field_info_formatter_settings
-
-field_type:
-  message: '`@function` has been replaced with a field type plugin manager.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2064123'
-      title: 'Field types are now plugins'
-  tags:
-    category:
-      - field
-  functions:
-    - field_info_field_types
-    - field_info_field_settings
-
-field_update_field:
-  message: '`@function` is now `FieldStorageConfig::save()`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2012896'
-      title: 'Field CRUD API replaced by Entity API'
-  tags:
-    category:
-      - field
-
-field_update_instance:
-  message: '`@function` is now `FieldConfig::save()`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2012896'
-      title: 'Field CRUD API replaced by Entity API'
-  tags:
-    category:
-      - field
-
-field_view_field:
-  message: '`@function` is now a method of `FieldItemInterface`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2208327'
-      title: '`@function` moved into `FieldItemInterface`'
-  tags:
-    category:
-      - field
-
-field_view_value:
-  message: '`@function` is now a method of `FieldItemListInterface`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2208327'
-      title: '`@function` moved into `FieldItemListInterface`'
-  tags:
-    category:
-      - field
-
-field_widget:
-  message: '`@function` is now a method of `WidgetInterface`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1796000'
-      title: 'Field widgets are now plugins'
-  tags:
-    category:
-      - field
-  functions:
-    - field_default_extract_form_values
-    - field_default_form
-    - field_default_form_errors
-    - field_default_submit
-    - field_info_widget_types
-
-file_system:
-  message: '`@function` is now a method of the `file_system` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2418133'
-      title: 'File system functions moved into `file_system` service'
-  tags:
-    category:
-      - system
-  functions:
-    - drupal_basename
-    - drupal_chmod
-    - drupal_dirname
-    - drupal_mkdir
-    - drupal_move_uploaded_file
-    - drupal_realpath
-    - drupal_rmdir
-    - drupal_tempnam
-    - drupal_unlink
-    - file_stream_wrapper_valid_scheme
-    - file_uri_scheme
-
-form:
-  message: '`@function` has moved into the FormBuilder service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2121003'
-      title: 'Form generation functions moved into FormBuilder service'
-  tags:
-    category:
-      - form
-  functions:
-    - drupal_build_form
-    - drupal_get_form
-    - drupal_form_submit
-    - drupal_prepare_form
-    - drupal_process_form
-    - drupal_rebuild_form
-    - drupal_redirect_form
-    - drupal_retrieve_form
-    - drupal_validate_form
-    - form_execute_handlers
-    - form_get_cache
-    - form_load_include
-    - form_set_cache
-
-form_state:
-  message: '`@function` is now a method of `FormStateInterface`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2121003'
-      title: 'Form functions moved into `FormStateInterface`'
-  tags:
-    category:
-      - form
-  functions:
-    - form_clear_error
-    - form_error
-    - form_get_errors
-    - form_set_error
-    - form_set_value
-    - form_state_defaults
-    - form_state_values_clean
-
-format_interval:
-  message: '`@function` was moved into the `date.formatter` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2173787'
-      title: '`@function` moved to date formatter service'
-  tags:
-    category:
-      - render
-      - ui
-      - utility
-
-format_plural:
-  message: '`@function` was moved into the translation service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2173787'
-      title: '`@function` moved to translation service'
-  tags:
-    category:
-      - render
-      - ui
-      - utility
-
-html:
-  message: '`@function` has been moved into the HTML component.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2388737'
-      title: 'HTML functions moved to a component'
-  functions:
-    - drupal_clean_css_identifer
-    - drupal_html_class
-    - drupal_html_id
-  tags:
-    category:
-      - render
-
-ip_address:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1969794'
-      title: '`@function` removed'
-  tags:
-    category:
-      - system
-      - utility
-
-json:
-  message: '`@function` has moved into the Serialization component.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2219113'
-      title: '`@function` moved into Serialization component'
-  functions:
-    - drupal_json_decode
-    - drupal_json_encode
-  tags:
-    category:
-      - system
-      - utility
-
-l:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2346779'
-      title: '`@function` replaced by URL generation API'
-  tags:
-    category:
-      - system
-
-menu_active_trail:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2240003'
-      title: 'Active trail functions replaced by `menu.active_trail` service.'
-  tags:
-    category:
-      - menu
-  functions:
-    - menu_get_active_trail
-    - menu_link_get_preferred
-    - menu_set_active_item
-    - menu_set_active_trail
-  fixme: |
-    The active trail system has been removed in Drupal 8 because the routing and
-    linking systems have been completely rewritten. You will need to rewrite this
-    code to use the menu.active_trail service, or override the service if you need
-    to alter the active trail.
-  disable: true
-
-menu_item:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2203305'
-      title: '`@function` removed'
-  tags:
-    category:
-      - menu
-  functions:
-    - menu_get_item
-    - menu_set_item
-  fixme: |
-    @function has been removed. To retrieve route information, use the
-    RouteMatch object, which you can retrieve by calling \Drupal::routeMatch().
-  disable: true
-
-menu_tree:
-  message: '`@function` has been replaced by `menu.link_tree` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2226481'
-      title: 'Menu tree building is now a service'
-    -
-      url: 'https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Menu%21MenuLinkTree.php/class/MenuLinkTree/8'
-      title: '`MenuLinkTree` documentation'
-  tags:
-    category:
-      - menu
-  functions:
-    - menu_build_tree
-    - menu_parent_options
-    - menu_tree
-    - menu_tree_all_data
-    - menu_tree_check_access
-    - menu_tree_collect_node_links
-    - menu_tree_data
-    - menu_tree_page_data
-    - menu_tree_get_path
-    - menu_tree_set_path
-  fixme: |
-    @function is gone in Drupal 8. To generate or work with menu trees, you'll need to
-    use the menu.link_tree service.
-  disable: true
-
-module_invoke:
-  message: '`@function` is now a method of the `module_handler` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1894902'
-      title: '`@function` replaced by `module_handler` service'
-  tags:
-    category:
-      - system
-
-module_invoke_all:
-  message: '`@function` is now a method of the `module_handler` service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1894902'
-      title: '`@function` replaced by `module_handler` service'
-  tags:
-    category:
-      - system
-
-_node_revision_access:
-  message: '`@function` was moved into an access-checking service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2328179'
-      title: '`@function` replaced'
-  tags:
-    category:
-      - entity
-      - node
-
-stream_wrappers:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2393323'
-      title: '`@function` moved into stream wrapper manager service.'
-  tags:
-    category:
-      - system
-  functions:
-    - file_get_stream_wrappers
-    - file_stream_wrapper_get_class
-    - file_stream_wrapper_get_instance_by_uri
-    - file_stream_wrapper_get_instance_by_scheme
-
-t_meta:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2021435'
-      title: '`@function` replaced by `t()`'
-  tags:
-    category:
-      - system
-  functions:
-    - get_t
-    - st
-
-taxonomy:
-  message: '`@function` is now a method of the taxonomy term storage controller.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2328205'
-      title: 'Certain Taxonomy API functions have moved into `TermStorage` class'
-  tags:
-    category:
-      - entity
-      - taxonomy
-  functions:
-    - taxonomy_get_tree
-    - taxonomy_term_load_children
-    - taxonomy_term_load_parents
-    - taxonomy_term_load_parents_all
-
-theme:
-  message: '`@function` has been renamed to `_theme()`, and should never be called directly.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2195739'
-      title: '`@function` renamed to `_theme()` and should not be called directly'
-  tags:
-    category:
-      - theme
-  fixme: |
-    @function has been renamed to _theme() and should NEVER be called directly.
-    Calling _theme() directly can alter the expected output and potentially
-    introduce security issues (see https://www.drupal.org/node/2195739). You
-    should use renderable arrays instead.
-  disable: true
-
-theme_get_registry:
-  message: 'The theme registry is now a service.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2137545'
-      title: '`@function` is now two different methods of the `theme.registry` service'
-  tags:
-    category:
-      - theme
-
-theme_registry:
-  message: 'Several low-level theme registry functions have moved.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2137545'
-      title: 'Theme registry moved to `theme.registry` service'
-  tags:
-    category:
-      - theme
-  functions:
-    - _theme_load_registry
-    - _theme_save_registry
-    - _theme_process_registry
-    - _theme_build_registry
-    - _theme_load_offline_registry
-  fixme: |
-    Several low-level theme system functions have been moved into the
-    theme.registry service.
-  disable: true
-
-token:
-  message: 'The core token API is now a service.'
-  documentation:
-    -
-      url: https://www.drupal.org/node/1973488
-      title: 'Token API is now a service'
-  tags:
-    category:
-      - misc
-  functions:
-    - token_find_with_prefix
-    - token_generate
-    - token_info
-    - token_replace
-    - token_scan
-
-unicode:
-  message: '`@function` has been moved into the Unicode utility class.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1992584'
-      title: '`@function` moved into Unicode component'
-  tags:
-    category:
-      - utility
-  functions:
-    - decode_entities
-    - drupal_convert_to_utf8
-    - drupal_strlen
-    - drupal_strtolower
-    - drupal_strtoupper
-    - drupal_substr
-    - drupal_truncate_bytes
-    - drupal_ucfirst
-    - drupal_validate_utf8
-    - mime_header_encode
-    - mime_header_decode
-    - truncate_utf8
-    - unicode_check
-
-url:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2346779'
-      title: '`@function` replaced by URL generation API'
-  tags:
-    category:
-      - system
-
-url_utility:
-  message: '`@function` has been replaced by the `UrlHelper` utility.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2079005'
-      title: '`@function` is now a method of `\Drupal\Component\Utility\UrlHelper`'
-  tags:
-    category:
-      - utility
-  functions:
-    - drupal_encode_path
-    - drupal_get_query_parameters
-    - drupal_parse_url
-    - filter_xss_bad_protocol
-    - url_is_external
-
-user_access:
-  message: '`@function` is now `AccountInterface::hasPermission()`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2049309'
-      title: '`@function` got converted to a method on the user/account interface'
-  tags:
-    category:
-      - system
-      - user
-
-variable_del:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2183531'
-      title: 'The Variable API has been removed'
-  tags:
-    category:
-      - config
-
-variable_get:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2183531'
-      title: 'The Variable API has been removed'
-  tags:
-    category:
-      - config
-
-variable_set:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2183531'
-      title: 'The Variable API has been removed'
-  tags:
-    category:
-      - config
-
-watchdog:
-  message: '`@function` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2270941'
-      title: '`@function` is deprecated'
-  tags:
-    category:
-      - system
+definitions:
+  assets:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2169605'
+        title: '`drupal_add_css()`, `drupal_add_js()` and `drupal_add_library()` removed in favor of `#attached`'
+      -
+        url: 'https://www.drupal.org/node/2408597'
+        title: '`AssetResolverInterface` and `AttachedAssetsInterface` replace internal Asset API functions'
+    tags:
+      category:
+        - render
+        - ui
+    functions:
+      - drupal_add_css
+      - _drupal_add_css
+      - drupal_add_js
+      - _drupal_add_js
+      - drupal_add_library
+      - _drupal_add_library
+      - drupal_get_css
+      - drupal_get_js
+      - drupal_sort_css_js
+    fixme: |
+      The Assets API has totally changed. CSS, JavaScript, and libraries are now
+      attached directly to render arrays using the #attached property.
+    disable: true
+
+  cache:
+    message: 'The caching system has been rewritten.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1884796'
+        title: 'Drupal 8 Cache API'
+      -
+        url: 'https://www.drupal.org/node/1272696'
+        title: 'New cache API'
+    tags:
+      category:
+        - cache
+    functions:
+      - cache_clear_all
+      - cache_get
+      - cache_get_multiple
+      - _cache_get_object
+      - cache_is_empty
+      - cache_set
+
+  conf_path:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2275139'
+        title: '`@function` moved into `DrupalKernel`'
+    tags:
+      category:
+        - system
+
+  confirm_form:
+    message: '`@function` is now `\Drupal\Core\Form\ConfirmFormBase`'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1945416'
+        title: '`@function` removed'
+    tags:
+      category:
+        - form
+
+  crypt:
+    message: '`@function` has moved into the Crypt component.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1984806'
+        title: '`@function` moved into `\Drupal\Component\Utility\Crypt`'
+    tags:
+      category:
+        - utility
+    functions:
+      - drupal_hash_base64
+      - drupal_hmac_base64
+      - drupal_random_bytes
+
+  ctools_get_plugins:
+    message: 'The CTools plugin system has moved into core.'
+    documentation:
+      -
+        url: 'https://api.drupal.org/api/drupal/core%21modules%21system%21core.api.php/group/plugin_api/8'
+        title: 'Drupal 8 Plugin API'
+    tags:
+      category:
+        - ctools
+
+  ctools_include:
+    message: 'Most CTools APIs have moved into core.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2164623'
+        title: 'Many common dependencies added to core'
+    tags:
+      category:
+        - ctools
+    disable: true
+    fixme: 'Most CTools APIs have been moved into core.'
+
+  ctools_export:
+    message: 'The CTools Export API has moved into core.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/developing/api/entity'
+        title: 'Drupal 8 Entity API'
+    tags:
+      category:
+        - ctools
+        - entity
+    functions:
+      - ctools_export_crud_new
+      - ctools_export_crud_load
+      - ctools_export_crud_load_multiple
+      - ctools_export_crud_load_all
+      - ctools_export_crud_save
+      - ctools_export_crud_delete
+      - ctools_export_crud_export
+      - ctools_export_crud_import
+      - ctools_export_crud_set_status
+      - ctools_export_crud_enable
+      - ctools_export_crud_disable
+      - ctools_export_load_object
+      - ctools_export_load_object_reset
+      - ctools_get_default_object
+      - ctools_export_unpack_object
+      - ctools_var_export
+      - ctools_export_object
+      - ctools_export_get_schema
+      - ctools_export_get_schemas
+      - ctools_export_get_schemas_by_module
+      - ctools_export_set_status
+      - ctools_export_set_object_status
+      - ctools_export_form
+      - ctools_export_new_object
+      - ctools_export_to_hook_code
+      - ctools_export_default_to_hook_code
+      - ctools_export_default_list
+    disable: true
+    fixme: 'The CTools Export API has been merged with the core entity API.'
+
+  ctools_object_cache:
+    message: 'The CTools object caching system has moved into core.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1805940'
+        title: 'TempStore API added to core'
+      -
+        url: 'https://www.drupal.org/node/2164623'
+        title: 'Modules added to Drupal 8 core'
+    tags:
+      category:
+        - ctools
+        - cache
+    functions:
+      - ctools_object_cache_get
+      - ctools_object_cache_set
+
+  current_path:
+    message: '`@function` has been replaced by the <current> route.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2382211'
+        title: '`current_path()` replaced by the <current> route'
+    tags:
+      category:
+        - menu
+        - system
+
+  drupal_add_tabledrag:
+    message: '`@function` is now the `#tabledrag` property of a render array.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2160571'
+        title: '`@function` replaced by render array attachment'
+    tags:
+      category:
+        - render
+        - ui
+    fixme: |
+      TableDrag is now attached with the #tabledrag property of certain render
+      arrays. @function is now internal and should never be called directly.
+    disable: true
+
+  drupal_array:
+    message: '`@function` has been moved into the NestedArray utility class.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1870678'
+        title: '`drupal_array_*` functions replaced by static methods of `NestedArray` utility'
+    tags:
+      category:
+        - utility
+    functions:
+      - drupal_array_merge_deep
+      - drupal_array_merge_deep_array
+      - drupal_array_get_nested_value
+      - drupal_array_set_nested_value
+      - drupal_array_unset_nested_value
+      - drupal_array_nested_key_exists
+
+  drupal_cron_run:
+    message: '`@function` was moved into the `cron` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2181921'
+        title: '`@function` replaced by cron service'
+    tags:
+      category:
+        - system
+
+  drupal_exit:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2017339'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+
+  drupal_get_query_array:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2079005'
+        title: '`@function` replaced by native `parse_str()` function'
+    tags:
+      category:
+        - utility
+    fixme: |
+      @function has been removed in favor of PHP's native parse_str(). You should
+      use that function instead and pass a destination array by reference.
+      For more information, see:
+      https://www.drupal.org/node/2079005
+      http://www.php.net/parse_str
+    disable: true
+
+  drupal_get_title:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2067859'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+        - ui
+
+  drupal_goto:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2023537'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+
+  drupal_http_request:
+    message: '`@function` has been replaced by Guzzle.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1862446'
+        title: 'Guzzle HTTP client in Drupal core'
+      -
+        url: 'http://docs.guzzlephp.org/en/latest'
+        title: 'Guzzle documentation'
+    tags:
+      category:
+        - system
+    fixme: |
+      @function has been replaced by the Guzzle HTTP client, which is bundled
+      with Drupal core.
+    disable: true
+
+  drupal_is_cli:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2295037'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+
+  drupal_map_assoc:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2207453'
+        title: '`@function` removed'
+    tags:
+      category:
+        - form
+        - utility
+
+  drupal_render:
+    message: '`@function` has been removed.'
+    tags:
+      category:
+        - render
+
+  drupal_set_title:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2067859'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+        - ui
+    fixme: |
+      @function has been removed. There are now a few ways to set the title
+      dynamically, depending on the situation.
+    disable: true
+
+  drupal_site_offline:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1628046'
+        title: '`@function` removed in favor of exceptions'
+    tags:
+      category:
+        - system
+    fixme: |
+      @function has been removed. If your code needs to fail, it should throw
+      a meaningful exception instead.
+    disable: true
+
+  drupal_valid_path:
+    message: '`@function` has been moved into the PathValidator service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2302541'
+        title: '`@function` moved into PathValidator service'
+    tags:
+      category:
+        - system
+
+  drupal_var_export:
+    message: '`@function` is now part of the Variable utility.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2368411'
+        title: '`@function` moved into Variable utility'
+    tags:
+      category:
+        - system
+
+  drupal_write_record:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2340291'
+        title: '`@function` removed'
+    tags:
+      category:
+        - db
+        - system
+
+  element:
+    message: '`@function` is now a method of the `Element` class.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2173683'
+        title: '`element_*` functions moved into `Element` class'
+    tags:
+      category:
+        - render
+        - utility
+    functions:
+      - element_child
+      - element_children
+      - element_get_visible_children
+      - element_properties
+      - element_property
+      - element_set_attributes
+
+  entity_create:
+    message: '`@function` is now a method of `EntityInterface`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2266845'
+        title: '`@function` replaced by `EntityInterface::create()`'
+    tags:
+      category:
+        - entity
+
+  entity_extract_ids:
+    message: '`@function` replaced by methods of `EntityInterface`'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1724986'
+        title: '`@function` removed'
+    tags:
+      category:
+        - entity
+
+  entity_get_info:
+    message: '`@function` is now a method of the EntityManager service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1929006'
+        title: '`@function` is deprecated'
+    tags:
+      category:
+        - entity
+
+  entity_crud:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2266845'
+        title: 'Entities are now classed objects implementing `EntityInterface`'
+    tags:
+      category:
+        - entity
+    functions:
+      - entity_load
+      - entity_load_multiple
+      - entity_save
+      - entity_delete
+      - entity_label
+      - node_load
+      - node_load_multiple
+      - node_save
+      - node_delete
+      - user_load
+      - user_load_multiple
+      - user_save
+      - user_delete
+      - comment_load
+      - comment_load_multiple
+      - comment_save
+      - comment_delete
+      - taxonomy_term_load
+      - taxonomy_term_load_multiple
+      - taxonomy_term_save
+      - taxonomy_term_delete
+
+  field:
+    message: 'The Field API CRUD functions have been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2012896'
+        title: 'Fields and field instances are now entities'
+    tags:
+      category:
+        - field
+    functions:
+      - field_create_field
+      - field_create_instance
+      - field_delete_field
+      - field_delete_instance
+      - field_info_fields
+    fixme: |
+      Fields and field instances are now exportable configuration entities, and
+      the Field Info API has been removed.
+    disable: true
+
+  field_formatter:
+    message: '`@function` has been replaced with a field formatter plugin manager.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1805846'
+        title: 'Field formatters are now plugins'
+    tags:
+      category:
+        - field
+    functions:
+      - field_info_formatter_types
+      - field_info_formatter_settings
+
+  field_type:
+    message: '`@function` has been replaced with a field type plugin manager.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2064123'
+        title: 'Field types are now plugins'
+    tags:
+      category:
+        - field
+    functions:
+      - field_info_field_types
+      - field_info_field_settings
+
+  field_update_field:
+    message: '`@function` is now `FieldStorageConfig::save()`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2012896'
+        title: 'Field CRUD API replaced by Entity API'
+    tags:
+      category:
+        - field
+
+  field_update_instance:
+    message: '`@function` is now `FieldConfig::save()`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2012896'
+        title: 'Field CRUD API replaced by Entity API'
+    tags:
+      category:
+        - field
+
+  field_view_field:
+    message: '`@function` is now a method of `FieldItemInterface`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2208327'
+        title: '`@function` moved into `FieldItemInterface`'
+    tags:
+      category:
+        - field
+
+  field_view_value:
+    message: '`@function` is now a method of `FieldItemListInterface`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2208327'
+        title: '`@function` moved into `FieldItemListInterface`'
+    tags:
+      category:
+        - field
+
+  field_widget:
+    message: '`@function` is now a method of `WidgetInterface`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1796000'
+        title: 'Field widgets are now plugins'
+    tags:
+      category:
+        - field
+    functions:
+      - field_default_extract_form_values
+      - field_default_form
+      - field_default_form_errors
+      - field_default_submit
+      - field_info_widget_types
+
+  file_system:
+    message: '`@function` is now a method of the `file_system` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2418133'
+        title: 'File system functions moved into `file_system` service'
+    tags:
+      category:
+        - system
+    functions:
+      - drupal_basename
+      - drupal_chmod
+      - drupal_dirname
+      - drupal_mkdir
+      - drupal_move_uploaded_file
+      - drupal_realpath
+      - drupal_rmdir
+      - drupal_tempnam
+      - drupal_unlink
+      - file_stream_wrapper_valid_scheme
+      - file_uri_scheme
+
+  form:
+    message: '`@function` has moved into the FormBuilder service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2121003'
+        title: 'Form generation functions moved into FormBuilder service'
+    tags:
+      category:
+        - form
+    functions:
+      - drupal_build_form
+      - drupal_get_form
+      - drupal_form_submit
+      - drupal_prepare_form
+      - drupal_process_form
+      - drupal_rebuild_form
+      - drupal_redirect_form
+      - drupal_retrieve_form
+      - drupal_validate_form
+      - form_execute_handlers
+      - form_get_cache
+      - form_load_include
+      - form_set_cache
+
+  form_state:
+    message: '`@function` is now a method of `FormStateInterface`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2121003'
+        title: 'Form functions moved into `FormStateInterface`'
+    tags:
+      category:
+        - form
+    functions:
+      - form_clear_error
+      - form_error
+      - form_get_errors
+      - form_set_error
+      - form_set_value
+      - form_state_defaults
+      - form_state_values_clean
+
+  format_interval:
+    message: '`@function` was moved into the `date.formatter` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2173787'
+        title: '`@function` moved to date formatter service'
+    tags:
+      category:
+        - render
+        - ui
+        - utility
+
+  format_plural:
+    message: '`@function` was moved into the translation service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2173787'
+        title: '`@function` moved to translation service'
+    tags:
+      category:
+        - render
+        - ui
+        - utility
+
+  html:
+    message: '`@function` has been moved into the HTML component.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2388737'
+        title: 'HTML functions moved to a component'
+    functions:
+      - drupal_clean_css_identifer
+      - drupal_html_class
+      - drupal_html_id
+    tags:
+      category:
+        - render
+
+  ip_address:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1969794'
+        title: '`@function` removed'
+    tags:
+      category:
+        - system
+        - utility
+
+  json:
+    message: '`@function` has moved into the Serialization component.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2219113'
+        title: '`@function` moved into Serialization component'
+    functions:
+      - drupal_json_decode
+      - drupal_json_encode
+    tags:
+      category:
+        - system
+        - utility
+
+  l:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2346779'
+        title: '`@function` replaced by URL generation API'
+    tags:
+      category:
+        - system
+
+  menu_active_trail:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2240003'
+        title: 'Active trail functions replaced by `menu.active_trail` service.'
+    tags:
+      category:
+        - menu
+    functions:
+      - menu_get_active_trail
+      - menu_link_get_preferred
+      - menu_set_active_item
+      - menu_set_active_trail
+    fixme: |
+      The active trail system has been removed in Drupal 8 because the routing and
+      linking systems have been completely rewritten. You will need to rewrite this
+      code to use the menu.active_trail service, or override the service if you need
+      to alter the active trail.
+    disable: true
+
+  menu_item:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2203305'
+        title: '`@function` removed'
+    tags:
+      category:
+        - menu
+    functions:
+      - menu_get_item
+      - menu_set_item
+    fixme: |
+      @function has been removed. To retrieve route information, use the
+      RouteMatch object, which you can retrieve by calling \Drupal::routeMatch().
+    disable: true
+
+  menu_tree:
+    message: '`@function` has been replaced by `menu.link_tree` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2226481'
+        title: 'Menu tree building is now a service'
+      -
+        url: 'https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Menu%21MenuLinkTree.php/class/MenuLinkTree/8'
+        title: '`MenuLinkTree` documentation'
+    tags:
+      category:
+        - menu
+    functions:
+      - menu_build_tree
+      - menu_parent_options
+      - menu_tree
+      - menu_tree_all_data
+      - menu_tree_check_access
+      - menu_tree_collect_node_links
+      - menu_tree_data
+      - menu_tree_page_data
+      - menu_tree_get_path
+      - menu_tree_set_path
+    fixme: |
+      @function is gone in Drupal 8. To generate or work with menu trees, you'll need to
+      use the menu.link_tree service.
+    disable: true
+
+  module_invoke:
+    message: '`@function` is now a method of the `module_handler` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1894902'
+        title: '`@function` replaced by `module_handler` service'
+    tags:
+      category:
+        - system
+
+  module_invoke_all:
+    message: '`@function` is now a method of the `module_handler` service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1894902'
+        title: '`@function` replaced by `module_handler` service'
+    tags:
+      category:
+        - system
+
+  _node_revision_access:
+    message: '`@function` was moved into an access-checking service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2328179'
+        title: '`@function` replaced'
+    tags:
+      category:
+        - entity
+        - node
+
+  stream_wrappers:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2393323'
+        title: '`@function` moved into stream wrapper manager service.'
+    tags:
+      category:
+        - system
+    functions:
+      - file_get_stream_wrappers
+      - file_stream_wrapper_get_class
+      - file_stream_wrapper_get_instance_by_uri
+      - file_stream_wrapper_get_instance_by_scheme
+
+  t_meta:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2021435'
+        title: '`@function` replaced by `t()`'
+    tags:
+      category:
+        - system
+    functions:
+      - get_t
+      - st
+
+  taxonomy:
+    message: '`@function` is now a method of the taxonomy term storage controller.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2328205'
+        title: 'Certain Taxonomy API functions have moved into `TermStorage` class'
+    tags:
+      category:
+        - entity
+        - taxonomy
+    functions:
+      - taxonomy_get_tree
+      - taxonomy_term_load_children
+      - taxonomy_term_load_parents
+      - taxonomy_term_load_parents_all
+
+  theme:
+    message: '`@function` has been renamed to `_theme()`, and should never be called directly.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2195739'
+        title: '`@function` renamed to `_theme()` and should not be called directly'
+    tags:
+      category:
+        - theme
+    fixme: |
+      @function has been renamed to _theme() and should NEVER be called directly.
+      Calling _theme() directly can alter the expected output and potentially
+      introduce security issues (see https://www.drupal.org/node/2195739). You
+      should use renderable arrays instead.
+    disable: true
+
+  theme_get_registry:
+    message: 'The theme registry is now a service.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2137545'
+        title: '`@function` is now two different methods of the `theme.registry` service'
+    tags:
+      category:
+        - theme
+
+  theme_registry:
+    message: 'Several low-level theme registry functions have moved.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2137545'
+        title: 'Theme registry moved to `theme.registry` service'
+    tags:
+      category:
+        - theme
+    functions:
+      - _theme_load_registry
+      - _theme_save_registry
+      - _theme_process_registry
+      - _theme_build_registry
+      - _theme_load_offline_registry
+    fixme: |
+      Several low-level theme system functions have been moved into the
+      theme.registry service.
+    disable: true
+
+  token:
+    message: 'The core token API is now a service.'
+    documentation:
+      -
+        url: https://www.drupal.org/node/1973488
+        title: 'Token API is now a service'
+    tags:
+      category:
+        - misc
+    functions:
+      - token_find_with_prefix
+      - token_generate
+      - token_info
+      - token_replace
+      - token_scan
+
+  unicode:
+    message: '`@function` has been moved into the Unicode utility class.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1992584'
+        title: '`@function` moved into Unicode component'
+    tags:
+      category:
+        - utility
+    functions:
+      - decode_entities
+      - drupal_convert_to_utf8
+      - drupal_strlen
+      - drupal_strtolower
+      - drupal_strtoupper
+      - drupal_substr
+      - drupal_truncate_bytes
+      - drupal_ucfirst
+      - drupal_validate_utf8
+      - mime_header_encode
+      - mime_header_decode
+      - truncate_utf8
+      - unicode_check
+
+  url:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2346779'
+        title: '`@function` replaced by URL generation API'
+    tags:
+      category:
+        - system
+
+  url_utility:
+    message: '`@function` has been replaced by the `UrlHelper` utility.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2079005'
+        title: '`@function` is now a method of `\Drupal\Component\Utility\UrlHelper`'
+    tags:
+      category:
+        - utility
+    functions:
+      - drupal_encode_path
+      - drupal_get_query_parameters
+      - drupal_parse_url
+      - filter_xss_bad_protocol
+      - url_is_external
+
+  user_access:
+    message: '`@function` is now `AccountInterface::hasPermission()`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2049309'
+        title: '`@function` got converted to a method on the user/account interface'
+    tags:
+      category:
+        - system
+        - user
+
+  variable_del:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2183531'
+        title: 'The Variable API has been removed'
+    tags:
+      category:
+        - config
+
+  variable_get:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2183531'
+        title: 'The Variable API has been removed'
+    tags:
+      category:
+        - config
+
+  variable_set:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2183531'
+        title: 'The Variable API has been removed'
+    tags:
+      category:
+        - config
+
+  watchdog:
+    message: '`@function` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2270941'
+        title: '`@function` is deprecated'
+    tags:
+      category:
+        - system
diff --git a/config/install/drupalmoduleupgrader.grep.yml b/config/install/drupalmoduleupgrader.grep.yml
index 69c0bf4..9de89bf 100644
--- a/config/install/drupalmoduleupgrader.grep.yml
+++ b/config/install/drupalmoduleupgrader.grep.yml
@@ -2,164 +2,165 @@
 # (Plugin/DMU/Converter/Grep.php). Grep is basically a dumb search
 # and replace.
 
-# Certain common global variables were turned into service methods in
-# Drupal 8. Any globals listed here will be expanded into three forms:
-# global $var, $GLOBALS['var'], and $GlOBALS["var"], and each form will
-# be replaced with the replacement string. For example, global $user
-# will become \Drupal::currentUser().
-globals:
-  language: '\Drupal::languageManager()->getCurrentLanguage()'
-  theme: '\Drupal::theme()->getActiveTheme()->getName()'
-  theme_key: '\Drupal::theme()->getActiveTheme()->getName()'
-  user: '\Drupal::currentUser()'
+definitions:
+  # Certain common global variables were turned into service methods in
+  # Drupal 8. Any globals listed here will be expanded into three forms:
+  # global $var, $GLOBALS['var'], and $GlOBALS["var"], and each form will
+  # be replaced with the replacement string. For example, global $user
+  # will become \Drupal::currentUser().
+  globals:
+    language: '\Drupal::languageManager()->getCurrentLanguage()'
+    theme: '\Drupal::theme()->getActiveTheme()->getName()'
+    theme_key: '\Drupal::theme()->getActiveTheme()->getName()'
+    user: '\Drupal::currentUser()'
 
-# Many Drupal 7 API functions were moved into service objects, but otherwise
-# left untouched. Those functions are listed here. Each function name will
-# be expanded into function(), then replaced with its replacement. You should
-# NOT include the parentheses in the replacement string. For example,
-# drupal_alter('baz', $my_baz) will be replaced with:
-# \Drupal::moduleHandler()->alter('baz', $my_baz)
-function_calls:
-  check_plain: '\Drupal\Component\Utility\Html::escape'
-  conf_path: '\Drupal\Core\DrupalKernel::findSitePath'
-  current_path: '\Drupal\Core\Url::fromRoute("<current>")->toString'
-  decode_entities: '\Drupal\Component\Utility\Html::decodeEntities'
-  drupal_alter: '\Drupal::moduleHandler()->alter'
-  drupal_array_merge_deep: '\Drupal\Component\Utility\NestedArray::mergeDeep'
-  drupal_array_merge_deep_array: '\Drupal\Component\Utility\NestedArray::mergeDeepArray'
-  drupal_array_get_nested_value: '\Drupal\Component\Utility\NestedArray::getValue'
-  drupal_array_set_nested_value: '\Drupal\Component\Utility\NestedArray::setValue'
-  drupal_array_unset_nested_value: '\Drupal\Component\Utility\NestedArray::unsetValue'
-  drupal_array_nested_key_exists: '\Drupal\Component\Utility\NestedArray::keyExists'
-  drupal_basename: '\Drupal::service("file_system")->basename'
-  drupal_build_form: '\Drupal::formBuilder()->buildForm'
-  drupal_chmod: '\Drupal::service("file_system")->chmod'
-  drupal_clean_css_identifier: '\Drupal\Component\Utility\Html::cleanCssIdentifier'
-  drupal_clear_css_cache: '\Drupal::service("asset.css.collection_optimizer")->deleteAll'
-  drupal_clear_js_cache: '\Drupal::service("asset.js.collection.optimizer")->deleteAll'
-  drupal_convert_to_utf8: '\Drupal\Component\Utility\Unicode::convertToUtf8'
-  drupal_cron_run: '\Drupal::service("cron")->run'
-  drupal_dirname: '\Drupal::service("file_system")->dirname'
-  drupal_encode_path: '\Drupal\Component\Utility\UrlHelper::encodePath'
-  drupal_form_submit: '\Drupal::formBuilder()->submitForm'
-  drupal_get_form: '\Drupal::formBuilder()->getForm'
-  drupal_get_query_parameters: '\Drupal\Component\Utility\UrlHelper::filterQueryParameters'
-  drupal_hash_base64: '\Drupal\Component\Utility\Crypt::hashBase64'
-  drupal_hmac_base64: '\Drupal\Component\Utility\Crypt::hmacBase64'
-  drupal_html_class: '\Drupal\Component\Utility\Html::getClass'
-  drupal_html_id: '\Drupal\Component\Utility\Html::getId'
-  drupal_json_encode: '\Drupal\Component\Serialization\Json::encode'
-  drupal_json_decode: '\Drupal\Component\Serialization\Json::decode'
-  drupal_mkdir: '\Drupal::service("file_system")->mkdir'
-  drupal_move_uploaded_file: '\Drupal::service("file_system")->moveUploadedFile'
-  drupal_parse_dependency: '\Drupal\Core\Extension\ModuleHandler::parseDependency'
-  drupal_parse_url: '\Drupal\Component\Utility\UrlHelper::parse'
-  drupal_prepare_form: '\Drupal::formBuilder()->prepareForm'
-  drupal_process_form: '\Drupal::formBuilder()->processForm'
-  drupal_random_bytes: '\Drupal\Component\Utility\Crypt::randomBytes'
-  drupal_realpath: '\Drupal::service("file_system")->realpath'
-  drupal_rebuild_form: '\Drupal::formBuilder()->rebuildForm'
-  drupal_redirect_form: '\Drupal::formBuilder()->redirectForm'
-  drupal_render: '\Drupal::service("renderer")->render'
-  drupal_retrieve_form: '\Drupal::formBuilder()->retrieveForm'
-  drupal_rmdir: '\Drupal::service("file_system")->rmdir'
-  drupal_strlen: '\Drupal\Component\Utility\Unicode::strlen'
-  drupal_strtolower: '\Drupal\Component\Utility\Unicode::strtolower'
-  drupal_strtoupper: '\Drupal\Component\Utility\Unicode::strtoupper'
-  drupal_substr: '\Drupal\Component\Utility\Unicode::substr'
-  drupal_tempnam: '\Drupal::service("file_system")->tempnam'
-  drupal_truncate_bytes: '\Drupal\Component\Utility\Unicode::truncateBytes'
-  drupal_ucfirst: '\Drupal\Component\Utility\Unicode::ucfirst'
-  drupal_unlink: '\Drupal::service("file_system")->unlink'
-  drupal_valid_path: '\Drupal::service("path.validator")->isValid'
-  drupal_validate_form: '\Drupal::service("form_validator")->validateForm'
-  drupal_validate_utf8: '\Drupal\Component\Utility\Unicode::validateUtf8'
-  drupal_var_export: '\Drupal\Component\Utility\Variable::export'
-  element_child: '\Drupal\Core\Render\Element::child'
-  element_children: '\Drupal\Core\Render\Element::children'
-  element_get_visible_children: '\Drupal\Core\Render\Element::getVisibleChildren'
-  element_properties: '\Drupal\Core\Render\Element::properties'
-  element_property: '\Drupal\Core\Render\Element::property'
-  element_set_attributes: '\Drupal\Core\Render\Element::setAttributes'
-  entity_info_cache_clear: '\Drupal::entityManager()->clearCachedDefinitions'
-  field_attach_create_bundle: '\Drupal::entityManager()->onBundleCreate'
-  field_attach_delete_bundle: '\Drupal::entityManager()->onBundleDelete'
-  field_attach_rename_bundle: '\Drupal::entityManager()->onBundleRename'
-  field_cache_clear: '\Drupal::entityManager()->clearCachedFieldDefinitions'
-  field_info_cache_clear: '\Drupal::entityManager()->clearCachedBundles'
-  field_info_field_settings: '\Drupal::service("plugin.manager.field.field_type")->getDefaultSettings'
-  field_info_formatter_settings: '\Drupal::service("plugin.manager.field.formatter")->getDefaultSettings'
-  field_info_instance_settings: '\Drupal::service("plugin.manager.field.field_type")->getDefaultInstanceSettings'
-  field_info_widget_settings: '\Drupal::service("plugin.manager.field.widget")->getDefaultSettings'
-  file_get_stream_wrappers: '\Drupal::service("stream_wrapper_manager")->getWrappers'
-  file_stream_wrapper_get_class: '\Drupal::service("stream_wrapper_manager")->getClass'
-  file_stream_wrapper_get_instance_by_uri: '\Drupal::service("stream_wrapper_manager")->getViaUri'
-  file_stream_wrapper_get_instance_by_scheme: '\Drupal::service("stream_wrapper_manager")->getViaScheme'
-  file_stream_wrapper_valid_scheme: '\Drupal::service("file_system")->validScheme'
-  file_uri_scheme: '\Drupal::service("file_system")->uriScheme'
-  filter_xss: '\Drupal\Component\Utility\Xss::filter'
-  filter_xss_admin: '\Drupal\Component\Utility\Xss::filterAdmin'
-  filter_xss_bad_protocol: '\Drupal\Component\Utility\UrlHelper::filterBadProtocol'
-  form_get_cache: '\Drupal::formBuilder()->getCache'
-  form_set_cache: '\Drupal::formBuilder()->setCache'
-  format_interval: '\Drupal::service("date.formatter")->formatInterval'
-  format_plural: '\Drupal::translation()->formatPlural'
-  image_dimensions_scale: '\Drupal\Component\Image\Image::scaleDimensions'
-  ip_address: '\Drupal::request()->getClientIp'
-  lock_acquire: '\Drupal::lock()->acquire'
-  lock_release: '\Drupal::lock()->release'
-  lock_release_all: '\Drupal::lock()->releaseAll'
-  lock_wait: '\Drupal::lock()->wait'
-  menu_get_object: '\Drupal::routeMatch()->getParameter'
-  menu_tree_output: '\Drupal::menuTree()->build'
-  mime_header_decode: '\Drupal\Component\Utility\Unicode::mimeHeaderDecode'
-  mime_header_encode: '\Drupal\Component\Utility\Unicode::mimeHeaderEncode'
-  _module_build_dependencies: '\Drupal::moduleHandler()->buildModuleDependencies'
-  module_exists: '\Drupal::moduleHandler()->moduleExists'
-  module_hook: '\Drupal::moduleHandler()->implementsHook'
-  module_implements: '\Drupal::moduleHandler()->getImplementations'
-  module_implements_reset: '\Drupal::moduleHandler()->resetImplementations'
-  module_install: '\Drupal::moduleHandler()->install'
-  module_load_all_includes: '\Drupal::moduleHandler()->loadAllIncludes'
-  module_uninstall: '\Drupal::moduleHandler()->uninstall'
-  path_to_theme: '\Drupal::theme()->getActiveTheme()->getPath'
-  taxonomy_get_tree: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadTree'
-  taxonomy_get_vocabularies: '\Drupal\taxonomy\Entity\Vocabulary::loadMultiple'
-  taxonomy_term_load: '\Drupal::entityManager()->getStorage("taxonomy_term")->load'
-  taxonomy_term_load_children: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadChildren'
-  taxonomy_term_load_parents: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadParents'
-  taxonomy_term_load_parents_all: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadParentsAll'
-  token_find_with_prefix: '\Drupal::token()->findWithPrefix'
-  token_info: '\Drupal::token()->getInfo'
-  token_generate: '\Drupal::token()->generate'
-  token_replace: '\Drupal::token()->replace'
-  token_scan: '\Drupal::token()->scan'
-  truncate_utf8: '\Drupal\Component\Utility\Unicode::truncate'
-  unicode_check: '\Drupal\Component\Utility\Unicode::check'
-  url_is_external: '\Drupal\Component\Utility\UrlHelper::isExternal'
-  user_authenticate: '\Drupal::service("user.auth")->authenticate'
-  user_is_anonymous: '\Drupal::currentUser()->isAnonymous'
-  user_is_logged_in: '\Drupal::currentUser()->isAuthenticated'
+  # Many Drupal 7 API functions were moved into service objects, but otherwise
+  # left untouched. Those functions are listed here. Each function name will
+  # be expanded into function(), then replaced with its replacement. You should
+  # NOT include the parentheses in the replacement string. For example,
+  # drupal_alter('baz', $my_baz) will be replaced with:
+  # \Drupal::moduleHandler()->alter('baz', $my_baz)
+  function_calls:
+    check_plain: '\Drupal\Component\Utility\Html::escape'
+    conf_path: '\Drupal\Core\DrupalKernel::findSitePath'
+    current_path: '\Drupal\Core\Url::fromRoute("<current>")->toString'
+    decode_entities: '\Drupal\Component\Utility\Html::decodeEntities'
+    drupal_alter: '\Drupal::moduleHandler()->alter'
+    drupal_array_merge_deep: '\Drupal\Component\Utility\NestedArray::mergeDeep'
+    drupal_array_merge_deep_array: '\Drupal\Component\Utility\NestedArray::mergeDeepArray'
+    drupal_array_get_nested_value: '\Drupal\Component\Utility\NestedArray::getValue'
+    drupal_array_set_nested_value: '\Drupal\Component\Utility\NestedArray::setValue'
+    drupal_array_unset_nested_value: '\Drupal\Component\Utility\NestedArray::unsetValue'
+    drupal_array_nested_key_exists: '\Drupal\Component\Utility\NestedArray::keyExists'
+    drupal_basename: '\Drupal::service("file_system")->basename'
+    drupal_build_form: '\Drupal::formBuilder()->buildForm'
+    drupal_chmod: '\Drupal::service("file_system")->chmod'
+    drupal_clean_css_identifier: '\Drupal\Component\Utility\Html::cleanCssIdentifier'
+    drupal_clear_css_cache: '\Drupal::service("asset.css.collection_optimizer")->deleteAll'
+    drupal_clear_js_cache: '\Drupal::service("asset.js.collection.optimizer")->deleteAll'
+    drupal_convert_to_utf8: '\Drupal\Component\Utility\Unicode::convertToUtf8'
+    drupal_cron_run: '\Drupal::service("cron")->run'
+    drupal_dirname: '\Drupal::service("file_system")->dirname'
+    drupal_encode_path: '\Drupal\Component\Utility\UrlHelper::encodePath'
+    drupal_form_submit: '\Drupal::formBuilder()->submitForm'
+    drupal_get_form: '\Drupal::formBuilder()->getForm'
+    drupal_get_query_parameters: '\Drupal\Component\Utility\UrlHelper::filterQueryParameters'
+    drupal_hash_base64: '\Drupal\Component\Utility\Crypt::hashBase64'
+    drupal_hmac_base64: '\Drupal\Component\Utility\Crypt::hmacBase64'
+    drupal_html_class: '\Drupal\Component\Utility\Html::getClass'
+    drupal_html_id: '\Drupal\Component\Utility\Html::getId'
+    drupal_json_encode: '\Drupal\Component\Serialization\Json::encode'
+    drupal_json_decode: '\Drupal\Component\Serialization\Json::decode'
+    drupal_mkdir: '\Drupal::service("file_system")->mkdir'
+    drupal_move_uploaded_file: '\Drupal::service("file_system")->moveUploadedFile'
+    drupal_parse_dependency: '\Drupal\Core\Extension\ModuleHandler::parseDependency'
+    drupal_parse_url: '\Drupal\Component\Utility\UrlHelper::parse'
+    drupal_prepare_form: '\Drupal::formBuilder()->prepareForm'
+    drupal_process_form: '\Drupal::formBuilder()->processForm'
+    drupal_random_bytes: '\Drupal\Component\Utility\Crypt::randomBytes'
+    drupal_realpath: '\Drupal::service("file_system")->realpath'
+    drupal_rebuild_form: '\Drupal::formBuilder()->rebuildForm'
+    drupal_redirect_form: '\Drupal::formBuilder()->redirectForm'
+    drupal_render: '\Drupal::service("renderer")->render'
+    drupal_retrieve_form: '\Drupal::formBuilder()->retrieveForm'
+    drupal_rmdir: '\Drupal::service("file_system")->rmdir'
+    drupal_strlen: '\Drupal\Component\Utility\Unicode::strlen'
+    drupal_strtolower: '\Drupal\Component\Utility\Unicode::strtolower'
+    drupal_strtoupper: '\Drupal\Component\Utility\Unicode::strtoupper'
+    drupal_substr: '\Drupal\Component\Utility\Unicode::substr'
+    drupal_tempnam: '\Drupal::service("file_system")->tempnam'
+    drupal_truncate_bytes: '\Drupal\Component\Utility\Unicode::truncateBytes'
+    drupal_ucfirst: '\Drupal\Component\Utility\Unicode::ucfirst'
+    drupal_unlink: '\Drupal::service("file_system")->unlink'
+    drupal_valid_path: '\Drupal::service("path.validator")->isValid'
+    drupal_validate_form: '\Drupal::service("form_validator")->validateForm'
+    drupal_validate_utf8: '\Drupal\Component\Utility\Unicode::validateUtf8'
+    drupal_var_export: '\Drupal\Component\Utility\Variable::export'
+    element_child: '\Drupal\Core\Render\Element::child'
+    element_children: '\Drupal\Core\Render\Element::children'
+    element_get_visible_children: '\Drupal\Core\Render\Element::getVisibleChildren'
+    element_properties: '\Drupal\Core\Render\Element::properties'
+    element_property: '\Drupal\Core\Render\Element::property'
+    element_set_attributes: '\Drupal\Core\Render\Element::setAttributes'
+    entity_info_cache_clear: '\Drupal::entityManager()->clearCachedDefinitions'
+    field_attach_create_bundle: '\Drupal::entityManager()->onBundleCreate'
+    field_attach_delete_bundle: '\Drupal::entityManager()->onBundleDelete'
+    field_attach_rename_bundle: '\Drupal::entityManager()->onBundleRename'
+    field_cache_clear: '\Drupal::entityManager()->clearCachedFieldDefinitions'
+    field_info_cache_clear: '\Drupal::entityManager()->clearCachedBundles'
+    field_info_field_settings: '\Drupal::service("plugin.manager.field.field_type")->getDefaultSettings'
+    field_info_formatter_settings: '\Drupal::service("plugin.manager.field.formatter")->getDefaultSettings'
+    field_info_instance_settings: '\Drupal::service("plugin.manager.field.field_type")->getDefaultInstanceSettings'
+    field_info_widget_settings: '\Drupal::service("plugin.manager.field.widget")->getDefaultSettings'
+    file_get_stream_wrappers: '\Drupal::service("stream_wrapper_manager")->getWrappers'
+    file_stream_wrapper_get_class: '\Drupal::service("stream_wrapper_manager")->getClass'
+    file_stream_wrapper_get_instance_by_uri: '\Drupal::service("stream_wrapper_manager")->getViaUri'
+    file_stream_wrapper_get_instance_by_scheme: '\Drupal::service("stream_wrapper_manager")->getViaScheme'
+    file_stream_wrapper_valid_scheme: '\Drupal::service("file_system")->validScheme'
+    file_uri_scheme: '\Drupal::service("file_system")->uriScheme'
+    filter_xss: '\Drupal\Component\Utility\Xss::filter'
+    filter_xss_admin: '\Drupal\Component\Utility\Xss::filterAdmin'
+    filter_xss_bad_protocol: '\Drupal\Component\Utility\UrlHelper::filterBadProtocol'
+    form_get_cache: '\Drupal::formBuilder()->getCache'
+    form_set_cache: '\Drupal::formBuilder()->setCache'
+    format_interval: '\Drupal::service("date.formatter")->formatInterval'
+    format_plural: '\Drupal::translation()->formatPlural'
+    image_dimensions_scale: '\Drupal\Component\Image\Image::scaleDimensions'
+    ip_address: '\Drupal::request()->getClientIp'
+    lock_acquire: '\Drupal::lock()->acquire'
+    lock_release: '\Drupal::lock()->release'
+    lock_release_all: '\Drupal::lock()->releaseAll'
+    lock_wait: '\Drupal::lock()->wait'
+    menu_get_object: '\Drupal::routeMatch()->getParameter'
+    menu_tree_output: '\Drupal::menuTree()->build'
+    mime_header_decode: '\Drupal\Component\Utility\Unicode::mimeHeaderDecode'
+    mime_header_encode: '\Drupal\Component\Utility\Unicode::mimeHeaderEncode'
+    _module_build_dependencies: '\Drupal::moduleHandler()->buildModuleDependencies'
+    module_exists: '\Drupal::moduleHandler()->moduleExists'
+    module_hook: '\Drupal::moduleHandler()->implementsHook'
+    module_implements: '\Drupal::moduleHandler()->getImplementations'
+    module_implements_reset: '\Drupal::moduleHandler()->resetImplementations'
+    module_install: '\Drupal::moduleHandler()->install'
+    module_load_all_includes: '\Drupal::moduleHandler()->loadAllIncludes'
+    module_uninstall: '\Drupal::moduleHandler()->uninstall'
+    path_to_theme: '\Drupal::theme()->getActiveTheme()->getPath'
+    taxonomy_get_tree: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadTree'
+    taxonomy_get_vocabularies: '\Drupal\taxonomy\Entity\Vocabulary::loadMultiple'
+    taxonomy_term_load: '\Drupal::entityManager()->getStorage("taxonomy_term")->load'
+    taxonomy_term_load_children: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadChildren'
+    taxonomy_term_load_parents: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadParents'
+    taxonomy_term_load_parents_all: '\Drupal::entityManager()->getStorage("taxonomy_term")->loadParentsAll'
+    token_find_with_prefix: '\Drupal::token()->findWithPrefix'
+    token_info: '\Drupal::token()->getInfo'
+    token_generate: '\Drupal::token()->generate'
+    token_replace: '\Drupal::token()->replace'
+    token_scan: '\Drupal::token()->scan'
+    truncate_utf8: '\Drupal\Component\Utility\Unicode::truncate'
+    unicode_check: '\Drupal\Component\Utility\Unicode::check'
+    url_is_external: '\Drupal\Component\Utility\UrlHelper::isExternal'
+    user_authenticate: '\Drupal::service("user.auth")->authenticate'
+    user_is_anonymous: '\Drupal::currentUser()->isAnonymous'
+    user_is_logged_in: '\Drupal::currentUser()->isAuthenticated'
 
-# Common global constants were generally moved into classes and interfaces.
-# Each listed constant is replaced literally (no pre-processing) with the
-# replacement string. So for example, $node->foo[LANGUAGE_NONE] will be
-# replaced with:
-# $node->foo[\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED]
-constants:
-  CACHE_PERMANENT: '\Drupal\Core\Cache\Cache::PERMANENT'
-  COMMENT_FORM_BELOW: '\Drupal\comment\Plugin\Field\FieldType\CommentItem::FORM_BELOW'
-  COMMENT_FORM_SEPARATE_PAGE: '\Drupal\comment\Plugin\Field\FieldType\CommentItem::FORM_SEPARATE_PAGE'
-  COMMENT_MODE_FLAT: '\Drupal\comment\CommentManagerInterface::COMMENT_MODE_FLAT'
-  DRUPAL_ANONYMOUS_RID: '\Drupal\Core\Session\AccountInterface::ANONYMOUS_ROLE'
-  DRUPAL_AUTHENTICATED_RID: '\Drupal\Core\Session\AccountInterface::AUTHENTICATED_RID'
-  DRUPAL_ROOT: '\Drupal::root()'
-  FILE_CHMOD_DIRECTORY: '\Drupal\Core\File\FileSystem::CHMOD_DIRECTORY'
-  FILE_CHMOD_FILE: '\Drupal\Core\File\FileSystem::CHMOD_FILE'
-  LANGUAGE_LTR: '\Drupal\Core\Language\Language::LANGUAGE_LTR'
-  LANGUAGE_NONE: '\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED'
-  LANGUAGE_RTL: '\Drupal\Core\Language\Language::LANGUAGE_RTL'
-  PREG_CLASS_UNICODE_WORD_BOUNDARY: '\Drupal\Component\Utility\Unicode::PREG_CLASS_WORD_BOUNDARY'
-  UNICODE_ERROR: '\Drupal\Component\Utility\Unicode::STATUS_ERROR'
-  UNICODE_MULTIBYTE: '\Drupal\Component\Utility\Unicode::STATUS_MULTIBYTE'
-  UNICODE_SINGLEBYTE: '\Drupal\Component\Utility\Unicode::STATUS_SINGLEBYTE'
+  # Common global constants were generally moved into classes and interfaces.
+  # Each listed constant is replaced literally (no pre-processing) with the
+  # replacement string. So for example, $node->foo[LANGUAGE_NONE] will be
+  # replaced with:
+  # $node->foo[\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED]
+  constants:
+    CACHE_PERMANENT: '\Drupal\Core\Cache\Cache::PERMANENT'
+    COMMENT_FORM_BELOW: '\Drupal\comment\Plugin\Field\FieldType\CommentItem::FORM_BELOW'
+    COMMENT_FORM_SEPARATE_PAGE: '\Drupal\comment\Plugin\Field\FieldType\CommentItem::FORM_SEPARATE_PAGE'
+    COMMENT_MODE_FLAT: '\Drupal\comment\CommentManagerInterface::COMMENT_MODE_FLAT'
+    DRUPAL_ANONYMOUS_RID: '\Drupal\Core\Session\AccountInterface::ANONYMOUS_ROLE'
+    DRUPAL_AUTHENTICATED_RID: '\Drupal\Core\Session\AccountInterface::AUTHENTICATED_RID'
+    DRUPAL_ROOT: '\Drupal::root()'
+    FILE_CHMOD_DIRECTORY: '\Drupal\Core\File\FileSystem::CHMOD_DIRECTORY'
+    FILE_CHMOD_FILE: '\Drupal\Core\File\FileSystem::CHMOD_FILE'
+    LANGUAGE_LTR: '\Drupal\Core\Language\Language::LANGUAGE_LTR'
+    LANGUAGE_NONE: '\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED'
+    LANGUAGE_RTL: '\Drupal\Core\Language\Language::LANGUAGE_RTL'
+    PREG_CLASS_UNICODE_WORD_BOUNDARY: '\Drupal\Component\Utility\Unicode::PREG_CLASS_WORD_BOUNDARY'
+    UNICODE_ERROR: '\Drupal\Component\Utility\Unicode::STATUS_ERROR'
+    UNICODE_MULTIBYTE: '\Drupal\Component\Utility\Unicode::STATUS_MULTIBYTE'
+    UNICODE_SINGLEBYTE: '\Drupal\Component\Utility\Unicode::STATUS_SINGLEBYTE'
diff --git a/config/install/drupalmoduleupgrader.hooks.yml b/config/install/drupalmoduleupgrader.hooks.yml
index c4961a0..5be9926 100644
--- a/config/install/drupalmoduleupgrader.hooks.yml
+++ b/config/install/drupalmoduleupgrader.hooks.yml
@@ -1,268 +1,269 @@
-blocks:
-  message: 'Blocks are now plugins in the `MODULE\Plugin\Block` namespace.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1880620'
-      title: 'Blocks are now plugins'
-    -
-      url: 'https://api.drupal.org/api/drupal/core%21modules%21block%21block.api.php/group/block_api/8'
-      title: 'Drupal 8 Block API'
-  tags:
-    category:
-      - block
-  hook:
-    - block_info
-    - block_configure
-    - block_save
-    - block_view
+definitions:
+  blocks:
+    message: 'Blocks are now plugins in the `MODULE\Plugin\Block` namespace.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1880620'
+        title: 'Blocks are now plugins'
+      -
+        url: 'https://api.drupal.org/api/drupal/core%21modules%21block%21block.api.php/group/block_api/8'
+        title: 'Drupal 8 Block API'
+    tags:
+      category:
+        - block
+    hook:
+      - block_info
+      - block_configure
+      - block_save
+      - block_view
 
-boot:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1909596'
-      title: '`@hook` replaced by event subscriber'
-  tags:
-    category:
-      - system
-  delete: true
+  boot:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1909596'
+        title: '`@hook` replaced by event subscriber'
+    tags:
+      category:
+        - system
+    delete: true
 
-comment_status:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2296867'
-      title: '`@hook` removed.'
-  tags:
-    category:
-      - entity
-  hook:
-    - comment_publish
-    - comment_unpublish
-  delete: true
+  comment_status:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2296867'
+        title: '`@hook` removed.'
+    tags:
+      category:
+        - entity
+    hook:
+      - comment_publish
+      - comment_unpublish
+    delete: true
 
-drupal_goto_alter:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2023537'
-      title: '`@hook` replaced by event subscriber'
-  tags:
-    category:
-      - system
-  delete: true
+  drupal_goto_alter:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2023537'
+        title: '`@hook` replaced by event subscriber'
+    tags:
+      category:
+        - system
+    delete: true
 
-entity_info:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1827470'
-      title: 'Entity types are now annotated plugins'
-  tags:
-    category:
-      - entity
-  delete: true
+  entity_info:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1827470'
+        title: 'Entity types are now annotated plugins'
+    tags:
+      category:
+        - entity
+    delete: true
 
-exit:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1911186'
-      title: '`@hook` replaced by event subscriber'
-  tags:
-    category:
-      - system
-  delete: true
+  exit:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1911186'
+        title: '`@hook` replaced by event subscriber'
+    tags:
+      category:
+        - system
+    delete: true
 
-field_attach_bundle_crud:
-  message: '`@hook` has been renamed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1964766'
-      title: 'Bundle CRUD API moved to Entity API'
-  tags:
-    category:
-      - field
-  hook:
-    - field_attach_create_bundle
-    - field_attach_delete_bundle
-    - field_attach_rename_bundle
+  field_attach_bundle_crud:
+    message: '`@hook` has been renamed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1964766'
+        title: 'Bundle CRUD API moved to Entity API'
+    tags:
+      category:
+        - field
+    hook:
+      - field_attach_create_bundle
+      - field_attach_delete_bundle
+      - field_attach_rename_bundle
 
-field_formatter:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1805846'
-      title: 'Field formatters are now plugins'
-  tags:
-    category:
-      - field
-  hook:
-    - field_formatter_info
-    - field_formatter_prepare_view
-    - field_formatter_settings_form
-    - field_formatter_settings_summary
-    - field_formatter_view
-  delete: true
+  field_formatter:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1805846'
+        title: 'Field formatters are now plugins'
+    tags:
+      category:
+        - field
+    hook:
+      - field_formatter_info
+      - field_formatter_prepare_view
+      - field_formatter_settings_form
+      - field_formatter_settings_summary
+      - field_formatter_view
+    delete: true
 
-field_type:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2064123'
-      title: 'Field types are now plugins'
-  tags:
-    category:
-      - field
-  hook:
-    - field_delete
-    - field_delete_revision
-    - field_info
-    - field_insert
-    - field_instance_settings_form
-    - field_is_empty
-    - field_load
-    - field_prepare_translation
-    - field_prepare_translation_alter
-    - field_prepare_view
-    - field_presave
-    - field_schema
-    - field_settings_form
-    - field_update
-    - field_validate
-  delete: true
+  field_type:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2064123'
+        title: 'Field types are now plugins'
+    tags:
+      category:
+        - field
+    hook:
+      - field_delete
+      - field_delete_revision
+      - field_info
+      - field_insert
+      - field_instance_settings_form
+      - field_is_empty
+      - field_load
+      - field_prepare_translation
+      - field_prepare_translation_alter
+      - field_prepare_view
+      - field_presave
+      - field_schema
+      - field_settings_form
+      - field_update
+      - field_validate
+    delete: true
 
-field_widget:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1796000'
-      title: 'Field widgets are now plugins'
-  tags:
-    category:
-      - field
-  hook:
-    - field_widget_error
-    - field_widget_form
-    - field_widget_info
-    - field_widget_settings_form
-  delete: true
+  field_widget:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1796000'
+        title: 'Field widgets are now plugins'
+    tags:
+      category:
+        - field
+    hook:
+      - field_widget_error
+      - field_widget_form
+      - field_widget_info
+      - field_widget_settings_form
+    delete: true
 
-init:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2013014'
-      title: '`@hook` removed'
-  tags:
-    category:
-      - system
-  delete: true
+  init:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2013014'
+        title: '`@hook` removed'
+    tags:
+      category:
+        - system
+    delete: true
 
-library:
-  message: '`@hook` is now `MODULE.libraries.yml`.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2201089'
-      title: '`@hook` replaced by `.libraries.yml` file'
-  tags:
-    category:
-      - system
-  delete: true
+  library:
+    message: '`@hook` is now `MODULE.libraries.yml`.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2201089'
+        title: '`@hook` replaced by `.libraries.yml` file'
+    tags:
+      category:
+        - system
+    delete: true
 
-menu:
-  message: '`@hook` has been removed from Drupal 8.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/1800686'
-      title: 'All functionality of `@hook` replaced'
-    -
-      url: 'https://www.drupal.org/node/2177901'
-      title: 'Dynamic routes are now defined in `MODULE.routing.yml`'
-    -
-      url: 'https://www.drupal.org/node/2119699'
-      title: 'Page callbacks have been converted to controller classes'
-    -
-      url: 'https://www.drupal.org/node/2089605'
-      title: 'Route naming convention'
-    -
-      url: 'https://www.drupal.org/node/2165243'
-      title: 'Contextual links are now plugins defined in `MODULE.links.contextual.yml`'
-    -
-      url: 'https://www.drupal.org/node/2007444'
-      title: 'Local actions are now plugins defined in `MODULE.links.action.yml`'
-    -
-      url: 'https://www.drupal.org/node/2044515'
-      title: 'Local tasks and now plugins defined in `MODULE.links.task.yml`'
-    -
-      url: 'https://www.drupal.org/node/2228089'
-      title: 'Menu links are now defined in `MODULE.links.menu.yml`'
-  tags:
-    category:
-      - menu
-  delete: true
+  menu:
+    message: '`@hook` has been removed from Drupal 8.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/1800686'
+        title: 'All functionality of `@hook` replaced'
+      -
+        url: 'https://www.drupal.org/node/2177901'
+        title: 'Dynamic routes are now defined in `MODULE.routing.yml`'
+      -
+        url: 'https://www.drupal.org/node/2119699'
+        title: 'Page callbacks have been converted to controller classes'
+      -
+        url: 'https://www.drupal.org/node/2089605'
+        title: 'Route naming convention'
+      -
+        url: 'https://www.drupal.org/node/2165243'
+        title: 'Contextual links are now plugins defined in `MODULE.links.contextual.yml`'
+      -
+        url: 'https://www.drupal.org/node/2007444'
+        title: 'Local actions are now plugins defined in `MODULE.links.action.yml`'
+      -
+        url: 'https://www.drupal.org/node/2044515'
+        title: 'Local tasks and now plugins defined in `MODULE.links.task.yml`'
+      -
+        url: 'https://www.drupal.org/node/2228089'
+        title: 'Menu links are now defined in `MODULE.links.menu.yml`'
+    tags:
+      category:
+        - menu
+    delete: true
 
-menu_alter:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2118147#alter'
-      title: 'Replacements for `@hook`'
-  tags:
-    category:
-      - menu
-  delete: true
+  menu_alter:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2118147#alter'
+        title: 'Replacements for `@hook`'
+    tags:
+      category:
+        - menu
+    delete: true
 
-menu_site_status_alter:
-  message: '`@hook` has been removed.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2020005'
-      title: '`@hook` is now an event subscriber'
-  tags:
-    category:
-      - system
-  delete: true
+  menu_site_status_alter:
+    message: '`@hook` has been removed.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2020005'
+        title: '`@hook` is now an event subscriber'
+    tags:
+      category:
+        - system
+    delete: true
 
-page_alter:
-  message: '`@hook` is deprecated and may only be used to alter #attached assets.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2357755'
-      title: '@hook deprecated'
-  tags:
-    category:
-      - render
+  page_alter:
+    message: '`@hook` is deprecated and may only be used to alter #attached assets.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2357755'
+        title: '@hook deprecated'
+    tags:
+      category:
+        - render
 
-page_build:
-  message: '`@hook` is deprecated and may only be used to alter #attached assets.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2357755'
-      title: '`@hook` deprecated'
-  tags:
-    category:
-      - render
+  page_build:
+    message: '`@hook` is deprecated and may only be used to alter #attached assets.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2357755'
+        title: '`@hook` deprecated'
+    tags:
+      category:
+        - render
 
-url_outbound_alter:
-  message: '`@hook` has been replaced by path processors.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2238759'
-      title: '`@hook` replaced by `OutboundPathProcessorInterface`'
-  tags:
-    category:
-      - render
-      - system
-  delete: true
+  url_outbound_alter:
+    message: '`@hook` has been replaced by path processors.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2238759'
+        title: '`@hook` replaced by `OutboundPathProcessorInterface`'
+    tags:
+      category:
+        - render
+        - system
+    delete: true
 
-watchdog:
-  message: '@hook has been replaced by a PSR-3 compatible logging system.'
-  documentation:
-    -
-      url: 'https://www.drupal.org/node/2270941'
-      title: '`@hook` removed; `watchdog()` deprecated and replaced by PSR-3 compliant logging service'
-  tags:
-    category:
-      - system
-  delete: true
+  watchdog:
+    message: '@hook has been replaced by a PSR-3 compatible logging system.'
+    documentation:
+      -
+        url: 'https://www.drupal.org/node/2270941'
+        title: '`@hook` removed; `watchdog()` deprecated and replaced by PSR-3 compliant logging service'
+    tags:
+      category:
+        - system
+    delete: true
diff --git a/config/install/drupalmoduleupgrader.rewriters.yml b/config/install/drupalmoduleupgrader.rewriters.yml
index 0d6e5fb..6c74cb0 100644
--- a/config/install/drupalmoduleupgrader.rewriters.yml
+++ b/config/install/drupalmoduleupgrader.rewriters.yml
@@ -8,133 +8,134 @@
 # configured to rewrite for a node, for example, will change $node->nid to
 # $node->id(), $node->title to $node->getTitle(), and so forth.
 
-account:
-  type_hint: \Drupal\Core\Session\AccountInterface
-comment:
-  type_hint: \Drupal\comment\CommentInterface
-  properties:
-    cid:
-      get: id
-    changed:
-      get: getChangedTime
-    created:
-      get: getCreatedTime
-      set: setCreatedTime
-    homepage:
-      get: getHomepage
-      set: setHomepage
-    hostname:
-      get: getHostname
-      set: setHostname
-    mail:
-      get: getAuthorEmail
-    name:
-      get: getAuthorName
-      set: setAuthorName
-    status:
-      get: isPublished
-      set: setPublished
-    subject:
-      get: getSubject
-      set: setSubject
-    thread:
-      get: getThread
-      set: setThread
-field:
-  type_hint: \Drupal\Core\Field\FieldStorageDefinitionInterface
-  properties:
-    cardinality:
-      get: getCardinality
-    field_name:
-      get: getName
-    module:
-      get: getProvider
-    settings:
-      get: getSettings
-    translatable:
-      get: isTranslatable
-      set: setTranslatable
-    type:
-      get: getType
-field_instance:
-  type_hint: \Drupal\Core\Field\FieldDefinitionInterface
-  properties:
-    bundle:
-      get: getTargetBundle
-    entity_type:
-      get: getTargetEntityTypeId
-    field_name:
-      get: getName
-    required:
-      get: isRequired
-    type:
-      get: getType
-node:
-  type_hint: \Drupal\node\NodeInterface
-  properties:
-    nid:
-      get: id
-    sticky:
-      get: isSticky
-      set: setSticky
-    status:
-      get: isPublished
-      set: setPublished
-    promoted:
-      get: isPromoted
-      set: setPromoted
-    title:
-      get: getTitle
-      set: setTitle
-    uid:
-      get: getOwnerId
-      set: setOwnerId
-    created:
-      get: getCreatedTime
-      set: setCreatedTime
-    type:
-      get: getType
-    is_new:
-      get: isNew
-user:
-  type_hint: \Drupal\user\UserInterface
-  properties:
-    uid:
-      get: id
-    access:
-      get: getLastAccessTime
-      set: setLastAccessTime
-    created:
-      get: getCreatedTime
-    is_new:
-      get: isNew
-    login:
-      get: getLastLoginTime
-      set: setLastLoginTime
-    mail:
-      get: getEmail
-      set: setEmail
-    name:
-      get: getUsername
-      set: setUsername
-    pass:
-      get: getPassword
-      set: setPassword
-taxonomy_term:
-  type_hint: \Drupal\taxonomy\TermInterface
-  properties:
-    tid:
-      get: id
-    name:
-      get: getName
-      set: setName
-    description:
-      get: getDescription
-      set: setDescription
-    weight:
-      get: getWeight
-      set: setWeight
-    vid:
-      get: getVocabularyId
-    is_new:
-      get: isNew
+definitions:
+  account:
+    type_hint: \Drupal\Core\Session\AccountInterface
+  comment:
+    type_hint: \Drupal\comment\CommentInterface
+    properties:
+      cid:
+        get: id
+      changed:
+        get: getChangedTime
+      created:
+        get: getCreatedTime
+        set: setCreatedTime
+      homepage:
+        get: getHomepage
+        set: setHomepage
+      hostname:
+        get: getHostname
+        set: setHostname
+      mail:
+        get: getAuthorEmail
+      name:
+        get: getAuthorName
+        set: setAuthorName
+      status:
+        get: isPublished
+        set: setPublished
+      subject:
+        get: getSubject
+        set: setSubject
+      thread:
+        get: getThread
+        set: setThread
+  field:
+    type_hint: \Drupal\Core\Field\FieldStorageDefinitionInterface
+    properties:
+      cardinality:
+        get: getCardinality
+      field_name:
+        get: getName
+      module:
+        get: getProvider
+      settings:
+        get: getSettings
+      translatable:
+        get: isTranslatable
+        set: setTranslatable
+      type:
+        get: getType
+  field_instance:
+    type_hint: \Drupal\Core\Field\FieldDefinitionInterface
+    properties:
+      bundle:
+        get: getTargetBundle
+      entity_type:
+        get: getTargetEntityTypeId
+      field_name:
+        get: getName
+      required:
+        get: isRequired
+      type:
+        get: getType
+  node:
+    type_hint: \Drupal\node\NodeInterface
+    properties:
+      nid:
+        get: id
+      sticky:
+        get: isSticky
+        set: setSticky
+      status:
+        get: isPublished
+        set: setPublished
+      promoted:
+        get: isPromoted
+        set: setPromoted
+      title:
+        get: getTitle
+        set: setTitle
+      uid:
+        get: getOwnerId
+        set: setOwnerId
+      created:
+        get: getCreatedTime
+        set: setCreatedTime
+      type:
+        get: getType
+      is_new:
+        get: isNew
+  user:
+    type_hint: \Drupal\user\UserInterface
+    properties:
+      uid:
+        get: id
+      access:
+        get: getLastAccessTime
+        set: setLastAccessTime
+      created:
+        get: getCreatedTime
+      is_new:
+        get: isNew
+      login:
+        get: getLastLoginTime
+        set: setLastLoginTime
+      mail:
+        get: getEmail
+        set: setEmail
+      name:
+        get: getUsername
+        set: setUsername
+      pass:
+        get: getPassword
+        set: setPassword
+  taxonomy_term:
+    type_hint: \Drupal\taxonomy\TermInterface
+    properties:
+      tid:
+        get: id
+      name:
+        get: getName
+        set: setName
+      description:
+        get: getDescription
+        set: setDescription
+      weight:
+        get: getWeight
+        set: setWeight
+      vid:
+        get: getVocabularyId
+      is_new:
+        get: isNew
diff --git a/config/install/drupalmoduleupgrader.tags.yml b/config/install/drupalmoduleupgrader.tags.yml
index 0a273a1..e8faf6e 100644
--- a/config/install/drupalmoduleupgrader.tags.yml
+++ b/config/install/drupalmoduleupgrader.tags.yml
@@ -6,32 +6,33 @@
 #
 # See hasTag(), getTag(), setTag(), and clearTag() in IssueInterface.
 
-# Categories for issues. An issue can be in any number of categories.
-# Categories are tagged by their machine name, so that the human-readable
-# title is editable in one place (namely, here).
-category:
-  block: 'Blocks'
-  cache: 'Caching'
-  config: 'Configuration'
-  ctools: 'CTools'
-  db: 'Database'
-  entity: 'Entity API'
-  field: 'Field API'
-  form: 'Form API'
-  info: 'Info File'
-  menu: 'Menu/Routing'
-  misc: 'Miscellaneous'
-  node: 'Node API'
-  render: 'Rendering'
-  system: 'System'
-  taxonomy: 'Taxonomy'
-  theme: 'Theme System'
-  ui: 'User Interface'
-  user: 'Users'
-  utility: 'Utilities'
+definitions:
+  # Categories for issues. An issue can be in any number of categories.
+  # Categories are tagged by their machine name, so that the human-readable
+  # title is editable in one place (namely, here).
+  category:
+    block: 'Blocks'
+    cache: 'Caching'
+    config: 'Configuration'
+    ctools: 'CTools'
+    db: 'Database'
+    entity: 'Entity API'
+    field: 'Field API'
+    form: 'Form API'
+    info: 'Info File'
+    menu: 'Menu/Routing'
+    misc: 'Miscellaneous'
+    node: 'Node API'
+    render: 'Rendering'
+    system: 'System'
+    taxonomy: 'Taxonomy'
+    theme: 'Theme System'
+    ui: 'User Interface'
+    user: 'Users'
+    utility: 'Utilities'
 
-# Issue error levels. At the time of this writing, all this affects is
-# the CSS class of the issue as rendered in the report.
-error_level:
-  - error
-  - warning
+  # Issue error levels. At the time of this writing, all this affects is
+  # the CSS class of the issue as rendered in the report.
+  error_level:
+    - error
+    - warning
diff --git a/src/Plugin/DMU/Analyzer/FlagHookDeriver.php b/src/Plugin/DMU/Analyzer/FlagHookDeriver.php
index 4304a8b..09a6716 100644
--- a/src/Plugin/DMU/Analyzer/FlagHookDeriver.php
+++ b/src/Plugin/DMU/Analyzer/FlagHookDeriver.php
@@ -24,7 +24,7 @@ class FlagHookDeriver extends DeriverBase {
   public static function create(ContainerInterface $container, $base_plugin_id) {
     return new static(
       $container->get('string_translation'),
-      $container->get('config.factory')->get('drupalmoduleupgrader.hooks')->get()
+      $container->get('config.factory')->get('drupalmoduleupgrader.hooks')->get('definitions')
     );
   }
 
diff --git a/src/Plugin/DMU/Analyzer/FunctionCallDeriver.php b/src/Plugin/DMU/Analyzer/FunctionCallDeriver.php
index 1638f85..77400c0 100644
--- a/src/Plugin/DMU/Analyzer/FunctionCallDeriver.php
+++ b/src/Plugin/DMU/Analyzer/FunctionCallDeriver.php
@@ -24,7 +24,7 @@ class FunctionCallDeriver extends DeriverBase {
   public static function create(ContainerInterface $container, $base_plugin_id) {
     return new static(
       $container->get('string_translation'),
-      $container->get('config.factory')->get('drupalmoduleupgrader.functions')->get()
+      $container->get('config.factory')->get('drupalmoduleupgrader.functions')->get('definitions')
     );
   }
 
diff --git a/src/Plugin/DMU/Converter/Functions/DisableDeriver.php b/src/Plugin/DMU/Converter/Functions/DisableDeriver.php
index e728fcc..73aa6e9 100644
--- a/src/Plugin/DMU/Converter/Functions/DisableDeriver.php
+++ b/src/Plugin/DMU/Converter/Functions/DisableDeriver.php
@@ -17,7 +17,7 @@ class DisableDeriver extends DeriverBase {
   public function getDerivativeDefinitions($base_definition) {
     $derivatives = [];
 
-    $config = \Drupal::config('drupalmoduleupgrader.functions')->get();
+    $config = \Drupal::config('drupalmoduleupgrader.functions')->get('definitions');
     foreach ($config as $key => $info) {
       // Only disable functions that have been explicitly marked for disabling.
       if (empty($info['disable'])) {
diff --git a/src/Plugin/DMU/Converter/Functions/EntityOperationDeriver.php b/src/Plugin/DMU/Converter/Functions/EntityOperationDeriver.php
index a77ee10..efe7570 100644
--- a/src/Plugin/DMU/Converter/Functions/EntityOperationDeriver.php
+++ b/src/Plugin/DMU/Converter/Functions/EntityOperationDeriver.php
@@ -28,7 +28,7 @@ class EntityOperationDeriver extends DeriverBase {
   public static function create(ContainerInterface $container, $base_plugin_id) {
     return new static(
       $container->get('string_translation'),
-      $container->get('config.factory')->get('drupalmoduleupgrader.entity_operations')->get()
+      $container->get('config.factory')->get('drupalmoduleupgrader.entity_operations')->get('definitions')
     );
   }
 
diff --git a/src/Plugin/DMU/Converter/Grep.php b/src/Plugin/DMU/Converter/Grep.php
index 55f4e32..7fbf063 100644
--- a/src/Plugin/DMU/Converter/Grep.php
+++ b/src/Plugin/DMU/Converter/Grep.php
@@ -40,7 +40,7 @@ class Grep extends ConverterBase {
    */
   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
     return new static(
-      $container->get('config.factory')->get('drupalmoduleupgrader.grep')->get(),
+      $container->get('config.factory')->get('drupalmoduleupgrader.grep')->get('definitions'),
       $plugin_id,
       $plugin_definition,
       $container->get('string_translation'),
diff --git a/src/Plugin/DMU/Rewriter/GenericDeriver.php b/src/Plugin/DMU/Rewriter/GenericDeriver.php
index b5171b6..9ca0960 100644
--- a/src/Plugin/DMU/Rewriter/GenericDeriver.php
+++ b/src/Plugin/DMU/Rewriter/GenericDeriver.php
@@ -25,7 +25,7 @@ class GenericDeriver implements ContainerDeriverInterface {
    */
   public static function create(ContainerInterface $container, $base_plugin_id) {
     return new static(
-      $container->get('config.factory')->get('drupalmoduleupgrader.rewriters')->get()
+      $container->get('config.factory')->get('drupalmoduleupgrader.rewriters')->get('definitions')
     );
   }
 
