public function load()
    {
        $this->_checkAdapter();

        if (!class_exists($this->getClass())) {
            throw new InvalidArgumentException(
                "The loader class '{$this->getClass()}' is not defined."
            );
        }

        $reflexion = new ReflectionClass($this->getClass());

        /** @var LoaderInterface $loader */
        $args = [['adapter' => $this->_adapter]];
        $loader = $reflexion->newInstanceArgs($args);

        $className = '\Slick\Database\Schema\LoaderInterface';

        if (!($loader instanceof LoaderInterface)) {
            throw new InvalidArgumentException(
                "The loader class '{$this->getClass()}' does not " .
                "implement {$className}."
            );
        }
        return $loader->getSchema();
    }