original_string: public function fn($id, $callable = null, $needsContainer = false)
      {
          if ($callable === null) {
              $callable = $id;
          }
          if (!is_callable($callable)) {
              throw new \InvalidArgumentException("Not callable");
          }
          $this->set($id, array($callable, $needsContainer));
      }
code: public function fn($id, $callable = null, $needsContainer = false)
      {
          if ($callable === null) {
              $callable = $id;
          }
          if (!is_callable($callable)) {
              throw new \InvalidArgumentException("Not callable");
          }
          $this->set($id, array($callable, $needsContainer));
      }
code_tokens: public function fn ( $ id , $ callable = null , $ needsContainer = false ) { if ( $ callable === null ) { $ callable = $ id ; } if ( ! is_callable ( $ callable ) ) { throw new \ InvalidArgumentException ( "Not callable" ) ; } $ this -> set ( $ id , array ( $ callable , $ needsContainer ) ) ; }
docstring: Set a function at the specified path.
  
  @param array|string $id
  @param callable $callable
  @param bool $needsContainer
  @return void
  
  @throws \InvalidArgumentException
docstring_tokens: Set a function at the specified path .