function RevisionRange(engine, specifiers) {
  this.engine = engine;
  this.tipsToInclude = [];
  this.tipsToExclude = [];
  this.includedRefs = {};
  this.excludedRefs = {};
  this.revisions = [];

  this.processSpecifiers(specifiers);
}
Here is the deal -- there are essentially three types of branches
we deal with:
1) Normal local branches (that may track a remote branch)
2) Local remote branches (o/main) that track an origin branch
3) Origin branches (main) that exist in origin

With that in mind, we change our branch model to support the following