public static Tuple2 < ClassNode [ ] , ClassNode > parameterizeSAM ( ClassNode sam ) { MethodNode methodNode = ClassHelper . findSAM ( sam ) ; final Map < GenericsType , GenericsType > map = makeDeclaringAndActualGenericsTypeMapOfExactType ( methodNode . getDeclaringClass ( ) , sam ) ; ClassNode [ ] parameterTypes = Arrays . stream ( methodNode . getParameters ( ) ) . map ( e -> { ClassNode originalParameterType = e . getType ( ) ; return originalParameterType . isGenericsPlaceHolder ( ) ? findActualTypeByGenericsPlaceholderName ( originalParameterType . getUnresolvedName ( ) , map ) : originalParameterType ; } ) . toArray ( ClassNode [ ] :: new ) ; ClassNode originalReturnType = methodNode . getReturnType ( ) ; ClassNode returnType = originalReturnType . isGenericsPlaceHolder ( ) ? findActualTypeByGenericsPlaceholderName ( originalReturnType . getUnresolvedName ( ) , map ) : originalReturnType ; return tuple ( parameterTypes , returnType ) ; }
Get the parameter and return types of the abstract method of SAM