protected function get_meta() {
		$method = 'meta';

		if ( ! method_exists( $this, $method ) ) {
			return [];
		}

		$child_meta = call_user_func( [$this, $method] );
		$child_meta = is_array( $child_meta ) ? $child_meta : [];

		$parent_class  = get_parent_class( $this );
		$parent_exists = method_exists( $parent_class, $method );
		$parent_meta   = [];

		while ( $parent_exists ) {
			$rc = new ReflectionClass( $parent_class );

			// Bail if not instantiable.
			if ( ! $rc->isInstantiable() ) {
				break;
			}

			$parent        = $rc->newInstance();
			$output        = call_user_func( [$parent, $method] );
			$output        = is_array( $output ) ? $output : [];
			$parent_meta   = array_merge( $parent_meta, $output );
			$parent_class  = get_parent_class( $parent_class );
			$parent_exists = method_exists( $parent_class, $method );
		}

		return array_merge( $parent_meta, $child_meta );
	}