Я пытаюсь понять байт-код JVM, но наткнулся на следующий код:
58: invokeinterface #5, 1 // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream;
63: invokedynamic #6, 0 // InvokeDynamic #0:test:()Ljava/util/function/Predicate;
68: invokeinterface #7, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
Кажется, что count значение всегда nargs + 1 (в 58: должно быть 0, но равно 1, в 68: должно быть 1, но 2).
Согласно JVM doc :
Операндом count является беззнаковый байт, который не должен быть равен нулю
Это причина, по которой многие аргументы кажутся nargs + 1?