// properties they care about.
propertyOracle = new SubsetFilteringPropertyOracle(
RuleGenerateWith.getAccessedPropertyNames(generator.getClass()), originalPropertyOracle,
generatorClassName + "'s RunsLocal annotation may need to be updated.");
if (generator instanceof IncrementalGenerator) {
IncrementalGenerator incGenerator = (IncrementalGenerator) generator;
// check version id for any previously cached rebind result
if (cachedRebindResult != null) {
Long cachedVersionId = (Long) cachedRebindResult.getClientData(GENERATOR_VERSION_ID_KEY);
if (cachedVersionId != null && cachedVersionId != incGenerator.getVersionId()) {
// remove from context
if (logger.isLoggable(TreeLogger.TRACE)) {
logger.log(TreeLogger.TRACE, "Got version mismatch with cached generator result for "
+ typeName + ", invalidating cached result");
}
cachedRebindResult = null;
}
}
// run the generator
result = incGenerator.generateIncrementally(logger, this, typeName);
// add version id to the returned result
result.putClientData(GENERATOR_VERSION_ID_KEY, incGenerator.getVersionId());
} else {
// run a non-incremental generator
result = IncrementalGenerator.generateNonIncrementally(logger, generator, this, typeName);
}