public static MethodMetadata toMethodMetadata(ThriftCodecManager codecManager, ThriftMethodMetadata metadata) { List<ParameterMetadata> parameters = metadata.getParameters().stream() .map(parameter -> new ParameterMetadata( parameter.getId(), parameter.getName(), getCodec(codecManager, parameter.getThriftType()))) .collect(Collectors.toList()); ThriftCodec<Object> resultCodec = getCodec(codecManager, metadata.getReturnType()); Map<Short, ThriftCodec<Object>> exceptionCodecs = ImmutableMap.copyOf( transformEntries(metadata.getExceptions(), (key, value) -> getCodec(codecManager, value))); return new MethodMetadata( metadata.getName(), parameters, resultCodec, exceptionCodecs, metadata.getOneway(), metadata.isIdempotent()); }