if (!isChoice) {
DecoratedTypeMirror accessorType = (DecoratedTypeMirror) super.getAccessorType();
if (accessorType.isCollection()) {
AnnotationProcessorEnvironment ape = Context.getCurrentEnvironment();
Types types = ape.getTypeUtils();
if (specifiedType instanceof PrimitiveType) {
specifiedType = types.getPrimitiveType(((PrimitiveType) specifiedType).getKind());
}
else {
specifiedType = types.getDeclaredType(ape.getTypeDeclaration(((DeclaredType) specifiedType).getDeclaration().getQualifiedName()));
}
specifiedType = TypeMirrorDecorator.decorate(types.getDeclaredType(ape.getTypeDeclaration(((DeclaredType) accessorType).getDeclaration().getQualifiedName()), specifiedType));
}
else if (accessorType.isArray() && !(specifiedType instanceof ArrayType)) {
Types types = Context.getCurrentEnvironment().getTypeUtils();
if (specifiedType instanceof PrimitiveType) {
specifiedType = types.getPrimitiveType(((PrimitiveType) specifiedType).getKind());
}
else {
TypeDeclaration decl = ((DeclaredType) specifiedType).getDeclaration();
while (decl instanceof DecoratedTypeDeclaration) {
decl = (TypeDeclaration) ((DecoratedTypeDeclaration) decl).getDelegate();
}
specifiedType = types.getDeclaredType(decl);
}
specifiedType = TypeMirrorDecorator.decorate(types.getArrayType(specifiedType));
}
}
return specifiedType;
}