public function create(GClass $gClass, $overwrite = FALSE, File $file = NULL) {
    $file = $file ?: $this->mapper->getFile($gClass->getFQN());
    
    $file->getDirectory()->create();

    try {
      $this->elevator->elevateParent($gClass);
    } catch (ClassFileNotFoundException $e) {
      
    } catch (\ReflectionException $e) {
      
    }
    
    try {
      $this->elevator->elevateInterfaces($gClass);
    } catch (ClassFileNotFoundException $e) {
      
    } catch (\ReflectionException $e) {
      
    }

    
    $gClass->createAbstractMethodStubs();
    
    $this->writer->write($gClass, $file, $overwrite);
    
    return $file;
  }