}
} finally {
currentHolder = previousHolder;
}
SimpleIdentifier className = node.getName();
ClassElementImpl element = new ClassElementImpl(className);
TypeParameterElement[] typeParameters = holder.getTypeParameters();
Type[] typeArguments = createTypeParameterTypes(typeParameters);
InterfaceTypeImpl interfaceType = new InterfaceTypeImpl(element);
interfaceType.setTypeArguments(typeArguments);
element.setType(interfaceType);
ConstructorElement[] constructors = holder.getConstructors();
if (constructors.length == 0) {
//
// Create the default constructor.
//
constructors = createDefaultConstructors(interfaceType);
}
element.setAbstract(node.isAbstract());
element.setAccessors(holder.getAccessors());
element.setConstructors(constructors);
element.setFields(holder.getFields());
element.setMethods(holder.getMethods());
element.setTypeParameters(typeParameters);
element.setValidMixin(isValidMixin);
int functionTypeCount = functionTypesToFix.size();
for (int i = 0; i < functionTypeCount; i++) {
functionTypesToFix.get(i).setTypeArguments(typeArguments);
}
functionTypesToFix = null;
currentHolder.addType(element);
className.setStaticElement(element);
fieldMap = null;
holder.validate();
return null;
}