code: static void buildTypeVariableMap(final Type[] types, final Map<TypeVariable<?>, Type> map) {
          for (Type type : types) {
              if (type instanceof ParameterizedType) {
                  ParameterizedType parameterizedType = (ParameterizedType) type;
                  buildTypeVariableMap(parameterizedType, map);
                  Type rawType = parameterizedType.getRawType();
                  if (rawType instanceof Class)
                      buildTypeVariableMap(((Class<?>) rawType).getGenericInterfaces(), map);
              } else if (type instanceof Class) {
                  buildTypeVariableMap(((Class<?>) type).getGenericInterfaces(), map);
              }
          }
      }
docs: Populates the {@code map} with with variable/argument pairs for the given {@code types}.