private AnnotationSpec wireFieldAnnotation(Field field, ImmutableList<OneOf> oneOVES) {
AnnotationSpec.Builder result = AnnotationSpec.builder(RaptorField.class);
ProtoType type = field.type();
result.addMember("fieldType", "$S", getTypeString(type));
if (type.isMap()) {
result.addMember("keyType", "$S", getTypeString(type.keyType()));
}
int tag = field.tag();
result.addMember("order", String.valueOf(tag));
result.addMember("name", "$S", field.name());
if (type.isMap()) {
result.addMember("isMap", "true");
}
if (field.isRepeated()) {
result.addMember("repeated", "true");
}
for (OneOf oneOF : oneOVES) {
if (oneOF.fields().contains(field)) {
result.addMember("oneof", "$S", oneOF.name());
}
}
return result.build();
}