code: package com.beijunyi.parallelgit.filesystem.io;
  
  import java.io.IOException;
  import javax.annotation.Nullable;
  
  public abstract class GfsChange {
  
    public void applyTo(DirectoryNode dir, String name) throws IOException {
      Node currentNode = dir.getChild(name);
      Node newNode = convertNode(currentNode, dir);
      if(newNode == null) {
        dir.removeChild(name);
      } else {
        dir.addChild(name, newNode, true);
      }
    }
  
    @Nullable
    protected abstract Node convertNode(@Nullable Node node, DirectoryNode parent);
  
  }
  