diff --git a/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php b/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
index 769da3b..e1043b3 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
@@ -10,9 +10,77 @@
 use Drupal\migrate\MigrateSkipRowException;
 
 /**
- * This plugin changes the current value based on a static lookup map.
+ * Changes the source value based on a static lookup map.
  *
- * @link https://www.drupal.org/node/2143521 Online handbook documentation for static_map process plugin @endlink
+ * The static_map source plugin allows looking up a value based on a map
+ * specified in the configuration.
+ *
+ * Available configuration keys
+ * - source:
+ * - map:
+ * - bypass:
+ * - default_value
+ *
+ * Examples:
+ *
+ * @code
+ * process:
+ *   bar:
+ *     plugin: static_map
+ *     source: foo
+ *     map:
+ *       from: to
+ *       this: that
+ * @endcode
+ *
+ * If the value of the source property foo was "from" then the value of the
+ * destination property bar will be "to". Similarly "this" becomes "that".
+ * static_map can do a lot more than this: it supports a list of source
+ * properties. This is super useful in module-delta to machine name conversions.
+ *
+ * @code
+ * process:
+ *   id:
+ *   plugin: static_map
+ *     source:
+ *       - module
+ *       - delta
+ *      map:
+ *        filter:
+ *          0: filter_html_escape
+ *          1: filter_autop
+ *          2: filter_url
+ *          3: filter_htmlcorrector
+ *          4: filter_html_escape
+ *        php:
+ *          0: php_code
+ * @endcode
+ *
+ * If the value of the source properties module and delta are "filter" and "2"
+ * respectively, then the value of the destination id will be "filter_url". By
+ * default, if a value is not found in the map, an exception is thrown. This is
+ * desirable in the above example. When static_map is used to just rename a few
+ * things and leave the others, a "bypass: true" option can be added. In this
+ * case, the source value is used unchanged.
+ *
+ * Also, a default_value can be provided.
+ *
+ * @code
+ * process:
+ *   bar:
+ *     plugin: static_map
+ *     source: foo
+ *       map:
+ *         from: to
+ *         this: that
+ *       default_value: bar
+ * @endcode
+ *
+ * If the lookup fails, this default_value is used instead. Note that using the
+ * default value plugin after would not work as the pipeline has a value at this
+ * point: the value of the source specified for the static_map.
+ *
+ * @see \Drupal\migrate\Plugin\MigrateProcessInterface
  *
  * @MigrateProcessPlugin(
  *   id = "static_map"
@@ -21,7 +89,23 @@
 class StaticMap extends ProcessPluginBase {
 
   /**
-   * {@inheritdoc}
+   * Performs the associated process.
+   *
+   * @param mixed $value
+   *   The input value.
+   * @param \Drupal\migrate\MigrateExecutableInterface $migrate_executable
+   *   The migration in which this process is being executed.
+   * @param \Drupal\migrate\Row $row
+   *   The row from the source to process.
+   * @param string $destination_property
+   *   The destination property currently worked on. This is only used together
+   *   with the $row above.
+   *
+   * @return string
+   *   The sub string of $value.
+   *
+   * @throws \Drupal\migrate\MigrateException
+   * @throws \Drupal\migrate\MigrateSkipRowException
    */
   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
     $new_value = $value;
