public RepositoryMethodDescriptor createMethodDescriptor(final DescriptorContext context) {
        final Annotation annotation = ExtUtils.findMethodAnnotation(context.method);
        context.extensionAnnotation = annotation.annotationType();
        context.extensionType = annotation.annotationType().getAnnotation(RepositoryMethod.class).value();
        final Provider<? extends RepositoryMethodExtension> extension = injector.getProvider(context.extensionType);
        @SuppressWarnings("unchecked")
        final RepositoryMethodDescriptor<?> descriptor = extension.get().createDescriptor(context, annotation);
        descriptor.methodExtension = extension;
        return descriptor;
    }
public RepositoryMethodDescriptor createMethodDescriptor ( final DescriptorContext context ) { final Annotation annotation = ExtUtils . findMethodAnnotation ( context . method ) ; context . extensionAnnotation = annotation . annotationType ( ) ; context . extensionType = annotation . annotationType ( ) . getAnnotation ( RepositoryMethod . class ) . value ( ) ; final Provider < ? extends RepositoryMethodExtension > extension = injector . getProvider ( context . extensionType ) ; @ SuppressWarnings ( "unchecked" ) final RepositoryMethodDescriptor < ? > descriptor = extension . get ( ) . createDescriptor ( context , annotation ) ; descriptor . methodExtension = extension ; return descriptor ; }
Finds method extension annotation and resolve extension instance from it.
Implicitly updates incoming context with extension type (other extensions could use it).
Updates descriptor, created by extension with extension provider.

@param context repository method context
@return descriptor object created by extension