protected function setAlignment( $value ) {
		if ( $value !== $this->align ) {
			// Default to 'left'
			if ( !in_array( $value, [ 'left', 'right', 'top', 'inline' ] ) ) {
				$value = 'left';
			}
			// Validate
			if ( $value === 'inline' && !$this->isFieldInline() ) {
				$value = 'top';
			}
			// Reorder elements
			$this->body->clearContent();

			if ( $this->helpInline ) {
				if ( $value === 'top' ) {
					$this->header->appendContent( $this->label );
					$this->body->appendContent( $this->header, $this->field, $this->help );
				} elseif ( $value === 'inline' ) {
					$this->header->appendContent( $this->label, $this->help );
					$this->body->appendContent( $this->field, $this->header );
				} else {
					$this->header->appendContent( $this->label, $this->help );
					$this->body->appendContent( $this->header, $this->field );
				}
			} else {
				if ( $value === 'top' ) {
					$this->header->appendContent( $this->help, $this->label );
					$this->body->appendContent( $this->header, $this->field );
				} elseif ( $value === 'inline' ) {
					$this->header->appendContent( $this->help, $this->label );
					$this->body->appendContent( $this->field, $this->header );
				} else {
					$this->header->appendContent( $this->label );
					$this->body->appendContent( $this->header, $this->help, $this->field );
				}
			}
			// Set classes. The following classes can be used here:
			// * oo-ui-fieldLayout-align-left
			// * oo-ui-fieldLayout-align-right
			// * oo-ui-fieldLayout-align-top
			// * oo-ui-fieldLayout-align-inline
			if ( $this->align ) {
				$this->removeClasses( [ 'oo-ui-fieldLayout-align-' . $this->align ] );
			}
			$this->addClasses( [ 'oo-ui-fieldLayout-align-' . $value ] );
			$this->align = $value;
		}

		return $this;
	}