910 var bmNode = new MapNodeImpl(FLOW, "bm");
911 bmNode.with(leafs(
912 "index", bm.bsmIndex(),
913 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
914 mref instanceof InterfaceMethodRefEntry).name(),
915 "owner", mref.owner().asInternalName(),
916 "name", mref.nameAndType().name().stringValue()));
917 bmNode.with(list("args", "arg", bm.arguments().stream().map(LoadableConstantEntry::constantValue)));
918 return bmNode;
919 })));
920 case ConstantValueAttribute cva ->
921 nodes.add(leaf("constant value", cva.constant().constantValue()));
922 case NestHostAttribute nha ->
923 nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
924 case NestMembersAttribute nma ->
925 nodes.add(list("nest members", "member", nma.nestMembers().stream()
926 .map(mp -> mp.name().stringValue())));
927 case PermittedSubclassesAttribute psa ->
928 nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
929 .map(e -> e.name().stringValue())));
930 default -> {}
931 }
932 if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
933 case EnclosingMethodAttribute ema ->
934 nodes.add(map("enclosing method",
935 "class", ema.enclosingClass().name().stringValue(),
936 "method name", ema.enclosingMethodName()
937 .map(Utf8Entry::stringValue).orElse("null"),
938 "method type", ema.enclosingMethodType()
939 .map(Utf8Entry::stringValue).orElse("null")));
940 case ExceptionsAttribute exa ->
941 nodes.add(list("exceptions", "exc", exa.exceptions().stream()
942 .map(e -> e.name().stringValue())));
943 case InnerClassesAttribute ica ->
944 nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
945 .map(ic -> new MapNodeImpl(FLOW, "cls").with(
946 leaf("inner class", ic.innerClass().name().stringValue()),
947 leaf("outer class", ic.outerClass()
948 .map(cle -> cle.name().stringValue()).orElse("null")),
949 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),
|
910 var bmNode = new MapNodeImpl(FLOW, "bm");
911 bmNode.with(leafs(
912 "index", bm.bsmIndex(),
913 "kind", DirectMethodHandleDesc.Kind.valueOf(mh.kind(),
914 mref instanceof InterfaceMethodRefEntry).name(),
915 "owner", mref.owner().asInternalName(),
916 "name", mref.nameAndType().name().stringValue()));
917 bmNode.with(list("args", "arg", bm.arguments().stream().map(LoadableConstantEntry::constantValue)));
918 return bmNode;
919 })));
920 case ConstantValueAttribute cva ->
921 nodes.add(leaf("constant value", cva.constant().constantValue()));
922 case NestHostAttribute nha ->
923 nodes.add(leaf("nest host", nha.nestHost().name().stringValue()));
924 case NestMembersAttribute nma ->
925 nodes.add(list("nest members", "member", nma.nestMembers().stream()
926 .map(mp -> mp.name().stringValue())));
927 case PermittedSubclassesAttribute psa ->
928 nodes.add(list("permitted subclasses", "subclass", psa.permittedSubclasses().stream()
929 .map(e -> e.name().stringValue())));
930 case LoadableDescriptorsAttribute pa ->
931 nodes.add(list("loadable descriptors", "descriptor", pa.loadableDescriptors().stream()
932 .map(e -> e.stringValue())));
933 default -> {}
934 }
935 if (verbosity == Verbosity.TRACE_ALL) switch (attr) {
936 case EnclosingMethodAttribute ema ->
937 nodes.add(map("enclosing method",
938 "class", ema.enclosingClass().name().stringValue(),
939 "method name", ema.enclosingMethodName()
940 .map(Utf8Entry::stringValue).orElse("null"),
941 "method type", ema.enclosingMethodType()
942 .map(Utf8Entry::stringValue).orElse("null")));
943 case ExceptionsAttribute exa ->
944 nodes.add(list("exceptions", "exc", exa.exceptions().stream()
945 .map(e -> e.name().stringValue())));
946 case InnerClassesAttribute ica ->
947 nodes.add(new ListNodeImpl(BLOCK, "inner classes", ica.classes().stream()
948 .map(ic -> new MapNodeImpl(FLOW, "cls").with(
949 leaf("inner class", ic.innerClass().name().stringValue()),
950 leaf("outer class", ic.outerClass()
951 .map(cle -> cle.name().stringValue()).orElse("null")),
952 leaf("inner name", ic.innerName().map(Utf8Entry::stringValue).orElse("null")),
|