private TypeVarToTypeMap mapTypes ( TypeVarToTypeMap actualParamByVarName , IType ... types ) { for ( int i = 0 ; i < types . length ; i ++ ) { IType type = types [ i ] ; if ( type instanceof ITypeVariableType ) { actualParamByVarName . put ( ( ITypeVariableType ) types [ i ] , types [ i ] ) ; } if ( type instanceof ITypeVariableArrayType ) { mapTypes ( actualParamByVarName , type . getComponentType ( ) ) ; } if ( type . isParameterizedType ( ) ) { IType [ ] parameters = type . getTypeParameters ( ) ; mapTypes ( actualParamByVarName , parameters ) ; } if ( type instanceof IFunctionType ) { IFunctionType funType = ( IFunctionType ) type ; mapTypes ( actualParamByVarName , funType . getReturnType ( ) ) ; IType [ ] paramTypes = funType . getParameterTypes ( ) ; for ( IType paramType : paramTypes ) { mapTypes ( actualParamByVarName , paramType ) ; } } } return actualParamByVarName ; }
Move Intrinsic type helper up here