code: private static Map<Class<?>, LinkedHashMap<String, Type>> usePossiblyOwnerGenerics(
              final Class<?> type, final GenericsInfo info) {
          final Map<Class<?>, LinkedHashMap<String, Type>> res = new HashMap<Class<?>, LinkedHashMap<String, Type>>();
          // use only types, not included in target hierarchy
          for (Class<?> root : info.getComposingTypes()) {
              if (!root.isAssignableFrom(type)) {
                  res.put(root, (LinkedHashMap<String, Type>) info.getTypeGenerics(root));
              }
          }
          return res;
      }
docs: When building inlying context, target type may be inner class, and if root context contains owner type
  then we can assume that it's known more specific generics may be used. This is not correct in general,
  as inner class may be created inside different class, but in most cases inner classes are used within
  outer class and the chance that different outer class hierarchies will interact are quite low.
  <p>
  Storing all types, not present in target class hierarchy (to avoid affecting actual generics resolution)
  
  @param type target (inlying) type
  @param info root context generics info (possibly outer)
  @return possible owner classes, not present in target type hierarchy