private void separateOwnerGenerics() {
        ownerType = (Class) TypeUtils.getOuter(currentType);
        ownerGenerics = GenericsUtils.extractOwnerGenerics(currentType, typeGenerics);
        if (ownerGenerics.isEmpty()) {
            allTypeGenerics = typeGenerics;
        } else {
            allTypeGenerics = new LinkedHashMap<String, Type>(typeGenerics);
            // remove owner generics from main set (ok to modify map because it's a copy)
            for (String key : ownerGenerics.keySet()) {
                typeGenerics.remove(key);
            }
        }
    }
private void separateOwnerGenerics ( ) { ownerType = ( Class ) TypeUtils . getOuter ( currentType ) ; ownerGenerics = GenericsUtils . extractOwnerGenerics ( currentType , typeGenerics ) ; if ( ownerGenerics . isEmpty ( ) ) { allTypeGenerics = typeGenerics ; } else { allTypeGenerics = new LinkedHashMap < String , Type > ( typeGenerics ) ; for ( String key : ownerGenerics . keySet ( ) ) { typeGenerics . remove ( key ) ; } } }
If current type is inner class then it could reference outer class generics and they were included
into complete generics map. Now we need to separate them back.
<p>
In case when outer generic name clashes with inner class generic outer generic is overridden by class generic
(become unreachable).