anchor.diff:  // Check the target is a file or not
   bool _checkFile(String target) => (path.extension(target) != '') ? true : false;
   
  -Future<FileSystemEntity> copy(String source, String target, [bool recursive = false]) async {
  +/// Copy the source to target. Recursively.
  +///
  +/// Support:
  +///     File -> File
  +///     File -> Folder
  +///     Folder -> Folder
  +///
  +Future<FileSystemEntity> copy(String source, String target) async {
     FileSystemEntityType sourceType = await FileSystemEntity.type(source);
     if (sourceType == FileSystemEntityType.NOT_FOUND || sourceType == FileSystemEntityType.LINK) {
       return null;
  
positive.code: 
        Directory sourceRootDir = new Directory(source);
        String relPath;
        File sourceFile;
        Directory sourceDir;
        sourceRootDir.listSync().forEach((FileSystemEntity entity) {
          if (entity is File) {
            sourceFile = entity as File;
            relPath =  path.relative(sourceFile.path, from: sourceRootDir.path);
            sourceFile.copySync(path.join(targetRootDir.path, relPath));
          } else if (entity is Directory) {
            sourceDir = entity as Directory;
            relPath = path.relative(sourceDir.path, from: sourceRootDir.path);
            new Directory(path.join(targetRootDir.path, relPath)).createSync();
          }
        });
  
negative.code:   return null;
  }
  
  /// Copy the source to target. Recursively, synchronously.
  ///
  /// Support:
  ///     File -> File
  ///     File -> Folder
  ///     Folder -> Folder
  ///
  FileSystemEntity copySync(String source, String target) {
    FileSystemEntityType sourceType = FileSystemEntity.typeSync(source);
    if (sourceType == FileSystemEntityType.NOT_FOUND || sourceType == FileSystemEntityType.LINK) {
      return null;
  