code: public function addPsr4($prefix, $paths, $prepend = false)
      {
          if (!$prefix) {
              // Register directories for the root namespace.
              if ($prepend) {
                  $this->fallbackDirsPsr4 = array_merge(
                      (array) $paths,
                      $this->fallbackDirsPsr4
                  );
              } else {
                  $this->fallbackDirsPsr4 = array_merge(
                      $this->fallbackDirsPsr4,
                      (array) $paths
                  );
              }
          } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
              // Register directories for a new namespace.
              $length = strlen($prefix);
              if ('\\' !== $prefix[$length - 1]) {
                  throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
              }
              $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
              $this->prefixDirsPsr4[$prefix] = (array) $paths;
          } elseif ($prepend) {
              // Prepend directories for an already registered namespace.
              $this->prefixDirsPsr4[$prefix] = array_merge(
                  (array) $paths,
                  $this->prefixDirsPsr4[$prefix]
              );
          } else {
              // Append directories for an already registered namespace.
              $this->prefixDirsPsr4[$prefix] = array_merge(
                  $this->prefixDirsPsr4[$prefix],
                  (array) $paths
              );
          }
      }
docs: Registers a set of PSR-4 directories for a given namespace, either
  appending or prepending to the ones previously set for this namespace.
  
  @param string       $prefix  The prefix/namespace, with trailing '\\'
  @param array|string $paths   The PSR-4 base directories
  @param bool         $prepend Whether to prepend the directories
  
  @throws \InvalidArgumentException