private void extractContentTransformerClass() {
            ContentTransformerClass annotation = method.getAnnotation(ContentTransformerClass.class);
            if (contentArgPosition == -1) {
                if (annotation != null) {
                    throw new ProxyAnnotationException(format("ContentTransformClass defined on method %s with no @Content parameter", method.getName()));
                }
                return;
            }
            if (annotation == null) {
                Class<?> contentType = method.getParameterTypes()[contentArgPosition];
                if (Observable.class.isAssignableFrom(contentType) && ByteBuf.class.isAssignableFrom(genericContentType)
                        || ByteBuf.class.isAssignableFrom(contentType)
                        || byte[].class.isAssignableFrom(contentType)
                        || String.class.isAssignableFrom(contentType)) {
                    return;
                }
                throw new ProxyAnnotationException(format("ContentTransformerClass annotation missing for content type %s in method %s",
                        contentType.getName(), methodName()));
            }
            contentTansformerClass = annotation.value();
        }
Extracts information from Ribbon annotated method, to automatically populate the Ribbon request template.
A few validations are performed as well:
- a return type must be {@link com.netflix.ribbon.RibbonRequest}
- HTTP method must be always specified explicitly (there are no defaults)
- only one parameter with {@link com.netflix.ribbon.proxy.annotation.Content} annotation is allowed

@author Tomasz Bak
ribbon/src/main/java/com/netflix/ribbon/proxy/MethodTemplate.java