private Map<String, MethodHandler> apply(final Target<?> target) {
      final List<MethodMetadata> metadata = contract.parseAndValidateMetadata(target.type());
      final Map<String, MethodHandler> result = new HashMap<>();

      for (final MethodMetadata metadatum : metadata) {
        RequestTemplateFactoryResolver.BuildTemplateByResolvingArgs buildTemplate;

        if (!metadatum.formParams().isEmpty() && metadatum.template().bodyTemplate() == null) {
          buildTemplate =
              new RequestTemplateFactoryResolver.BuildFormEncodedTemplateFromArgs(
                  metadatum, encoder, queryMapEncoder, target);
        } else if (metadatum.bodyIndex() != null || metadatum.alwaysEncodeBody()) {
          buildTemplate =
              new RequestTemplateFactoryResolver.BuildEncodedTemplateFromArgs(
                  metadatum, encoder, queryMapEncoder, target);
        } else {
          buildTemplate =
              new RequestTemplateFactoryResolver.BuildTemplateByResolvingArgs(
                  metadatum, queryMapEncoder, target);
        }

        result.put(
            metadatum.configKey(),
            factory.create(target, metadatum, buildTemplate, decoder, errorDecoder));
      }

      return result;
    }
Defines target and builds client.

@param target target instance
@param <T> class of API interface
@return built client
vertx/feign-vertx/src/main/java/feign/VertxFeign.java