<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="en-CZ" link="#0563C1" vlink="#954F72" style="word-wrap:break-word;-webkit-nbsp-mode: space;line-break:after-white-space">
<div class="WordSection1">
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">We can drop many features and it still looks OK, except for expanded vs compact lists and maps. Compact map can be represented as array, however I’m not aware of anything similar for Map. Or
we can use explicit delimiter class Compact, where everything inside is treated as compact form. Or we can avoid compact maps and use Maps and Lists for expanded form and arrays for compact lists.</span><o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:36.0pt">I am not sure what you mean by “compact lists and maps”? Can you give an example so I see what you are aiming at?<o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Expanded is everything spread across multiple lines.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Expanded lists in the example below are top level list of classes and lists of fields and methods.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Expanded maps are: content of class, constant pool, content of field, content of method, code and stack map frames<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Compact means all in one line. Compact lists are everything in [ ] and compact maps everything in { }.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">If you traverse the tree from root you can never return from compact to expanded, so an indicator (list or map attribute or another form of delimiter) should indicate where to start render compacted form of lists and
maps.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The same applies for XML and JSON if we would like to have them human-readable.<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:36.0pt"><br>
<br>
<o:p></o:p></p>
</div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black;background:#F9F4E0">-
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD;background:#F9F4E0">class name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black;background:#F9F4E0">: 'Foo'</span><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">version</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: '61.0'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">flags</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [PUBLIC]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">superclass</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Boo'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">interfaces</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: ['Phee', 'Phoo']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">attributes</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [SourceFile]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">constant pool</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">1</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Foo']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">2</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Class, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name
index</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 1,
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Foo'}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">3</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Boo']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">4</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Class, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name
index</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 3,
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Boo'}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">5</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'f']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">6</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Ljava/lang/String;']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">7</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'm']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">8</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, '(ZLjava/lang/Throwable;)Ljava/lang/Void;']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">9</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Phee']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">10</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Class, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name
index</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 9,
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Phee'}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">11</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Phoo']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">12</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Class, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name
index</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 11,
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Phoo'}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">13</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Code']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">14</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'StackMapTable']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">15</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'SourceFile']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">16</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [CONSTANT_Utf8, 'Foo.java']<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">source</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Foo.java'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">fields</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> -
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">field name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'f'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">flags</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [PRIVATE]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">descriptor</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'Ljava/lang/String;'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">attributes</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: []<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">methods</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> -
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">method name</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 'm'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">flags</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [PROTECTED]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">descriptor</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: '(ZLjava/lang/Throwable;)Ljava/lang/Void;'<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">attributes</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [Code]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">code</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">max stack</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 1<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">max locals</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: 3<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">attributes</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [StackMapTable]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">stack map frames</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">6</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:
{</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">locals</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: ['Foo', 'int', 'java/lang/Throwable'],
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">stack</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: []}<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:#969696">#stack map frame locals: ['Foo', 'int', 'java/lang/Throwable'], stack: []</span><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">0</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [ILOAD_1, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">slot</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:
1}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">1</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [IFEQ, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">target</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:
6}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">4</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [ALOAD_2, {</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">slot</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">:
2}]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">5</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [ATHROW]<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:#969696">#stack map frame locals: ['Foo', 'int', 'java/lang/Throwable'], stack: []</span><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Courier New";color:black">
</span><b><span style="font-size:10.0pt;font-family:"Courier New";color:#336BDD">6</span></b><span style="font-size:10.0pt;font-family:"Courier New";color:black">: [RETURN]<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>