private static @Nullable TypeInfo parseTypeWithoutVarianceToTypeInfo(CharIterator signature, TypeInfoProvider mapping) throws ClsFormatException {
    switch (signature.current()) {
      case 'L':
        return parseParameterizedClassRefSignatureToTypeInfo(signature, mapping);
      case 'T':
        return new TypeInfo.RefTypeInfo(parseTypeVariableRefSignature(signature));
      case 'B':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.BYTE);
      case 'C':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.CHAR);
      case 'D':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.DOUBLE);
      case 'F':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.FLOAT);
      case 'I':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.INT);
      case 'J':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.LONG);
      case 'S':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.SHORT);
      case 'Z':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.BOOLEAN);
      case 'V':
        signature.next();
        return new TypeInfo.SimpleTypeInfo(TypeKind.VOID);
    }
    return null;
  }
private static @Nullable TypeInfo parseTypeWithoutVarianceToTypeInfo(CharIterator signature, TypeInfoProvider mapping)