@SuppressWarnings("unchecked")
	public static <T> T getAnnotationValue(AnnotationMetadata importingClassMetadata, Class annotationClass, String name, T defaultValue) {
    """
	Get annotation method value.
	
	@param importingClassMetadata Metadata.
	@param annotationClass        Annotation class to look for.
	@param name                   Name of method.
	@param defaultValue           Default value if original value is null.
	@param <T>                    Type of returned value.
	@return Annotation value, or default value if original value is null.
    """
		Map<String, Object> attributes = importingClassMetadata.getAnnotationAttributes(annotationClass.getName());
		return attributes != null && attributes.containsKey(name) ? (T) attributes.get(name) : defaultValue;
	}
@SuppressWarnings("unchecked")
	public static <T> T getAnnotationValue(AnnotationMetadata importingClassMetadata, Class annotationClass, String name, T defaultValue) {
		Map<String, Object> attributes = importingClassMetadata.getAnnotationAttributes(annotationClass.getName());
		return attributes != null && attributes.containsKey(name) ? (T) attributes.get(name) : defaultValue;
	}
@ SuppressWarnings ( "unchecked" ) public static < T > T getAnnotationValue ( AnnotationMetadata importingClassMetadata , Class annotationClass , String name , T defaultValue ) { Map < String , Object > attributes = importingClassMetadata . getAnnotationAttributes ( annotationClass . getName ( ) ) ; return attributes != null && attributes . containsKey ( name ) ? ( T ) attributes . get ( name ) : defaultValue ; }
Get annotation method value.

@param importingClassMetadata Metadata.
@param annotationClass        Annotation class to look for.
@param name                   Name of method.
@param defaultValue           Default value if original value is null.
@param <T>                    Type of returned value.
@return Annotation value, or default value if original value is null.
Get annotation method value .