@Override
  public Void onOptional(DOptionalPattern p) {
    optional++;
    try {
      return super.onOptional(p);
    }
    finally {
      optional--;
    }
  }
@Override
  public Void onOptional(DOptionalPattern p)