diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index fdcb01b..cc542ca 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -1,5 +1,10 @@
 <?php
 
+/**
+ * @file
+ * Functions that need to be loaded on every Drupal request.
+ */
+
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Database\Database;
 use Symfony\Component\ClassLoader\UniversalClassLoader;
@@ -14,11 +19,6 @@
 use Drupal\Core\Lock\LockBackendInterface;
 
 /**
- * @file
- * Functions that need to be loaded on every Drupal request.
- */
-
-/**
  * The current system version.
  */
 const VERSION = '8.0-dev';
@@ -223,7 +223,7 @@
 const LANGUAGE_MULTIPLE = 'mul';
 
 /**
- * Language code referring to the default language of data, e.g. of an entity.
+ * Language code referring to the default language of data, e.g., of an entity.
  *
  * @todo: Change value to differ from LANGUAGE_NOT_SPECIFIED once field API
  * leverages the property API.
@@ -411,13 +411,13 @@ function timer_stop($name) {
  * directory.
  *
  * @param bool $require_settings
- *   Only configuration directories with an existing settings.php file
- *   will be recognized. Defaults to TRUE. During initial installation,
- *   this is set to FALSE so that Drupal can detect a matching directory,
- *   then create a new settings.php file in it.
+ *   (optional) Only configuration directories with an existing settings.php
+ *   file will be recognized. Defaults to TRUE. During initial installation,
+ *   this is set to FALSE so that Drupal can detect a matching directory, then
+ *   create a new settings.php file in it.
  * @param bool $reset
- *   Force a full search for matching directories even if one had been
- *   found previously. Defaults to FALSE.
+ *   (optional) Force a full search for matching directories even if one had
+ *   been found previously. Defaults to FALSE.
  *
  * @return
  *   The path of the matching directory.
@@ -464,16 +464,16 @@ function conf_path($require_settings = TRUE, $reset = FALSE) {
  * );
  * @endcode
  *
- * @param $http_host
- *   The hostname and optional port number, e.g. "www.example.com" or
+ * @param string $http_host
+ *   The hostname and optional port number, e.g., "www.example.com" or
  *   "www.example.com:8080".
- * @param $script_name
+ * @param string $script_name
  *   The part of the URL following the hostname, including the leading slash.
- * @param $require_settings
- *   Defaults to TRUE. If TRUE, then only match directories with a
- *   'settings.php' file. Otherwise match any directory.
+ * @param bool $require_settings
+ *   (optional) A Boolean indicating whether to recognize only configuration
+ *   directories with an existing settings.php file. Defaults to TRUE.
  *
- * @return
+ * @return string
  *   The path of the matching configuration directory.
  *
  * @see default.settings.php
@@ -666,8 +666,11 @@ function drupal_environment_initialize() {
 /**
  * Validates that a hostname (for example $_SERVER['HTTP_HOST']) is safe.
  *
- * @return
- *  TRUE if only containing valid characters, or FALSE otherwise.
+ * @param string $host
+ *   The host name to validate.
+ *
+ * @return bool
+ *   TRUE if the host name contains only valid characters, or FALSE otherwise.
  */
 function drupal_valid_http_host($host) {
   return preg_match('/^\[?(?:[a-zA-Z0-9-:\]_]+\.?)+$/', $host);
@@ -957,6 +960,15 @@ function drupal_get_filename($type, $name, $filename = NULL) {
  * The variable table is composed of values that have been saved in the table
  * with variable_set() as well as those explicitly specified in the
  * configuration file.
+ *
+ * @param array $conf
+ *   (optional) A partially constructed configuration array containing
+ *   persistent variables. This parameter allows this function to wait for any
+ *   lock on the variable cache, then proceed with the rebuild once the lock is
+ *   released. Defaults to an empty array.
+ *
+ * @return array
+ *   An associative array of variable keys and values.
  */
 function variable_initialize($conf = array()) {
   // NOTE: caching the variables improves performance by 20% when serving
@@ -1166,16 +1178,17 @@ function drupal_load($type, $name) {
  * Sets an HTTP response header for the current page.
  *
  * Note: When sending a Content-Type header, always include a 'charset' type,
- * too. This is necessary to avoid security bugs (e.g. UTF-7 XSS).
+ * too. This is necessary to avoid security bugs (e.g., UTF-7 XSS).
  *
  * @param $name
  *   The HTTP header name, or the special 'Status' header name.
  * @param $value
  *   The HTTP header value; if equal to FALSE, the specified header is unset.
  *   If $name is 'Status', this is expected to be a status code followed by a
- *   reason phrase, e.g. "404 Not Found".
+ *   reason phrase, e.g., "404 Not Found".
  * @param $append
- *   Whether to append the value to an existing header or to replace it.
+ *   (optional) Whether to append the value to an existing header or to replace
+ *   it. Defaults to FALSE.
  */
 function drupal_add_http_header($name, $value, $append = FALSE) {
   // The headers as name/value pairs.
@@ -1225,6 +1238,9 @@ function drupal_get_http_header($name = NULL) {
  *
  * Header names are case-insensitive, but for maximum compatibility they should
  * follow "common form" (see RFC 2617, section 4.2).
+ *
+ * @param string|null $name
+ *   (optional) An HTTP header name. Defaults to NULL.
  */
 function _drupal_set_preferred_header_name($name = NULL) {
   static $header_names = array();
@@ -1241,9 +1257,9 @@ function _drupal_set_preferred_header_name($name = NULL) {
  * Headers are set in drupal_add_http_header(). Default headers are not set
  * if they have been replaced or unset using drupal_add_http_header().
  *
- * @param $default_headers
+ * @param array $default_headers
  *   An array of headers as name/value pairs.
- * @param $single
+ * @param bool $only_default
  *   If TRUE and headers have already be sent, send only the specified header.
  */
 function drupal_send_headers($default_headers = array(), $only_default = FALSE) {
@@ -1326,6 +1342,9 @@ function drupal_page_header() {
  * If the request is conditional (using If-Modified-Since and If-None-Match),
  * and the conditions match those currently in the cache, a 304 Not Modified
  * response is sent.
+ *
+ * @param object $cache
+ *   An object containing the page cache data.
  */
 function drupal_serve_page_from_cache(stdClass $cache) {
   $config = config('system.performance');
@@ -2014,8 +2033,8 @@ function drupal_hash_base64($data) {
  * $correct = drupal_array_merge_deep($link_options_1, $link_options_2);
  * @endcode
  *
- * @param ...
- *   Arrays to merge.
+ * @param array $arrays
+ *    Arrays to merge.
  *
  * @return
  *   The merged array.
@@ -2041,6 +2060,12 @@ function drupal_array_merge_deep() {
  * - call_user_func_array('drupal_array_merge_deep', $arrays_to_merge);
  * - drupal_array_merge_deep_array($arrays_to_merge);
  *
+ * @param ...
+ *   Arrays to merge.
+ *
+ * @return
+ *   The merged array.
+ *
  * @see drupal_array_merge_deep()
  */
 function drupal_array_merge_deep_array($arrays) {
@@ -2545,6 +2570,12 @@ function drupal_valid_test_ua($new_prefix = NULL) {
 
 /**
  * Generates a user agent string with a HMAC and timestamp for simpletest.
+ *
+ * @param string $prefix
+ *   The custom prefix to prepend to the validation string for the hash.
+ *
+ * @return string
+ *   A user agent string with a HMAC and timestamp for simpletest.
  */
 function drupal_generate_test_ua($prefix) {
   global $drupal_hash_salt;
@@ -2678,7 +2709,7 @@ function drupal_language_initialize() {
  * @see Drupal\Core\Language\LanguageManager
  *
  * @param string $type
- *   The type of language object needed, e.g. LANGUAGE_TYPE_INTERFACE.
+ *   The type of language object needed, e.g., LANGUAGE_TYPE_INTERFACE.
  * @param bool $reset
  *   TRUE to reset the statically cached language object for the type, or for
  *   all types if $type is NULL.
@@ -2736,6 +2767,7 @@ function language($type, $reset = FALSE) {
 function language_types_get_all() {
   return array_keys(variable_get('language_types', language_types_get_default()));
 }
+
 /**
  * Returns a list of the built-in language types.
  *
@@ -3005,7 +3037,7 @@ function _current_path($path = NULL) {
  * read. In menu callback functions, attempt to use named arguments. See the
  * explanation in menu.inc for how to construct callbacks that take arguments.
  * When attempting to use this function to load an element from the current
- * path, e.g. loading the node on a node page, use menu_get_object() instead.
+ * path, e.g., loading the node on a node page, use menu_get_object() instead.
  *
  * @param $index
  *   The index of the component, where each component is separated by a '/'
@@ -3276,7 +3308,7 @@ function drupal_classloader_register($name, $path) {
  *
  * @param $name
  *   Globally unique name for the variable. For a function with only one static,
- *   variable, the function name (e.g. via the PHP magic __FUNCTION__ constant)
+ *   variable, the function name (e.g., via the PHP magic __FUNCTION__ constant)
  *   is recommended. For a function with multiple static variables add a
  *   distinguishing suffix to the function name for each one.
  * @param $default_value
@@ -3423,11 +3455,11 @@ function _drupal_shutdown_function() {
  *
  * @param $required
  *   The memory required for the operation, expressed as a number of bytes with
- *   optional SI or IEC binary unit prefix (e.g. 2, 3K, 5MB, 10G, 6GiB, 8bytes,
+ *   optional SI or IEC binary unit prefix (e.g., 2, 3K, 5MB, 10G, 6GiB, 8bytes,
  *   9mbytes).
  * @param $memory_limit
  *   (optional) The memory limit for the operation, expressed as a number of
- *   bytes with optional SI or IEC binary unit prefix (e.g. 2, 3K, 5MB, 10G,
+ *   bytes with optional SI or IEC binary unit prefix (e.g., 2, 3K, 5MB, 10G,
  *   6GiB, 8bytes, 9mbytes). If no value is passed, the current PHP
  *   memory_limit will be used. Defaults to NULL.
  *
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 0f252ca..498b685 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -1,13 +1,5 @@
 <?php
 
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Drupal\Component\Utility\NestedArray;
-use Drupal\Core\Cache\CacheBackendInterface;
-use Drupal\Core\Database\Database;
-use Drupal\Core\Template\Attribute;
-
 /**
  * @file
  * Common functions that many Drupal modules will need to reference.
@@ -16,6 +8,14 @@
  * a cached page are instead located in bootstrap.inc.
  */
 
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Drupal\Component\Utility\NestedArray;
+use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Database\Database;
+use Drupal\Core\Template\Attribute;
+
 /**
  * @defgroup php_wrappers PHP wrapper functions
  * @{
@@ -476,7 +476,7 @@ function drupal_get_query_array($query) {
  * urlencode()) all query parameters.
  *
  * @param $query
- *   The query parameter array to be processed, e.g. $_GET.
+ *   The query parameter array to be processed, e.g., $_GET.
  * @param $parent
  *   Internal use only. Used to build the $query array key for nested items.
  *
@@ -732,7 +732,7 @@ function drupal_goto($path = '', array $options = array(), $http_response_code =
  *   - request: A string containing the request body that was sent.
  *   - code: An integer containing the response status code, or the error code
  *     if an error occurred.
- *   - protocol: The response protocol (e.g. HTTP/1.1 or HTTP/1.0).
+ *   - protocol: The response protocol (e.g., HTTP/1.1 or HTTP/1.0).
  *   - status_message: The status message from the response, if a response was
  *     received.
  *   - redirect_code: If redirected, an integer containing the initial response
@@ -1078,6 +1078,7 @@ function valid_email_address($mail) {
  * This function should only be used on actual URLs. It should not be used for
  * Drupal menu paths, which can contain arbitrary characters.
  * Valid values per RFC 3986.
+ *
  * @param $url
  *   The URL to verify.
  * @param $absolute
@@ -1248,7 +1249,7 @@ function flood_is_allowed($name, $threshold, $window = 3600, $identifier = NULL)
  */
 
 /**
- * Strips dangerous protocols (e.g. 'javascript:') from a URI.
+ * Strips dangerous protocols (e.g., 'javascript:') from a URI.
  *
  * This function must be called for all URIs within user-entered input prior
  * to being output to an HTML attribute value. It is often called as part of
@@ -1471,8 +1472,11 @@ function _filter_xss_split($m, $store = FALSE) {
 /**
  * Processes a string of HTML attributes.
  *
- * @return
- *   Cleaned up version of the HTML attributes.
+ * @param string $attr
+ *   The attribute string.
+ *
+ * @return array
+ *   An array containing the cleaned-up attributes.
  */
 function _filter_xss_attributes($attr) {
   $attrarr = array();
@@ -1613,7 +1617,27 @@ function filter_xss_bad_protocol($string, $decode = TRUE) {
 /**
  * Formats an RSS channel.
  *
- * Arbitrary elements may be added using the $args associative array.
+ * @param string $title
+ *   The title of the RSS feed.
+ * @param string $link
+ *   The URL for the RSS feed.
+ * @param string $description
+ *   The text description of the RSS feed.
+ * @param string $items
+ *   A string of items for the RSS feed, already sanitized and formatted for
+ *   output. See format_rss_item().
+ * @parm string|null $langcode
+ *   (optional) The language code for the feed. If not set, the language code
+ *   for the current context is used. Defaults to NULL.
+ * @param array $args
+ *   (optional) An array of additional elements to add to the feed above the
+ *   item list. See format_xml_elements() for the allowed structure of this
+ *   parameter. Defaults to an empty array.
+ *
+ * @return string
+ *   An HTML-formatted RSS channel.
+ *
+ * @see format_rss_item()
  */
 function format_rss_channel($title, $link, $description, $items, $langcode = NULL, $args = array()) {
   $langcode = $langcode ? $langcode : language(LANGUAGE_TYPE_CONTENT)->langcode;
@@ -1637,7 +1661,21 @@ function format_rss_channel($title, $link, $description, $items, $langcode = NUL
 /**
  * Formats a single RSS item.
  *
- * Arbitrary elements may be added using the $args associative array.
+ * @param string $title
+ *   The title of the item.
+ * @param string $link
+ *   The URL for the item
+ * @param string $description
+ *   The text description for the item.
+ * @param array $args
+ *   (optional) An array of additional elements to add to the feed above the
+ *   item list. See format_xml_elements() for the allowed structure of this
+ *   parameter. Defaults to an empty array.
+ *
+ * @return string
+ *   An HTML-formatted RSS item.
+ *
+ * @see format_rss_channel()
  */
 function format_rss_item($title, $link, $description, $args = array()) {
   $output = "<item>\n";
@@ -1713,7 +1751,7 @@ function format_xml_elements($array) {
  *   The item count to display.
  * @param $singular
  *   The string for the singular case. Make sure it is clear this is singular,
- *   to ease translation (e.g. use "1 new comment" instead of "1 new"). Do not
+ *   to ease translation (e.g., use "1 new comment" instead of "1 new"). Do not
  *   use @count in the singular string.
  * @param $plural
  *   The string for the plural case. Make sure it is clear this is plural, to
@@ -1773,7 +1811,7 @@ function format_plural($count, $singular, $plural, array $args = array(), array
  *
  * @param $size
  *   A size expressed as a number of bytes with optional SI or IEC binary unit
- *   prefix (e.g. 2, 3K, 5MB, 10G, 6GiB, 8 bytes, 9mbytes).
+ *   prefix (e.g., 2, 3K, 5MB, 10G, 6GiB, 8 bytes, 9mbytes).
  *
  * @return
  *   An integer representation of the size in bytes.
@@ -2018,6 +2056,17 @@ function date_iso8601($date) {
  * Translates a formatted date string.
  *
  * Callback for preg_replace_callback() within format_date().
+ *
+ * @param array|null $matches
+ *   (optional) The matches found for the regular expression passed to
+ *   preg_replace_callback() with this callback. See preg_match() for more
+ *   information. Defaults to NULL.
+ * @param string|null $new_langcode
+ *   (optional) The language code to used for translation. Cached statically.
+ *   This parameter is ignored if $matches is passed. Defaults to NULL.
+ *
+ * @param string
+ *   A translation of a formatted date string.
  */
 function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
   // We cache translations to avoid redundant and rather costly calls to t().
@@ -2065,7 +2114,7 @@ function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
  *   "node/34" or "http://example.com/foo". The default value is equivalent to
  *   passing in '<front>'. A few notes:
  *   - If you provide a full URL, it will be considered an external URL.
- *   - If you provide only the path (e.g. "node/34"), it will be
+ *   - If you provide only the path (e.g., "node/34"), it will be
  *     considered an internal link. In this case, it should be a system URL,
  *     and it will be replaced with the alias, if one exists. Additional query
  *     arguments for internal paths must be supplied in $options['query'], not
@@ -2074,7 +2123,7 @@ function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
  *     path is assumed already to be the correct path alias, and the alias is
  *     not looked up.
  *   - The special string '<front>' generates a link to the site's base URL.
- *   - If your external URL contains a query (e.g. http://example.com/foo?a=b),
+ *   - If your external URL contains a query (e.g., http://example.com/foo?a=b),
  *     then you can either URL encode the query keys and values yourself and
  *     include them in $path, or use $options['query'] to let this function
  *     URL encode them.
@@ -2210,7 +2259,7 @@ function url($path = NULL, array $options = array()) {
 }
 
 /**
- * Returns TRUE if a path is external to Drupal (e.g. http://example.com).
+ * Returns TRUE if a path is external to Drupal (e.g., http://example.com).
  *
  * If a path cannot be assessed by Drupal's menu handler, then we must
  * treat it as potentially insecure.
@@ -2974,7 +3023,7 @@ function drupal_aggregate_css(&$css_groups) {
  * this function to work correctly even if modules have implemented custom
  * logic for grouping and aggregating files.
  *
- * @param $element
+ * @param array $elements
  *   A render array containing:
  *   - '#items': The CSS items as returned by drupal_add_css() and altered by
  *     drupal_get_css().
@@ -2984,7 +3033,7 @@ function drupal_aggregate_css(&$css_groups) {
  *   - '#aggregate_callback': A function to call to aggregate the items within
  *     the groups arranged by the #group_callback function.
  *
- * @return
+ * @return array
  *   A render array that will render to a string of XHTML CSS tags.
  *
  * @see drupal_get_css()
@@ -3254,6 +3303,21 @@ function drupal_build_css_cache($css) {
 
 /**
  * Prefixes all paths within a CSS file for drupal_build_css_cache().
+ *
+ * Callback for preg_replace_callback() within:
+ * - drupal_build_css_cache()
+ * - color_scheme_form_submit()
+ *
+ * @param array $matches
+ *   The matches found for the regular expression passed to
+ *   preg_replace_callback() with this callback. See preg_match() for more
+ *   information.
+ * @param string|null $base
+ *   (optional) The base path for the CSS files. Cached statically. This
+ *   parameter is not used if $matches is passed. Defaults to NULL.
+ *
+ * @return string
+ *   A prefixed path as a string.
  */
 function _drupal_build_css_path($matches, $base = NULL) {
   $_base = &drupal_static(__FUNCTION__);
@@ -3388,8 +3452,10 @@ function drupal_load_stylesheet_content($contents, $optimize = FALSE) {
 /**
  * Loads stylesheets recursively and returns contents with corrected paths.
  *
- * This function is used for recursive loading of stylesheets and
- * returns the stylesheet content with all url() paths corrected.
+ * Callback for preg_replace_callback() in drupal_load_stylesheet_content().
+ *
+ * This function is used for recursive loading of stylesheets and returns the
+ * stylesheet content with all url() paths corrected.
  */
 function _drupal_load_stylesheet($matches) {
   $filename = $matches[1];
@@ -3967,7 +4033,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
  * this function to work correctly even if modules have implemented custom
  * logic for grouping and aggregating files.
  *
- * @param $element
+ * @param array $elements
  *   A render array containing:
  *   - #items: The JavaScript items as returned by drupal_add_js() and
  *     altered by drupal_get_js().
@@ -3977,7 +4043,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
  *   - #aggregate_callback: A function to call to aggregate the items within
  *     the groups arranged by the #group_callback function.
  *
- * @return
+ * @return array
  *   A render array that will render to a string of JavaScript tags.
  *
  * @see drupal_get_js()
@@ -4655,17 +4721,20 @@ function drupal_get_library($module, $name = NULL) {
  *   A class name applied on all related form elements for this action.
  * @param $subgroup
  *   (optional) If the group has several subgroups within it, this string should
- *   contain the class name identifying fields in the same subgroup.
+ *   contain the class name identifying fields in the same subgroup. Defaults to
+ *   NULL.
  * @param $source
  *   (optional) If the $action is 'match', this string should contain the class
  *   name identifying what field will be used as the source value when matching
- *   the value in $subgroup.
+ *   the value in $subgroup. Defaults to NULL.
  * @param $hidden
  *   (optional) The column containing the field elements may be entirely hidden
  *   from view dynamically when the JavaScript is loaded. Set to FALSE if the
- *   column should not be hidden.
+ *   column should not be hidden. Defaults to TRUE.
  * @param $limit
- *   (optional) Limit the maximum amount of parenting in this table.
+ *   (optional) Limit the maximum amount of parenting in this table. Defaults to
+ *   zero.
+ *
  * @see block-admin-display-form.tpl.php
  * @see theme_menu_overview_form()
  */
@@ -4784,6 +4853,12 @@ function drupal_clear_js_cache() {
  *
  * We use HTML-safe strings, with several characters escaped.
  *
+ * @param mixed $var
+ *   The PHP variable to encode as JSON.
+ *
+ * @return string|false
+ *   A JSON encoded string on success or FALSE on failure.
+ *
  * @see drupal_json_decode()
  * @ingroup php_wrappers
  */
@@ -4795,6 +4870,15 @@ function drupal_json_encode($var) {
 /**
  * Converts an HTML-safe JSON string into its PHP equivalent.
  *
+ * @param string $var
+ *   The JSON data to decode into PHP.
+ *
+ * @return mixed
+ *   Returns the value encoded in json in appropriate PHP type. Values true,
+ *   false and null (case-insensitive) are returned as TRUE, FALSE and NULL
+ *   respectively. NULL is returned if the json cannot be decoded or if the
+ *   encoded data is deeper than the recursion limit.
+ *
  * @see drupal_json_encode()
  * @ingroup php_wrappers
  */
@@ -4993,8 +5077,8 @@ function drupal_page_set_cache($body) {
  *
  * Do not call this function from a test. Use $this->cronRun() instead.
  *
- * @return
- *   TRUE if cron ran successfully.
+ * @return bool
+ *   TRUE if cron ran successfully, FALSE if a lock could not be acquired.
  */
 function drupal_cron_run() {
   // Allow execution to continue even if the request gets canceled.
@@ -5566,7 +5650,7 @@ function drupal_render_page($page) {
  * #theme is the theme function called first. If it is set and the element has
  * any children, it is the responsibility of the theme function to render
  * these children. For elements that are not allowed to have any children,
- * e.g. buttons or textfields, the theme function can be used to render the
+ * e.g., buttons or textfields, the theme function can be used to render the
  * element itself. If #theme is not present and the element has children, each
  * child is itself rendered by a call to drupal_render(), and the results are
  * concatenated.
@@ -6192,6 +6276,14 @@ function drupal_sort_title($a, $b) {
 
 /**
  * Checks if the key is a property.
+ *
+ * Callback for array_filter() within element_properties().
+ *
+ * @param string $key
+ *   The key to check.
+ *
+ * @return bool
+ *   Returns TRUE if the first character is '#'; FALSE otherwise.
  */
 function element_property($key) {
   return $key[0] == '#';
@@ -6199,6 +6291,9 @@ function element_property($key) {
 
 /**
  * Gets properties of a structured array element (keys beginning with '#').
+ *
+ * @param array $element
+ *   The structured array to filter.
  */
 function element_properties($element) {
   return array_filter(array_keys((array) $element), 'element_property');
@@ -6206,6 +6301,9 @@ function element_properties($element) {
 
 /**
  * Checks if the key is a child.
+ *
+ * @param string $key
+ *   The key to check.
  */
 function element_child($key) {
   return !isset($key[0]) || $key[0] != '#';
@@ -6707,7 +6805,14 @@ function watchdog_severity_levels() {
 
 
 /**
- * Explodes a string of tags into an array.
+ * Explodes a user-entered string of comma-separated values into an array.
+ *
+ * @param string $tags.
+ *   A comma-separated string of values (tags, etc.), with any value
+ *   containing a comma wrapped in double quotes (e.g., "Madison, WI").
+ *
+ * @return array
+ *   An empty array or an array of strings.
  *
  * @see drupal_implode_tags()
  */
@@ -6733,7 +6838,14 @@ function drupal_explode_tags($tags) {
 }
 
 /**
- * Implodes an array of tags into a string.
+ * Implodes an array of values (tags) into a string.
+ *
+ * @param array $tags
+ *   An array of values (tags, etc.) to merge into a comma-separated string for
+ *   rendering or storage.
+ *
+ * @return string
+ *   An imploded string of the array of values.
  *
  * @see drupal_explode_tags()
  */
@@ -6906,7 +7018,7 @@ function debug($data, $label = NULL, $print_r = FALSE) {
  *
  * @return
  *   An associative array with three keys:
- *   - 'name' includes the name of the thing to depend on (e.g. 'foo').
+ *   - 'name' includes the name of the thing to depend on (e.g., 'foo').
  *   - 'original_version' contains the original version string (which can be
  *     used in the UI for reporting incompatibilities).
  *   - 'versions' is a list of associative arrays, each containing the keys
