protected function get_components() {
		$components = ( new \ReflectionClass( $this ) )->getProperties();
		$components = array_map(
		/**
		 * @param \ReflectionProperty $property
		 *
		 * @return string
		 */
			function ( $property ) {
				return $property->name;
			}, $components );
		$components = array_filter( $components, [ $this, 'is_component' ] );
		$components = array_map(
		/**
		 * @param \ReflectionProperty $component
		 *
		 * @return Component
		 */
			function ( $component ) {
				$getter = "get_{$component}";

				return $this->$getter();
			}, $components );

		return $components;
	}