public function save() {
		/**
		 * Fires saving action.
		 *
		 * @param static $wp_object Current object instance.
		 */
		do_action( $this->prefix( 'saving' ), $this );

		if ( $this->recently_created ) {
			$this->recently_created = false;
		}

		// Allow sub-class overwrite before_save method, here we can
		// validate the attribute data before save or doing something else.
		$this->before_save();

		// If the object already exists we can update changes.
		// Otherwise, we'll just insert them.
		if ( $this->exists() ) {
			$saved = $this->is_dirty() ? $this->update_object() : true;
		} else {
			$saved = $this->insert_object();
		}

		if ( $saved ) {
			$this->finish_save();

			/**
			 * Fires saved action.
			 *
			 * @param static $wp_object Current object instance.
			 */
			do_action( $this->prefix( 'saved' ), $this );

			$this->sync_original();
		}

		return $saved;
	}