}
private JClassType getConcreteType(TreeLogger logger, TypeOracle typeOracle,
JClassType sourceType) throws UnableToCompleteException {
JClassType concreteType;
ConcreteType concreteTypeAnnotation = sourceType.getAnnotation(ConcreteType.class);
if (concreteTypeAnnotation == null) {
logger.log(TreeLogger.ERROR, "AsnycProxy subtypes must specify a "
+ ConcreteType.class.getSimpleName() + " annotation.");
throw new UnableToCompleteException();
}
String concreteTypeName = concreteTypeAnnotation.value().getName().replace(
'$', '.');
concreteType = typeOracle.findType(concreteTypeName);
if (concreteType == null) {
logger.log(TreeLogger.ERROR,