diff --git a/core/lib/Drupal/Core/Render/Builder/ActionsBuilder.php b/core/lib/Drupal/Core/Render/Builder/ActionsBuilder.php
new file mode 100644
index 0000000..34ffc8a
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ActionsBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ActionsBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'actions' element.
+ */
+class ActionsBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'actions'];
+
+  /**
+   * Set the attributes property on the actions.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the children property on the actions.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setChildren($value) {
+    $this->set('children', $value);
+    return $this;
+  }
+
+  /**
+   * Set the id property on the actions.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setId($value) {
+    $this->set('id', $value);
+    return $this;
+  }
+
+  /**
+   * Set the type property on the actions.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setType($value) {
+    $this->set('type', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/AjaxBuilder.php b/core/lib/Drupal/Core/Render/Builder/AjaxBuilder.php
new file mode 100644
index 0000000..973a707
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/AjaxBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\AjaxBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'ajax' element.
+ */
+class AjaxBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'ajax'];
+
+  /**
+   * Set the headers property on the ajax.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeaders($value) {
+    $this->set('headers', $value);
+    return $this;
+  }
+
+  /**
+   * Set the commands property on the ajax.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setCommands($value) {
+    $this->set('commands', $value);
+    return $this;
+  }
+
+  /**
+   * Set the error property on the ajax.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setError($value) {
+    $this->set('error', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/BreadcrumbBuilder.php b/core/lib/Drupal/Core/Render/Builder/BreadcrumbBuilder.php
new file mode 100644
index 0000000..9d4e736
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/BreadcrumbBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\BreadcrumbBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'breadcrumb' element.
+ */
+class BreadcrumbBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'breadcrumb'];
+
+  /**
+   * Set the links property on the breadcrumb.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLinks($value) {
+    $this->set('links', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/BuilderBase.php b/core/lib/Drupal/Core/Render/Builder/BuilderBase.php
new file mode 100644
index 0000000..6847da0
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/BuilderBase.php
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\BuilderBase.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Define a base that all theme builders extend.
+ */
+abstract class BuilderBase implements BuilderBaseInterface {
+
+  /**
+   * An array of the internal representation of the theme instance.
+   *
+   * @var array
+   */
+  protected $renderable = array();
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create() {
+    return new static();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function render() {
+    return $this->renderable;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function set($key, $value) {
+    $this->renderable['#' . $key] = $value;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setPrefix($value) {
+    $this->set('prefix', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setSuffix($value) {
+    $this->set('suffix', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setPostRender($value) {
+    $this->set('post_render', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setPreRender($value) {
+    $this->set('pre_render', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAccess($value) {
+    $this->set('access', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAccessCallback($value) {
+    $this->set('access_callback', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setWeight($value) {
+    $this->set('weight', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setCache($value) {
+    $this->set('cache', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setThemeWrappers($value) {
+    $this->set('theme_wrappers', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAfterBuild($value) {
+    $this->set('after_build', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/BuilderBaseInterface.php b/core/lib/Drupal/Core/Render/Builder/BuilderBaseInterface.php
new file mode 100644
index 0000000..cdfd12c
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/BuilderBaseInterface.php
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\BuilderBaseInterface.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Defines methods found on the base builder class.
+ */
+interface BuilderBaseInterface {
+
+  /**
+   * Create an instance of a builder object.
+   *
+   * @return static
+   */
+  public static function create();
+
+  /**
+   * Returns the array representation of built renderable.
+   *
+   * @return array
+   */
+  public function render();
+
+  /**
+   * Set any key on the renderable array being constructed.
+   *
+   * @param string $key
+   *   The key to set on the renderable array.
+   * @param mixed $value
+   *   The value to assign the key.
+   */
+  public function set($key, $value);
+
+  /**
+   * Set the 'prefix' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setPrefix($value);
+
+  /**
+   * Set the 'suffix' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setSuffix($value);
+
+  /**
+   * Set the 'post_render' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setPostRender($value);
+
+  /**
+   * Set the 'pre_render' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setPreRender($value);
+
+  /**
+   * Set the 'access' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setAccess($value);
+
+  /**
+   * Set the 'access_callback' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setAccessCallback($value);
+
+  /**
+   * Set the 'weight' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setWeight($value);
+
+  /**
+   * Set the 'cache' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setCache($value);
+
+  /**
+   * Set the 'theme_wrappers' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setThemeWrappers($value);
+
+  /**
+   * Set the 'after_build' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setAfterBuild($value);
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ButtonBuilder.php b/core/lib/Drupal/Core/Render/Builder/ButtonBuilder.php
new file mode 100644
index 0000000..34e02a8
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ButtonBuilder.php
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ButtonBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'button' element.
+ */
+class ButtonBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'button'];
+
+  /**
+   * Set the ajax property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the button_type property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setButtonType($value) {
+    $this->set('button_type', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the executes_submit_callback property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setExecutesSubmitCallback($value) {
+    $this->set('executes_submit_callback', $value);
+    return $this;
+  }
+
+  /**
+   * Set the limit_validation_errors property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLimitValidationErrors($value) {
+    $this->set('limit_validation_errors', $value);
+    return $this;
+  }
+
+  /**
+   * Set the name property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setName($value) {
+    $this->set('name', $value);
+    return $this;
+  }
+
+  /**
+   * Set the submit property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSubmit($value) {
+    $this->set('submit', $value);
+    return $this;
+  }
+
+  /**
+   * Set the validate property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValidate($value) {
+    $this->set('validate', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/CheckboxBuilder.php b/core/lib/Drupal/Core/Render/Builder/CheckboxBuilder.php
new file mode 100644
index 0000000..412861b
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/CheckboxBuilder.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\CheckboxBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'checkbox' element.
+ */
+class CheckboxBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'checkbox'];
+
+  /**
+   * Set the ajax property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the return_value property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setReturnValue($value) {
+    $this->set('return_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the checkbox.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/CheckboxesBuilder.php b/core/lib/Drupal/Core/Render/Builder/CheckboxesBuilder.php
new file mode 100644
index 0000000..6a087e8
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/CheckboxesBuilder.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\CheckboxesBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'checkboxes' element.
+ */
+class CheckboxesBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'checkboxes'];
+
+  /**
+   * Set the ajax property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the checkboxes.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ColorBuilder.php b/core/lib/Drupal/Core/Render/Builder/ColorBuilder.php
new file mode 100644
index 0000000..97779ed
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ColorBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ColorBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'color' element.
+ */
+class ColorBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'color'];
+
+  /**
+   * Set the title property on the color.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the color.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the color.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the color.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the ajax property on the color.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ContainerBuilder.php b/core/lib/Drupal/Core/Render/Builder/ContainerBuilder.php
new file mode 100644
index 0000000..b0ccbfd
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ContainerBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ContainerBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'container' element.
+ */
+class ContainerBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'container'];
+
+  /**
+   * Set the attributes property on the container.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the children property on the container.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setChildren($value) {
+    $this->set('children', $value);
+    return $this;
+  }
+
+  /**
+   * Set the id property on the container.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setId($value) {
+    $this->set('id', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/DateBuilder.php b/core/lib/Drupal/Core/Render/Builder/DateBuilder.php
new file mode 100644
index 0000000..6756632
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/DateBuilder.php
@@ -0,0 +1,108 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\DateBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'date' element.
+ */
+class DateBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'date'];
+
+  /**
+   * Set the attributes property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the date.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/DetailsBuilder.php b/core/lib/Drupal/Core/Render/Builder/DetailsBuilder.php
new file mode 100644
index 0000000..231f649
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/DetailsBuilder.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\DetailsBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'details' element.
+ */
+class DetailsBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'details'];
+
+  /**
+   * Set the attributes property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the open property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOpen($value) {
+    $this->set('open', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the group property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setGroup($value) {
+    $this->set('group', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the details.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/DropbuttonBuilder.php b/core/lib/Drupal/Core/Render/Builder/DropbuttonBuilder.php
new file mode 100644
index 0000000..8443077
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/DropbuttonBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\DropbuttonBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'dropbutton' element.
+ */
+class DropbuttonBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'dropbutton'];
+
+  /**
+   * Set the links property on the dropbutton.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLinks($value) {
+    $this->set('links', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the dropbutton.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the heading property on the dropbutton.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeading($value) {
+    $this->set('heading', $value);
+    return $this;
+  }
+
+  /**
+   * Set the set_active_class property on the dropbutton.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSetActiveClass($value) {
+    $this->set('set_active_class', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/EmailBuilder.php b/core/lib/Drupal/Core/Render/Builder/EmailBuilder.php
new file mode 100644
index 0000000..8152b51
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/EmailBuilder.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\EmailBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'email' element.
+ */
+class EmailBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'email'];
+
+  /**
+   * Set the title property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the ajax property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the email.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FeedIconBuilder.php b/core/lib/Drupal/Core/Render/Builder/FeedIconBuilder.php
new file mode 100644
index 0000000..da9fdc2
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FeedIconBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FeedIconBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'feed_icon' element.
+ */
+class FeedIconBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'feed_icon'];
+
+  /**
+   * Set the url property on the feed_icon.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUrl($value) {
+    $this->set('url', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the feed_icon.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FieldgroupBuilder.php b/core/lib/Drupal/Core/Render/Builder/FieldgroupBuilder.php
new file mode 100644
index 0000000..85e6a0e
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FieldgroupBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FieldgroupBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'fieldgroup' element.
+ */
+class FieldgroupBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'fieldgroup'];
+
+  /**
+   * Set the attributes property on the fieldgroup.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the fieldgroup.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the group property on the fieldgroup.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setGroup($value) {
+    $this->set('group', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the fieldgroup.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the fieldgroup.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FieldsetBuilder.php b/core/lib/Drupal/Core/Render/Builder/FieldsetBuilder.php
new file mode 100644
index 0000000..64a95cb
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FieldsetBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FieldsetBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'fieldset' element.
+ */
+class FieldsetBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'fieldset'];
+
+  /**
+   * Set the attributes property on the fieldset.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the fieldset.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the group property on the fieldset.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setGroup($value) {
+    $this->set('group', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the fieldset.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the fieldset.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FileBuilder.php b/core/lib/Drupal/Core/Render/Builder/FileBuilder.php
new file mode 100644
index 0000000..839fa39
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FileBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FileBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'file' element.
+ */
+class FileBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'file'];
+
+  /**
+   * Set the attached property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttached($value) {
+    $this->set('attached', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the file.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FormBuilder.php b/core/lib/Drupal/Core/Render/Builder/FormBuilder.php
new file mode 100644
index 0000000..a50abfb
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FormBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FormBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'form' element.
+ */
+class FormBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'form'];
+
+  /**
+   * Set the action property on the form.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAction($value) {
+    $this->set('action', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the form.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the method property on the form.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMethod($value) {
+    $this->set('method', $value);
+    return $this;
+  }
+
+  /**
+   * Set the submit property on the form.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSubmit($value) {
+    $this->set('submit', $value);
+    return $this;
+  }
+
+  /**
+   * Set the validate property on the form.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValidate($value) {
+    $this->set('validate', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBase.php b/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBase.php
new file mode 100644
index 0000000..96c940c
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBase.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FormElementBuilderBase.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Define a base that all theme builders extend.
+ */
+abstract class FormElementBuilderBase extends BuilderBase implements FormElementBuilderBaseInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setElementValidate($value) {
+    $this->set('element_validate', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setValueCallack($value) {
+    $this->set('value_callback', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setTree($value) {
+    $this->set('tree', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setProcess($value) {
+    $this->set('process', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setStates($value) {
+    $this->set('states', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setPattern($value) {
+    $this->set('pattern', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setArrayParents($value) {
+    $this->set('array_parents', $value);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setParents($value) {
+    $this->set('parents', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBaseInterface.php b/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBaseInterface.php
new file mode 100644
index 0000000..b67c3bd
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/FormElementBuilderBaseInterface.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\FormElementBuilderBaseInterface.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Defines methods found on the base builder class.
+ */
+interface FormElementBuilderBaseInterface extends BuilderBaseInterface {
+
+  /**
+   * Set the 'element_validate' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setElementValidate($value);
+
+  /**
+   * Set the 'value_callback' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setValueCallack($value);
+
+  /**
+   * Set the 'tree' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setTree($value);
+
+  /**
+   * Set the 'process' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setProcess($value);
+
+  /**
+   * Set the 'states' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setStates($value);
+
+  /**
+   * Set the 'pattern' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setPattern($value);
+
+  /**
+   * Set the 'array_parents' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setArrayParents($value);
+
+  /**
+   * Set the 'parents' property.
+   *
+   * @param array $value
+   *   The value to assign the property.
+   *
+   * @return $this
+   */
+  public function setParents($value);
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/HiddenBuilder.php b/core/lib/Drupal/Core/Render/Builder/HiddenBuilder.php
new file mode 100644
index 0000000..2f2a523
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/HiddenBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\HiddenBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'hidden' element.
+ */
+class HiddenBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'hidden'];
+
+  /**
+   * Set the default_value property on the hidden.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the hidden.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/HtmlBuilder.php b/core/lib/Drupal/Core/Render/Builder/HtmlBuilder.php
new file mode 100644
index 0000000..62cac24
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/HtmlBuilder.php
@@ -0,0 +1,186 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\HtmlBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'html' element.
+ */
+class HtmlBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'html'];
+
+  /**
+   * Set the logged_in property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLoggedIn($value) {
+    $this->set('logged_in', $value);
+    return $this;
+  }
+
+  /**
+   * Set the root_path property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRootPath($value) {
+    $this->set('root_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the node_type property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setNodeType($value) {
+    $this->set('node_type', $value);
+    return $this;
+  }
+
+  /**
+   * Set the css property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setCss($value) {
+    $this->set('css', $value);
+    return $this;
+  }
+
+  /**
+   * Set the head property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHead($value) {
+    $this->set('head', $value);
+    return $this;
+  }
+
+  /**
+   * Set the head_title property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeadTitle($value) {
+    $this->set('head_title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the page_top property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPageTop($value) {
+    $this->set('page_top', $value);
+    return $this;
+  }
+
+  /**
+   * Set the page property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPage($value) {
+    $this->set('page', $value);
+    return $this;
+  }
+
+  /**
+   * Set the page_bottom property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPageBottom($value) {
+    $this->set('page_bottom', $value);
+    return $this;
+  }
+
+  /**
+   * Set the styles property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStyles($value) {
+    $this->set('styles', $value);
+    return $this;
+  }
+
+  /**
+   * Set the scripts property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setScripts($value) {
+    $this->set('scripts', $value);
+    return $this;
+  }
+
+  /**
+   * Set the db_offline property on the html.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDbOffline($value) {
+    $this->set('db_offline', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/HtmlTagBuilder.php b/core/lib/Drupal/Core/Render/Builder/HtmlTagBuilder.php
new file mode 100644
index 0000000..bc386e1
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/HtmlTagBuilder.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\HtmlTagBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'html_tag' element.
+ */
+class HtmlTagBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'html_tag'];
+
+  /**
+   * Set the tag property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTag($value) {
+    $this->set('tag', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value_prefix property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValuePrefix($value) {
+    $this->set('value_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value_suffix property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValueSuffix($value) {
+    $this->set('value_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the noscript property on the html_tag.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setNoscript($value) {
+    $this->set('noscript', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ImageBuilder.php b/core/lib/Drupal/Core/Render/Builder/ImageBuilder.php
new file mode 100644
index 0000000..699f157
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ImageBuilder.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ImageBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'image' element.
+ */
+class ImageBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'image'];
+
+  /**
+   * Set the uri property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUri($value) {
+    $this->set('uri', $value);
+    return $this;
+  }
+
+  /**
+   * Set the width property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setWidth($value) {
+    $this->set('width', $value);
+    return $this;
+  }
+
+  /**
+   * Set the height property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeight($value) {
+    $this->set('height', $value);
+    return $this;
+  }
+
+  /**
+   * Set the alt property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAlt($value) {
+    $this->set('alt', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the sizes property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSizes($value) {
+    $this->set('sizes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the srcset property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSrcset($value) {
+    $this->set('srcset', $value);
+    return $this;
+  }
+
+  /**
+   * Set the style_name property on the image.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStyleName($value) {
+    $this->set('style_name', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ImageButtonBuilder.php b/core/lib/Drupal/Core/Render/Builder/ImageButtonBuilder.php
new file mode 100644
index 0000000..070fc61
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ImageButtonBuilder.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ImageButtonBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'image_button' element.
+ */
+class ImageButtonBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'image_button'];
+
+  /**
+   * Set the ajax property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the button_type property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setButtonType($value) {
+    $this->set('button_type', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the executes_submit_callback property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setExecutesSubmitCallback($value) {
+    $this->set('executes_submit_callback', $value);
+    return $this;
+  }
+
+  /**
+   * Set the limit_validation_errors property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLimitValidationErrors($value) {
+    $this->set('limit_validation_errors', $value);
+    return $this;
+  }
+
+  /**
+   * Set the return_value property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setReturnValue($value) {
+    $this->set('return_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the src property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSrc($value) {
+    $this->set('src', $value);
+    return $this;
+  }
+
+  /**
+   * Set the submit property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSubmit($value) {
+    $this->set('submit', $value);
+    return $this;
+  }
+
+  /**
+   * Set the validate property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValidate($value) {
+    $this->set('validate', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the image_button.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ImageFormatterBuilder.php b/core/lib/Drupal/Core/Render/Builder/ImageFormatterBuilder.php
new file mode 100644
index 0000000..53dff18
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ImageFormatterBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ImageFormatterBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'image_formatter' element.
+ */
+class ImageFormatterBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'image_formatter'];
+
+  /**
+   * Set the item property on the image_formatter.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setItem($value) {
+    $this->set('item', $value);
+    return $this;
+  }
+
+  /**
+   * Set the item_attributes property on the image_formatter.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setItemAttributes($value) {
+    $this->set('item_attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the url property on the image_formatter.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUrl($value) {
+    $this->set('url', $value);
+    return $this;
+  }
+
+  /**
+   * Set the image_style property on the image_formatter.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setImageStyle($value) {
+    $this->set('image_style', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ImageStyleBuilder.php b/core/lib/Drupal/Core/Render/Builder/ImageStyleBuilder.php
new file mode 100644
index 0000000..05e4f43
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ImageStyleBuilder.php
@@ -0,0 +1,108 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ImageStyleBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'image_style' element.
+ */
+class ImageStyleBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'image_style'];
+
+  /**
+   * Set the style_name property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStyleName($value) {
+    $this->set('style_name', $value);
+    return $this;
+  }
+
+  /**
+   * Set the uri property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUri($value) {
+    $this->set('uri', $value);
+    return $this;
+  }
+
+  /**
+   * Set the width property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setWidth($value) {
+    $this->set('width', $value);
+    return $this;
+  }
+
+  /**
+   * Set the height property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeight($value) {
+    $this->set('height', $value);
+    return $this;
+  }
+
+  /**
+   * Set the alt property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAlt($value) {
+    $this->set('alt', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the image_style.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/IndentationBuilder.php b/core/lib/Drupal/Core/Render/Builder/IndentationBuilder.php
new file mode 100644
index 0000000..d4f2271
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/IndentationBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\IndentationBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'indentation' element.
+ */
+class IndentationBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'indentation'];
+
+  /**
+   * Set the size property on the indentation.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/InlineTemplateBuilder.php b/core/lib/Drupal/Core/Render/Builder/InlineTemplateBuilder.php
new file mode 100644
index 0000000..0656501
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/InlineTemplateBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\InlineTemplateBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'inline_template' element.
+ */
+class InlineTemplateBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'inline_template'];
+
+  /**
+   * Set the template property on the inline_template.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTemplate($value) {
+    $this->set('template', $value);
+    return $this;
+  }
+
+  /**
+   * Set the context property on the inline_template.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setContext($value) {
+    $this->set('context', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ItemBuilder.php b/core/lib/Drupal/Core/Render/Builder/ItemBuilder.php
new file mode 100644
index 0000000..a60f8ed
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ItemBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ItemBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'item' element.
+ */
+class ItemBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'item'];
+
+  /**
+   * Set the description property on the item.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the markup property on the item.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMarkup($value) {
+    $this->set('markup', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the item.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the item.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the item.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ItemListBuilder.php b/core/lib/Drupal/Core/Render/Builder/ItemListBuilder.php
new file mode 100644
index 0000000..d195078
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ItemListBuilder.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ItemListBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'item_list' element.
+ */
+class ItemListBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'item_list'];
+
+  /**
+   * Set the items property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setItems($value) {
+    $this->set('items', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the list_type property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setListType($value) {
+    $this->set('list_type', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmpty($value) {
+    $this->set('empty', $value);
+    return $this;
+  }
+
+  /**
+   * Set the context property on the item_list.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setContext($value) {
+    $this->set('context', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/LabelBuilder.php b/core/lib/Drupal/Core/Render/Builder/LabelBuilder.php
new file mode 100644
index 0000000..61e1249
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/LabelBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\LabelBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'label' element.
+ */
+class LabelBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'label'];
+
+  /**
+   * Set the title property on the label.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the label.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the label.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the label.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/LanguageSelectBuilder.php b/core/lib/Drupal/Core/Render/Builder/LanguageSelectBuilder.php
new file mode 100644
index 0000000..84e5bac
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/LanguageSelectBuilder.php
@@ -0,0 +1,225 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\LanguageSelectBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'language_select' element.
+ */
+class LanguageSelectBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'language_select'];
+
+  /**
+   * Set the ajax property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty_option property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmptyOption($value) {
+    $this->set('empty_option', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty_value property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmptyValue($value) {
+    $this->set('empty_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the languages property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLanguages($value) {
+    $this->set('languages', $value);
+    return $this;
+  }
+
+  /**
+   * Set the multiple property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMultiple($value) {
+    $this->set('multiple', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the language_select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/LinkBuilder.php b/core/lib/Drupal/Core/Render/Builder/LinkBuilder.php
new file mode 100644
index 0000000..a5b0d66
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/LinkBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\LinkBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'link' element.
+ */
+class LinkBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'link'];
+
+  /**
+   * Set the title property on the link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the url property on the link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUrl($value) {
+    $this->set('url', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/LinksBuilder.php b/core/lib/Drupal/Core/Render/Builder/LinksBuilder.php
new file mode 100644
index 0000000..e6bd450
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/LinksBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\LinksBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'links' element.
+ */
+class LinksBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'links'];
+
+  /**
+   * Set the links property on the links.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLinks($value) {
+    $this->set('links', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the links.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the heading property on the links.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeading($value) {
+    $this->set('heading', $value);
+    return $this;
+  }
+
+  /**
+   * Set the set_active_class property on the links.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSetActiveClass($value) {
+    $this->set('set_active_class', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/MachineNameBuilder.php b/core/lib/Drupal/Core/Render/Builder/MachineNameBuilder.php
new file mode 100644
index 0000000..2c70c65
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/MachineNameBuilder.php
@@ -0,0 +1,251 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\MachineNameBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'machine_name' element.
+ */
+class MachineNameBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'machine_name'];
+
+  /**
+   * Set the ajax property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the autocomplete_path property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAutocompletePath($value) {
+    $this->set('autocomplete_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+  /**
+   * Set the exists property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setExists($value) {
+    $this->set('exists', $value);
+    return $this;
+  }
+
+  /**
+   * Set the source property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSource($value) {
+    $this->set('source', $value);
+    return $this;
+  }
+
+  /**
+   * Set the label property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLabel($value) {
+    $this->set('label', $value);
+    return $this;
+  }
+
+  /**
+   * Set the replace_pattern property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setReplacePattern($value) {
+    $this->set('replace_pattern', $value);
+    return $this;
+  }
+
+  /**
+   * Set the replace property on the machine_name.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setReplace($value) {
+    $this->set('replace', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/MarkBuilder.php b/core/lib/Drupal/Core/Render/Builder/MarkBuilder.php
new file mode 100644
index 0000000..3dcb677
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/MarkBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\MarkBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'mark' element.
+ */
+class MarkBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'mark'];
+
+  /**
+   * Set the status property on the mark.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStatus($value) {
+    $this->set('status', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/MenuBuilder.php b/core/lib/Drupal/Core/Render/Builder/MenuBuilder.php
new file mode 100644
index 0000000..19801bd
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/MenuBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\MenuBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'menu' element.
+ */
+class MenuBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'menu'];
+
+  /**
+   * Set the items property on the menu.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setItems($value) {
+    $this->set('items', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the menu.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/MoreLinkBuilder.php b/core/lib/Drupal/Core/Render/Builder/MoreLinkBuilder.php
new file mode 100644
index 0000000..9778382
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/MoreLinkBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\MoreLinkBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'more_link' element.
+ */
+class MoreLinkBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'more_link'];
+
+  /**
+   * Set the title property on the more_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the url property on the more_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setUrl($value) {
+    $this->set('url', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the more_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/NumberBuilder.php b/core/lib/Drupal/Core/Render/Builder/NumberBuilder.php
new file mode 100644
index 0000000..a4fcdd2
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/NumberBuilder.php
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\NumberBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'number' element.
+ */
+class NumberBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'number'];
+
+  /**
+   * Set the title property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the min property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMin($value) {
+    $this->set('min', $value);
+    return $this;
+  }
+
+  /**
+   * Set the max property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMax($value) {
+    $this->set('max', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the step property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStep($value) {
+    $this->set('step', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the number.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/OperationsBuilder.php b/core/lib/Drupal/Core/Render/Builder/OperationsBuilder.php
new file mode 100644
index 0000000..ef5b4e1
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/OperationsBuilder.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\OperationsBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'operations' element.
+ */
+class OperationsBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'operations'];
+
+  /**
+   * Set the links property on the operations.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLinks($value) {
+    $this->set('links', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the operations.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the heading property on the operations.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeading($value) {
+    $this->set('heading', $value);
+    return $this;
+  }
+
+  /**
+   * Set the set_active_class property on the operations.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSetActiveClass($value) {
+    $this->set('set_active_class', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/PageBuilder.php b/core/lib/Drupal/Core/Render/Builder/PageBuilder.php
new file mode 100644
index 0000000..9d360d3
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/PageBuilder.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\PageBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'page' element.
+ */
+class PageBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'page'];
+
+  /**
+   * Set the page property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPage($value) {
+    $this->set('page', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_prefix property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitlePrefix($value) {
+    $this->set('title_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_suffix property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleSuffix($value) {
+    $this->set('title_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the front_page property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFrontPage($value) {
+    $this->set('front_page', $value);
+    return $this;
+  }
+
+  /**
+   * Set the logo property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLogo($value) {
+    $this->set('logo', $value);
+    return $this;
+  }
+
+  /**
+   * Set the site_name property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSiteName($value) {
+    $this->set('site_name', $value);
+    return $this;
+  }
+
+  /**
+   * Set the site_slogan property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSiteSlogan($value) {
+    $this->set('site_slogan', $value);
+    return $this;
+  }
+
+  /**
+   * Set the action_links property on the page.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setActionLinks($value) {
+    $this->set('action_links', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/PagerBuilder.php b/core/lib/Drupal/Core/Render/Builder/PagerBuilder.php
new file mode 100644
index 0000000..62b1b16
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/PagerBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\PagerBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'pager' element.
+ */
+class PagerBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'pager'];
+
+  /**
+   * Set the items property on the pager.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setItems($value) {
+    $this->set('items', $value);
+    return $this;
+  }
+
+  /**
+   * Set the current property on the pager.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setCurrent($value) {
+    $this->set('current', $value);
+    return $this;
+  }
+
+  /**
+   * Set the ellipses property on the pager.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEllipses($value) {
+    $this->set('ellipses', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/PasswordBuilder.php b/core/lib/Drupal/Core/Render/Builder/PasswordBuilder.php
new file mode 100644
index 0000000..74f17de
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/PasswordBuilder.php
@@ -0,0 +1,173 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\PasswordBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'password' element.
+ */
+class PasswordBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'password'];
+
+  /**
+   * Set the ajax property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the password.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/PasswordConfirmBuilder.php b/core/lib/Drupal/Core/Render/Builder/PasswordConfirmBuilder.php
new file mode 100644
index 0000000..b005ed5
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/PasswordConfirmBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\PasswordConfirmBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'password_confirm' element.
+ */
+class PasswordConfirmBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'password_confirm'];
+
+  /**
+   * Set the description property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the password_confirm.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/PathBuilder.php b/core/lib/Drupal/Core/Render/Builder/PathBuilder.php
new file mode 100644
index 0000000..45a6983
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/PathBuilder.php
@@ -0,0 +1,238 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\PathBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'path' element.
+ */
+class PathBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'path'];
+
+  /**
+   * Set the validate_path property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValidatePath($value) {
+    $this->set('validate_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the convert_path property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setConvertPath($value) {
+    $this->set('convert_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the ajax property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the autocomplete_path property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAutocompletePath($value) {
+    $this->set('autocomplete_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the text_format property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTextFormat($value) {
+    $this->set('text_format', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the path.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ProgressBarBuilder.php b/core/lib/Drupal/Core/Render/Builder/ProgressBarBuilder.php
new file mode 100644
index 0000000..0c6e755
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ProgressBarBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ProgressBarBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'progress_bar' element.
+ */
+class ProgressBarBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'progress_bar'];
+
+  /**
+   * Set the label property on the progress_bar.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLabel($value) {
+    $this->set('label', $value);
+    return $this;
+  }
+
+  /**
+   * Set the percent property on the progress_bar.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPercent($value) {
+    $this->set('percent', $value);
+    return $this;
+  }
+
+  /**
+   * Set the message property on the progress_bar.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMessage($value) {
+    $this->set('message', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/RadioBuilder.php b/core/lib/Drupal/Core/Render/Builder/RadioBuilder.php
new file mode 100644
index 0000000..d80a02a
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/RadioBuilder.php
@@ -0,0 +1,160 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\RadioBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'radio' element.
+ */
+class RadioBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'radio'];
+
+  /**
+   * Set the ajax property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the return_value property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setReturnValue($value) {
+    $this->set('return_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the radio.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/RadiosBuilder.php b/core/lib/Drupal/Core/Render/Builder/RadiosBuilder.php
new file mode 100644
index 0000000..ea3f509
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/RadiosBuilder.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\RadiosBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'radios' element.
+ */
+class RadiosBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'radios'];
+
+  /**
+   * Set the ajax property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the radios.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/RangeBuilder.php b/core/lib/Drupal/Core/Render/Builder/RangeBuilder.php
new file mode 100644
index 0000000..7d124ba
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/RangeBuilder.php
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\RangeBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'range' element.
+ */
+class RangeBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'range'];
+
+  /**
+   * Set the title property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the min property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMin($value) {
+    $this->set('min', $value);
+    return $this;
+  }
+
+  /**
+   * Set the max property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMax($value) {
+    $this->set('max', $value);
+    return $this;
+  }
+
+  /**
+   * Set the step property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStep($value) {
+    $this->set('step', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the range.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/SearchBuilder.php b/core/lib/Drupal/Core/Render/Builder/SearchBuilder.php
new file mode 100644
index 0000000..47c4a0d
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/SearchBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\SearchBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'search' element.
+ */
+class SearchBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'search'];
+
+  /**
+   * Set the title property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the search.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/SelectBuilder.php b/core/lib/Drupal/Core/Render/Builder/SelectBuilder.php
new file mode 100644
index 0000000..58dc3a1
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/SelectBuilder.php
@@ -0,0 +1,212 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\SelectBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'select' element.
+ */
+class SelectBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'select'];
+
+  /**
+   * Set the ajax property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty_option property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmptyOption($value) {
+    $this->set('empty_option', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty_value property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmptyValue($value) {
+    $this->set('empty_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the multiple property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMultiple($value) {
+    $this->set('multiple', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the select.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/StatusMessagesBuilder.php b/core/lib/Drupal/Core/Render/Builder/StatusMessagesBuilder.php
new file mode 100644
index 0000000..a9ad7b7
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/StatusMessagesBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\StatusMessagesBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'status_messages' element.
+ */
+class StatusMessagesBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'status_messages'];
+
+  /**
+   * Set the status_headings property on the status_messages.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setStatusHeadings($value) {
+    $this->set('status_headings', $value);
+    return $this;
+  }
+
+  /**
+   * Set the message_list property on the status_messages.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMessageList($value) {
+    $this->set('message_list', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/SubmitBuilder.php b/core/lib/Drupal/Core/Render/Builder/SubmitBuilder.php
new file mode 100644
index 0000000..45d9f55
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/SubmitBuilder.php
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\SubmitBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'submit' element.
+ */
+class SubmitBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'submit'];
+
+  /**
+   * Set the ajax property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the button_type property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setButtonType($value) {
+    $this->set('button_type', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the executes_submit_callback property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setExecutesSubmitCallback($value) {
+    $this->set('executes_submit_callback', $value);
+    return $this;
+  }
+
+  /**
+   * Set the limit_validation_errors property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLimitValidationErrors($value) {
+    $this->set('limit_validation_errors', $value);
+    return $this;
+  }
+
+  /**
+   * Set the name property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setName($value) {
+    $this->set('name', $value);
+    return $this;
+  }
+
+  /**
+   * Set the submit property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSubmit($value) {
+    $this->set('submit', $value);
+    return $this;
+  }
+
+  /**
+   * Set the validate property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValidate($value) {
+    $this->set('validate', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the submit.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/SystemCompactLinkBuilder.php b/core/lib/Drupal/Core/Render/Builder/SystemCompactLinkBuilder.php
new file mode 100644
index 0000000..10c8847
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/SystemCompactLinkBuilder.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\SystemCompactLinkBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'system_compact_link' element.
+ */
+class SystemCompactLinkBuilder extends BuilderBase {
+
+  protected $renderable = ['#type' => 'system_compact_link'];
+
+  /**
+   * Set the title property on the system_compact_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the route_name property on the system_compact_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRouteName($value) {
+    $this->set('route_name', $value);
+    return $this;
+  }
+
+  /**
+   * Set the route_parameters property on the system_compact_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRouteParameters($value) {
+    $this->set('route_parameters', $value);
+    return $this;
+  }
+
+  /**
+   * Set the href property on the system_compact_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHref($value) {
+    $this->set('href', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the system_compact_link.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TableBuilder.php b/core/lib/Drupal/Core/Render/Builder/TableBuilder.php
new file mode 100644
index 0000000..80fe9e5
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TableBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TableBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'table' element.
+ */
+class TableBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'table'];
+
+  /**
+   * Set the header property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeader($value) {
+    $this->set('header', $value);
+    return $this;
+  }
+
+  /**
+   * Set the rows property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRows($value) {
+    $this->set('rows', $value);
+    return $this;
+  }
+
+  /**
+   * Set the footer property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFooter($value) {
+    $this->set('footer', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the caption property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setCaption($value) {
+    $this->set('caption', $value);
+    return $this;
+  }
+
+  /**
+   * Set the colgroups property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setColgroups($value) {
+    $this->set('colgroups', $value);
+    return $this;
+  }
+
+  /**
+   * Set the sticky property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSticky($value) {
+    $this->set('sticky', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty property on the table.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmpty($value) {
+    $this->set('empty', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TableselectBuilder.php b/core/lib/Drupal/Core/Render/Builder/TableselectBuilder.php
new file mode 100644
index 0000000..9096dc7
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TableselectBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TableselectBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'tableselect' element.
+ */
+class TableselectBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'tableselect'];
+
+  /**
+   * Set the ajax property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the empty property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setEmpty($value) {
+    $this->set('empty', $value);
+    return $this;
+  }
+
+  /**
+   * Set the header property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setHeader($value) {
+    $this->set('header', $value);
+    return $this;
+  }
+
+  /**
+   * Set the js_select property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setJsSelect($value) {
+    $this->set('js_select', $value);
+    return $this;
+  }
+
+  /**
+   * Set the multiple property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMultiple($value) {
+    $this->set('multiple', $value);
+    return $this;
+  }
+
+  /**
+   * Set the options property on the tableselect.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setOptions($value) {
+    $this->set('options', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TelBuilder.php b/core/lib/Drupal/Core/Render/Builder/TelBuilder.php
new file mode 100644
index 0000000..9d7f4be
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TelBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TelBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'tel' element.
+ */
+class TelBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'tel'];
+
+  /**
+   * Set the title property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the tel.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TextareaBuilder.php b/core/lib/Drupal/Core/Render/Builder/TextareaBuilder.php
new file mode 100644
index 0000000..1d2894d
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TextareaBuilder.php
@@ -0,0 +1,199 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TextareaBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'textarea' element.
+ */
+class TextareaBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'textarea'];
+
+  /**
+   * Set the ajax property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the cols property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setCols($value) {
+    $this->set('cols', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the resizable property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setResizable($value) {
+    $this->set('resizable', $value);
+    return $this;
+  }
+
+  /**
+   * Set the rows property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRows($value) {
+    $this->set('rows', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the textarea.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TextfieldBuilder.php b/core/lib/Drupal/Core/Render/Builder/TextfieldBuilder.php
new file mode 100644
index 0000000..20b31cc
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TextfieldBuilder.php
@@ -0,0 +1,212 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TextfieldBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'textfield' element.
+ */
+class TextfieldBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'textfield'];
+
+  /**
+   * Set the ajax property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAjax($value) {
+    $this->set('ajax', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the autocomplete_path property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAutocompletePath($value) {
+    $this->set('autocomplete_path', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_prefix property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldPrefix($value) {
+    $this->set('field_prefix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the field_suffix property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setFieldSuffix($value) {
+    $this->set('field_suffix', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the text_format property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTextFormat($value) {
+    $this->set('text_format', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the textfield.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TimeBuilder.php b/core/lib/Drupal/Core/Render/Builder/TimeBuilder.php
new file mode 100644
index 0000000..4c7958c
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TimeBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TimeBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'time' element.
+ */
+class TimeBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'time'];
+
+  /**
+   * Set the timestamp property on the time.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTimestamp($value) {
+    $this->set('timestamp', $value);
+    return $this;
+  }
+
+  /**
+   * Set the text property on the time.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setText($value) {
+    $this->set('text', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the time.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/TokenBuilder.php b/core/lib/Drupal/Core/Render/Builder/TokenBuilder.php
new file mode 100644
index 0000000..38ba009
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/TokenBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\TokenBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'token' element.
+ */
+class TokenBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'token'];
+
+  /**
+   * Set the default_value property on the token.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the token.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/UrlBuilder.php b/core/lib/Drupal/Core/Render/Builder/UrlBuilder.php
new file mode 100644
index 0000000..381b0b6
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/UrlBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\UrlBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'url' element.
+ */
+class UrlBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'url'];
+
+  /**
+   * Set the title property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the value property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the size property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setSize($value) {
+    $this->set('size', $value);
+    return $this;
+  }
+
+  /**
+   * Set the maxlength property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setMaxlength($value) {
+    $this->set('maxlength', $value);
+    return $this;
+  }
+
+  /**
+   * Set the placeholder property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setPlaceholder($value) {
+    $this->set('placeholder', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the url.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/UsernameBuilder.php b/core/lib/Drupal/Core/Render/Builder/UsernameBuilder.php
new file mode 100644
index 0000000..ef9ea69
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/UsernameBuilder.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\UsernameBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'username' element.
+ */
+class UsernameBuilder extends BuilderBase {
+
+  protected $renderable = ['#theme' => 'username'];
+
+  /**
+   * Set the account property on the username.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAccount($value) {
+    $this->set('account', $value);
+    return $this;
+  }
+
+  /**
+   * Set the attributes property on the username.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the link_options property on the username.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setLinkOptions($value) {
+    $this->set('link_options', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/ValueBuilder.php b/core/lib/Drupal/Core/Render/Builder/ValueBuilder.php
new file mode 100644
index 0000000..7a09b62
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/ValueBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\ValueBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'value' element.
+ */
+class ValueBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'value'];
+
+  /**
+   * Set the value property on the value.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setValue($value) {
+    $this->set('value', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/VerticalTabsBuilder.php b/core/lib/Drupal/Core/Render/Builder/VerticalTabsBuilder.php
new file mode 100644
index 0000000..ff11ba0
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/VerticalTabsBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\VerticalTabsBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'vertical_tabs' element.
+ */
+class VerticalTabsBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'vertical_tabs'];
+
+  /**
+   * Set the default_tab property on the vertical_tabs.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultTab($value) {
+    $this->set('default_tab', $value);
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Render/Builder/WeightBuilder.php b/core/lib/Drupal/Core/Render/Builder/WeightBuilder.php
new file mode 100644
index 0000000..de2e925
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Builder/WeightBuilder.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Render\Builder\WeightBuilder.
+ */
+
+namespace Drupal\Core\Render\Builder;
+
+/**
+ * Builder class for the 'weight' element.
+ */
+class WeightBuilder extends FormElementBuilderBase {
+
+  protected $renderable = ['#type' => 'weight'];
+
+  /**
+   * Set the attributes property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setAttributes($value) {
+    $this->set('attributes', $value);
+    return $this;
+  }
+
+  /**
+   * Set the default_value property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDefaultValue($value) {
+    $this->set('default_value', $value);
+    return $this;
+  }
+
+  /**
+   * Set the delta property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDelta($value) {
+    $this->set('delta', $value);
+    return $this;
+  }
+
+  /**
+   * Set the description property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDescription($value) {
+    $this->set('description', $value);
+    return $this;
+  }
+
+  /**
+   * Set the disabled property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setDisabled($value) {
+    $this->set('disabled', $value);
+    return $this;
+  }
+
+  /**
+   * Set the required property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setRequired($value) {
+    $this->set('required', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitle($value) {
+    $this->set('title', $value);
+    return $this;
+  }
+
+  /**
+   * Set the title_display property on the weight.
+   *
+   * @param mixed $value
+   *   The value to set.
+   *
+   * @return $this
+   */
+  public function setTitleDisplay($value) {
+    $this->set('title_display', $value);
+    return $this;
+  }
+
+}
