class DetermineNumberChangesFollowingVisitor implements ChangeSetVisitor {
  private final String id;
  private final String author;
  private final String filePath;
  private int changeSetPosition;
  private int totalChangeSets;

  public DetermineNumberChangesFollowingVisitor(String id, String author, String filePath) {
    this.id = id;
    this.author = author;
    this.filePath = filePath;
  }

  public int getNumChangeSetsFollowing() {
    return totalChangeSets - changeSetPosition;
  }
  @Override
  public Direction getDirection() {
    return Direction.FORWARD;
  }

  @Override
  public void visit(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Set<ChangeSetFilterResult> filterResults) throws LiquibaseException {<FILL_FUNCTION_BODY>}
}

    totalChangeSets++;
    if (changeSet.getId().equalsIgnoreCase(this.id) &&
            changeSet.getAuthor().equalsIgnoreCase(this.author) &&
            changeSet.getFilePath().equals(this.filePath)) {
      changeSetPosition = totalChangeSets;
    }
  
<no_super_class>