public function fromClass($class, $dir = '')
 {
     $classInfo = new RecessReflectionClass($class);
     $this->docComment = $classInfo->getDocComment();
     $this->file = $classInfo->getFileName();
     $package = Library::getPackage($class);
     if ($dir != '') {
         if (strpos($dir, '/' . str_replace('.', '/', $package)) !== 0) {
             throw new RecessException('The class: ' . $class . ' has been imported incorectly with ' . $package . '.' . $class . '. The real location is: ' . $dir, get_defined_vars());
         }
     }
     if ($package != '') {
         $packageReflector = new RecessReflectorPackage();
         $packageReflector->name = $package;
         if ($packageReflector->exists()) {
             $this->setPackage($packageReflector);
         } else {
             $packageReflector->insert();
             $this->setPackage($packageReflector);
         }
     }
     $this->save();
     $parent = $classInfo->getParentClass();
     if ($parent != null) {
         $parentReflectorClass = new RecessReflectorClass();
         $parentReflectorClass->name = $parent->name;
         $exists = $parentReflectorClass->find()->first();
         if (!$exists) {
             $parentReflectorClass->fromClass($parent->name);
             $this->setParent($parentReflectorClass);
         } else {
             $this->setParent($exists);
         }
     }
 }