// ignore
}
}
}
boolean needsAllTypesIfRun = contentDependsOnTypes() && context.isGlobalCompile();
TypeOracle typeModelTypeOracle =
(com.google.gwt.dev.javac.typemodel.TypeOracle) context.getTypeOracle();
context.setPropertyOracle(dynamicPropertyOracle);
context.setCurrentGenerator(generatorClass);
do {
resultTypeNamesByProperties.clear();
Properties accessedProperties = new Properties();
List<BindingProperty> accessedPropertiesList =
new ArrayList<BindingProperty>(dynamicPropertyOracle.getAccessedProperties());
for (BindingProperty bindingProperty : accessedPropertiesList) {
accessedProperties.addBindingProperty(bindingProperty);
}
PropertyPermutations permutationsOfAccessedProperties =
new PropertyPermutations(accessedProperties, Sets.<String> newHashSet());
for (int permutationId = 0; permutationId < permutationsOfAccessedProperties.size();
permutationId++) {
String[] orderedPropertyValues =
permutationsOfAccessedProperties.getOrderedPropertyValues(permutationId);
BindingProperty[] orderedProperties =
permutationsOfAccessedProperties.getOrderedProperties();
dynamicPropertyOracle.reset();
for (int propertyIndex = 0; propertyIndex < orderedPropertyValues.length; propertyIndex++) {
dynamicPropertyOracle.prescribePropertyValue(orderedProperties[propertyIndex].getName(),
orderedPropertyValues[propertyIndex]);
}
if (!isApplicable(logger, context, typeName)) {
continue;
}
if (needsAllTypesIfRun) {
typeModelTypeOracle.ensureAllLoaded();
}
String resultTypeName;
try {
resultTypeName = getGenerator().generate(logger, context, typeName);
} catch (UnsupportedTypeOracleAccess e) {