protected function createContract(ReflectionClass $model, $fileName, $shortName, $namespace, array $methods)
    {
        $path = app_path($fileName);

        $stub = $this->compileStub('contract.stub', [
            'namespace'      => $namespace,
            'class'          => $shortName,
            'model.fullname' => $model->getName(),
            'model'          => $model->getShortName(),
        ]);

        $stub = $this->compileMethods($stub, $methods);

        $this->files->makeDirectory(dirname($path), 0755, true, true);

        $this->files->put($path, $stub);

        return $namespace . '\\' . $shortName;
    }