class BDDInteger {

  public Optional<Long> getValueSatisfying(BDD bdd) {
    if (bdd.isZero()) {
      return Optional.empty();
    }
    if (_hasVariablesOnly) {
      return Optional.of(satAssignmentToLong(bdd.minAssignmentBits()));
    }
    return Optional.of(satAssignmentToLong(bdd.satOne()));
  }

  private  BDDInteger(BDDFactory factory, int length);
  public  BDDInteger(BDDInteger other);

}