code: public static Map<String, Type> matchVariableNames(final Type template, final Type real) {
          final Map<TypeVariable, Type> match = matchVariables(template, real);
          if (match.isEmpty()) {
              return Collections.emptyMap();
          }
          final Map<String, Type> res = new HashMap<String, Type>();
          for (Map.Entry<TypeVariable, Type> entry : match.entrySet()) {
              res.put(entry.getKey().getName(), entry.getValue());
          }
          return res;
      }
docs: Shortcut for {@link #matchVariables(Type, Type)} which return map of variable names instaed of raw
  variable objects.
  
  @param template type with variables
  @param real     type to compare and resolve variables from
  @return map of resolved variables or empty map
  @throws IllegalArgumentException when provided types are nto compatible