original_string: public function first() : ?Post
      {
          $params = array_merge($this->getParameters(), [
              'limit' => 1,
          ]);
  
          $posts = Timber::get_posts($params, $this->postClass);
  
          if (!is_array($posts)) {
              return null;
          }
  
          return collect($posts)->first();
      }
code: public function first() : ?Post
      {
          $params = array_merge($this->getParameters(), [
              'limit' => 1,
          ]);
  
          $posts = Timber::get_posts($params, $this->postClass);
  
          if (!is_array($posts)) {
              return null;
          }
  
          return collect($posts)->first();
      }
code_tokens: public function first ( ) : ? Post { $ params = array_merge ( $ this -> getParameters ( ) , [ 'limit' => 1 , ] ) ; $ posts = Timber :: get_posts ( $ params , $ this -> postClass ) ; if ( ! is_array ( $ posts ) ) { return null ; } return collect ( $ posts ) -> first ( ) ; }
docstring: Get the first Post that matches the current query. If no Post matches then return `null`.
  
  @return Rareloop\Lumberjack\Post|null
docstring_tokens: Get the first Post that matches the current query . If no Post matches then return null .