diff --git a/core/lib/Drupal/Core/Config/ConfigImporter.php b/core/lib/Drupal/Core/Config/ConfigImporter.php
index 837abc0..ac0b6ba 100644
--- a/core/lib/Drupal/Core/Config/ConfigImporter.php
+++ b/core/lib/Drupal/Core/Config/ConfigImporter.php
@@ -544,10 +544,10 @@ public function initialize() {
   /**
    * Processes extensions as a batch operation.
    *
-   * @param array $context.
+   * @param $context.
    *   The batch context.
    */
-  protected function processExtensions(array &$context) {
+  protected function processExtensions(&$context) {
     $operation = $this->getNextExtensionOperation();
     if (!empty($operation)) {
       $this->processExtension($operation['type'], $operation['op'], $operation['name']);
@@ -564,10 +564,10 @@ protected function processExtensions(array &$context) {
   /**
    * Processes configuration as a batch operation.
    *
-   * @param array $context.
+   * @param $context.
    *   The batch context.
    */
-  protected function processConfigurations(array &$context) {
+  protected function processConfigurations(&$context) {
     // The first time this is called we need to calculate the total to process.
     // This involves recalculating the changelist which will ensure that if
     // extensions have been processed any configuration affected will be taken
@@ -607,10 +607,10 @@ protected function processConfigurations(array &$context) {
   /**
    * Handles processing of missing content.
    *
-   * @param array $context
+   * @param $context
    *   Standard batch context.
    */
-  protected function processMissingContent(array &$context) {
+  protected function processMissingContent(&$context) {
     $sandbox = &$context['sandbox']['config'];
     if (!isset($sandbox['missing_content'])) {
       $missing_content = $this->configManager->findMissingContentDependencies();
@@ -639,10 +639,10 @@ protected function processMissingContent(array &$context) {
   /**
    * Finishes the batch.
    *
-   * @param array $context.
+   * @param $context.
    *   The batch context.
    */
-  protected function finish(array &$context) {
+  protected function finish(&$context) {
     $this->eventDispatcher->dispatch(ConfigEvents::IMPORT, new ConfigImporterEvent($this));
     // The import is now complete.
     $this->lock->release(static::LOCK_NAME);
diff --git a/core/lib/Drupal/Core/Form/form.api.php b/core/lib/Drupal/Core/Form/form.api.php
index 19c2543..076845a 100644
--- a/core/lib/Drupal/Core/Form/form.api.php
+++ b/core/lib/Drupal/Core/Form/form.api.php
@@ -51,6 +51,8 @@
  *     all operations have finished, this is passed to callback_batch_finished()
  *     where results may be referenced to display information to the end-user,
  *     such as how many total items were processed.
+ *   It is discouraged to typehint this parameter as an array, to allow an
+ *   object implement \ArrayAccess to be passed.
  */
 function callback_batch_operation($MULTIPLE_PARAMS, &$context) {
   $node_storage = \Drupal::entityTypeManager()->getStorage('node');
diff --git a/core/modules/locale/locale.batch.inc b/core/modules/locale/locale.batch.inc
index a5ef423..cf1bf41 100644
--- a/core/modules/locale/locale.batch.inc
+++ b/core/modules/locale/locale.batch.inc
@@ -33,10 +33,10 @@
  *     batch is finished. Optional, defaults to TRUE.
  *   - 'use_remote': Whether or not to check the remote translation file.
  *     Optional, defaults to TRUE.
- * @param array $context
+ * @param $context
  *   The batch context.
  */
-function locale_translation_batch_status_check($project, $langcode, array $options, array &$context) {
+function locale_translation_batch_status_check($project, $langcode, array $options, &$context) {
   $failure = $checked = FALSE;
   $options += array(
     'finish_feedback' => TRUE,
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index de43c85..8b8ede0 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -185,10 +185,10 @@ function locale_translate_batch_build(array $files, array $options) {
  *     LOCALE_NOT_CUSTOMIZED.
  *   - 'message': Alternative message to display during import. Note, this must
  *     be sanitized text.
- * @param array $context
+ * @param $context
  *   Contains a list of files imported.
  */
-function locale_translate_batch_import($file, array $options, array &$context) {
+function locale_translate_batch_import($file, array $options, &$context) {
   // Merge the default values in the $options array.
   $options += array(
     'overwrite_options' => array(),
@@ -293,10 +293,10 @@ function locale_translate_batch_import_save(array $context) {
  *
  * Refreshes translations after importing strings.
  *
- * @param array $context
+ * @param $context
  *   Contains a list of strings updated and information about the progress.
  */
-function locale_translate_batch_refresh(array &$context) {
+function locale_translate_batch_refresh(&$context) {
   if (!isset($context['sandbox']['refresh'])) {
     $strings = $langcodes = array();
     if (isset($context['results']['stats'])) {
@@ -597,12 +597,12 @@ function locale_config_batch_build(array $names, array $langcodes, array $option
  *   An array of names of configuration objects to update.
  * @param array $langcodes
  *   (optional) Array of language codes to update. Defaults to all languages.
- * @param array $context
+ * @param $context
  *   Contains a list of files imported.
  *
  * @see locale_config_batch_build()
  */
-function locale_config_batch_refresh_name(array $names, array $langcodes, array &$context) {
+function locale_config_batch_refresh_name(array $names, array $langcodes, &$context) {
   if (!isset($context['result']['stats']['config'])) {
     $context['result']['stats']['config'] = 0;
   }
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 5566566..11eed20 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -108,10 +108,10 @@ function _node_mass_update_helper(NodeInterface $node, array $updates, $langcode
  * @param bool $revisions
  *   (optional) TRUE if $nodes contains an array of revision IDs instead of
  *   node IDs. Defaults to FALSE; will be ignored if $load is FALSE.
- * @param array $context
+ * @param $context
  *   An array of contextual key/values.
  */
-function _node_mass_update_batch_process(array $nodes, array $updates, $load, $revisions, array &$context) {
+function _node_mass_update_batch_process(array $nodes, array $updates, $load, $revisions, &$context) {
   if (!isset($context['sandbox']['progress'])) {
     $context['sandbox']['progress'] = 0;
     $context['sandbox']['max'] = count($nodes);
