I mislike doing it this way. There are constructors you didn't modify which will ignore this information. We already have problems because of things like this. Is there a reason you couldn't do something like:
```
private Boolean freshVariable;
public boolean isFreshVariable() {
    if (freshVariable == null) {
        freshVariable = name.startsWith("?");
    }
    return freshVariable;
}
```

?