static ResultType getResultType(jnr.ffi.Runtime runtime, Class type, Collection<Annotation> annotations,
jnr.ffi.mapper.FromNativeType fromNativeType, FromNativeContext fromNativeContext) {
Collection<Annotation> converterAnnotations = getAnnotations(fromNativeType);
Collection<Annotation> allAnnotations = Annotations.mergeAnnotations(annotations, converterAnnotations);
FromNativeConverter fromNativeConverter = fromNativeType != null ? fromNativeType.getFromNativeConverter() : null;
NativeType nativeType = getMethodResultNativeType(runtime,
fromNativeConverter != null ? fromNativeConverter.nativeType() : type, allAnnotations);
boolean useContext = fromNativeConverter != null && !hasAnnotation(converterAnnotations, FromNativeConverter.NoContext.class);
return new ResultType(type, nativeType, allAnnotations, fromNativeConverter, useContext ? fromNativeContext : null);
}