public Map<ArgType,List<ArgType>> consumeGenericMap(){
  if (!lookAhead('<')) {
    return Collections.emptyMap();
  }
  Map<ArgType,List<ArgType>> map=new LinkedHashMap<ArgType,List<ArgType>>(2);
  consume('<');
  while (true) {
    if (lookAhead('>') || next() == STOP_CHAR) {
      break;
    }
    String id=consumeUntil(':');
    if (id == null) {
      LOG.error("Can't parse generic map: {}",sign);
      return Collections.emptyMap();
    }
    tryConsume(':');
    List<ArgType> types=consumeExtendsTypesList();
    map.put(ArgType.genericType(id),types);
  }
  consume('>');
  return map;
}

public Map < ArgType , List < ArgType > > consumeGenericMap ( ) { if ( ! lookAhead ( '<' ) ) { return Collections . emptyMap ( ) ; } Map < ArgType , List < ArgType > > map = new LinkedHashMap < ArgType , List < ArgType > > ( 2 ) ; consume ( '<' ) ; while ( true ) { if ( lookAhead ( '>' ) || next ( ) == STOP_CHAR ) { break ; } String id = consumeUntil ( ':' ) ; if ( id == null ) { LOG . error ( "Can't parse generic map: {}" , sign ) ; return Collections . emptyMap ( ) ; } tryConsume ( ':' ) ; List < ArgType > types = consumeExtendsTypesList ( ) ; map . put ( ArgType . genericType ( id ) , types ) ; } consume ( '>' ) ; return map ; }
map of generic types names to extends classes . < p / > example : " < t : ljava / lang / exception ; : ljava / lang / object ; > "
