public function migrateFrom($otherObject)
    {
        $otherObjectClass = get_class($otherObject);

        // same object no migrations needed
        if ($otherObjectClass === $this->className) {
            return $otherObject;
        }

        $versionPath = new VersionPathSearch($this->reader);
        $migrations = $versionPath->find($otherObjectClass, $this->className);

        if (count($migrations) === 0) {
            throw new VersionPathNotFoundException($otherObjectClass, $this->className);
        }

        foreach ($migrations as $migration) {
            $otherObject = $migration->action->run($otherObject, $this->options);
        }

        return $otherObject;
    }