Check-in [446a1a1728]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:A bunch of cleanup and such.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | wip-springcoat-bringup
Files: files | file ages | folders
SHA1: 446a1a1728727a2d0fb5f83ddb9a8e3ae9e8412f
User & Date: stephanie.gawroriski 2020-03-27 00:25:59
Context
2020-03-27
23:15
Base for SpringCoat booting. check-in: 6a55727ff8 user: stephanie.gawroriski tags: wip-springcoat-bringup
00:25
A bunch of cleanup and such. check-in: 446a1a1728 user: stephanie.gawroriski tags: wip-springcoat-bringup
2020-03-26
00:08
Implement allocation of string arrays. check-in: 23cd4679f0 user: stephanie.gawroriski tags: wip-springcoat-bringup
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to .idea/compiler.xml.

1
2
3
4
5



6
7
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Eclipse" />
    <bytecodeTargetLevel target="7" />



  </component>
</project>




|
>
>
>


1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Eclipse" />
    <bytecodeTargetLevel target="7">
      <module name="squirreljme.modules.tool-profiler.main" target="1.7" />
      <module name="squirreljme.modules.tool-profiler.test" target="1.7" />
    </bytecodeTargetLevel>
  </component>
</project>

Changes to .idea/dictionaries/xer.xml.

1
2
3
4



5
6


7
8

9
10
11
12

13
14



15
16
17
18

19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
35
36
37
38

39
40


41

42

43

44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60
61

62
63
64
<component name="ProjectDictionaryState">
  <dictionary name="xer">
    <words>
      <w>accel</w>



      <w>backlight</w>
      <w>bootram</w>


      <w>cfgs</w>
      <w>chainer</w>

      <w>cldc</w>
      <w>convertable</w>
      <w>dlet</w>
      <w>endianess</w>

      <w>fprintf</w>
      <w>gawroriski</w>



      <w>informations</w>
      <w>ioob</w>
      <w>islower</w>
      <w>isupper</w>

      <w>jarray</w>
      <w>jboolean</w>
      <w>jbyte</w>
      <w>jchar</w>
      <w>jclass</w>
      <w>jdouble</w>
      <w>jfield</w>
      <w>jfloat</w>
      <w>jint</w>

      <w>jlong</w>
      <w>jme's</w>
      <w>jmethod</w>
      <w>jnicall</w>
      <w>jniexport</w>
      <w>jobject</w>
      <w>jshort</w>
      <w>jstring</w>
      <w>jthrowable</w>
      <w>jvalue</w>
      <w>jweak</w>

      <w>ljava</w>
      <w>lowercased</w>


      <w>midlet</w>

      <w>multiphasicapps</w>

      <w>narg</w>

      <w>ourself</w>
      <w>parm</w>
      <w>phasic</w>
      <w>rawstack</w>
      <w>siii</w>
      <w>siiii</w>
      <w>siiiii</w>
      <w>siiiiii</w>
      <w>siiiiiii</w>
      <w>siiiiiiii</w>

      <w>springcoat</w>
      <w>squirreljme</w>
      <w>stdint</w>
      <w>summercoat</w>
      <w>targetting</w>
      <w>unpure</w>
      <w>uppercased</w>
      <w>vtable</w>

    </words>
  </dictionary>
</component>




>
>
>


>
>


>




>


>
>
>




>









>











>


>
>

>

>

>










>








>



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<component name="ProjectDictionaryState">
  <dictionary name="xer">
    <words>
      <w>accel</w>
      <w>attrdelim</w>
      <w>attrname</w>
      <w>autoflush</w>
      <w>backlight</w>
      <w>bootram</w>
      <w>bufa</w>
      <w>bufb</w>
      <w>cfgs</w>
      <w>chainer</w>
      <w>classinfo</w>
      <w>cldc</w>
      <w>convertable</w>
      <w>dlet</w>
      <w>endianess</w>
      <w>externed</w>
      <w>fprintf</w>
      <w>gawroriski</w>
      <w>gratufacoatsjmonhsjmeconh</w>
      <w>hjoja</w>
      <w>ijjiiiii</w>
      <w>informations</w>
      <w>ioob</w>
      <w>islower</w>
      <w>isupper</w>
      <w>jardx</w>
      <w>jarray</w>
      <w>jboolean</w>
      <w>jbyte</w>
      <w>jchar</w>
      <w>jclass</w>
      <w>jdouble</w>
      <w>jfield</w>
      <w>jfloat</w>
      <w>jint</w>
      <w>jjiiiijj</w>
      <w>jlong</w>
      <w>jme's</w>
      <w>jmethod</w>
      <w>jnicall</w>
      <w>jniexport</w>
      <w>jobject</w>
      <w>jshort</w>
      <w>jstring</w>
      <w>jthrowable</w>
      <w>jvalue</w>
      <w>jweak</w>
      <w>konami</w>
      <w>ljava</w>
      <w>lowercased</w>
      <w>meep</w>
      <w>microedition</w>
      <w>midlet</w>
      <w>midp</w>
      <w>multiphasicapps</w>
      <w>namep</w>
      <w>narg</w>
      <w>nomanifest</w>
      <w>ourself</w>
      <w>parm</w>
      <w>phasic</w>
      <w>rawstack</w>
      <w>siii</w>
      <w>siiii</w>
      <w>siiiii</w>
      <w>siiiiii</w>
      <w>siiiiiii</w>
      <w>siiiiiiii</w>
      <w>sjme</w>
      <w>springcoat</w>
      <w>squirreljme</w>
      <w>stdint</w>
      <w>summercoat</w>
      <w>targetting</w>
      <w>unpure</w>
      <w>uppercased</w>
      <w>vtable</w>
      <w>xratufacoatsjmonhsjmeconh</w>
    </words>
  </dictionary>
</component>

Changes to .idea/inspectionProfiles/Project_Default.xml.

14
15
16
17
18
19
20
21


22
23
24
25
26
27
28
...
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
...
185
186
187
188
189
190
191

192
193
194
195
196
197
198
...
199
200
201
202
203
204
205





206
207
208
209
210
211
212
...
322
323
324
325
326
327
328

329
330
331
332
333
334
335
...
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
      <option name="m_limit" value="1" />
    </inspection_tool>
    <inspection_tool class="AnonymousHasLambdaAlternative" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="AnonymousInnerClass" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="ArrayLengthInLoopCondition" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="AssertEqualsBetweenInconvertibleTypes" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="AssignmentUsedAsCondition" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true" />


    <inspection_tool class="BeforeClassOrAfterClassIsPublicStaticVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="BeforeOrAfterIsPublicVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="BooleanMethodNameMustStartWithQuestion" enabled="false" level="WEAK WARNING" enabled_by_default="false">
      <option name="ignoreBooleanMethods" value="false" />
      <option name="ignoreInAnnotationInterface" value="true" />
      <option name="onlyWarnOnBaseMethods" value="true" />
      <option name="questionString" value="add,are,can,check,contains,could,endsWith,equals,has,is,matches,must,put,remove,shall,should,startsWith,was,were,will,would" />
................................................................................
          <option name="REQUIRED_TAGS" value="" />
        </value>
      </option>
      <option name="IGNORE_DEPRECATED" value="false" />
      <option name="IGNORE_JAVADOC_PERIOD" value="true" />
      <option name="IGNORE_DUPLICATED_THROWS" value="false" />
      <option name="IGNORE_POINT_TO_ITSELF" value="false" />
      <option name="myAdditionalJavadocTags" value="squirreljme.syscallparam,squirreljme.syscallreturn,squirreljme.property,squirreljme.error,squirreljme.property,squirreljme.tsiparam" />
    </inspection_tool>
    <inspection_tool class="JavaLangImport" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="JavaModuleNaming" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="JavaRequiresAutoModule" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="LambdaBodyCanBeCodeBlock" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="LambdaCanBeMethodCall" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="LambdaCanBeReplacedWithAnonymous" enabled="false" level="INFORMATION" enabled_by_default="false" />
................................................................................
      <option name="m_ignoreCatchParameters" value="true" />
      <option name="m_regex" value="(__)?[a-z][A-Za-z\d]*" />
      <option name="m_minLength" value="1" />
      <option name="m_maxLength" value="20" />
    </inspection_tool>
    <inspection_tool class="LongLine" enabled="true" level="TYPO" enabled_by_default="true" />
    <inspection_tool class="MagicNumber" enabled="true" level="WEAK WARNING" enabled_by_default="true" />

    <inspection_tool class="MethodCallInLoopCondition" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="MethodNameSameAsClassName" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="MethodNameSameAsParentName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
    <inspection_tool class="MethodRefCanBeReplacedWithLambda" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="MissingOverrideAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
      <option name="ignoreObjectMethods" value="false" />
      <option name="ignoreAnonymousClassMethods" value="false" />
................................................................................
    </inspection_tool>
    <inspection_tool class="MissingPackageInfo" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="m_requireAnnotationsFirst" value="true" />
    </inspection_tool>
    <inspection_tool class="MisspelledHeader" enabled="true" level="WEAK WARNING" enabled_by_default="true">
      <option name="CUSTOM_HEADERS">





        <header value="X-SquirrelJME-API-Name" />
        <header value="X-SquirrelJME-API-Vendor" />
        <header value="X-SquirrelJME-API-Version" />
        <header value="X-SquirrelJME-DefinedConfigurations" />
        <header value="X-SquirrelJME-InternalProjectName" />
      </option>
    </inspection_tool>
................................................................................
    <inspection_tool class="RedundantImplements" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="ignoreSerializable" value="false" />
      <option name="ignoreCloneable" value="false" />
    </inspection_tool>
    <inspection_tool class="RedundantTypeArguments" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="ReplaceNullCheck" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SamePackageImport" enabled="true" level="WARNING" enabled_by_default="true" />

    <inspection_tool class="SimplifiableJUnitAssertion" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SimplifyForEach" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="Since15" enabled="false" level="ERROR" enabled_by_default="false" />
    <inspection_tool class="SingleCharacterStartsWith" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="StandardVariableNames" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
    <inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
................................................................................
    <inspection_tool class="StringRepeatCanBeUsed" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SystemGetenv" enabled="true" level="ERROR" enabled_by_default="true" />
    <inspection_tool class="TestFailedLine" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="TestMethodIsPublicVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="TextBlockBackwardMigration" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="TextBlockMigration" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="TodoComment" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnaryPlus" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnconstructableTestCase" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="UnnecessaryConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnnecessaryFinalOnLocalVariableOrParameter" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnnecessaryLocalVariable" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="m_ignoreImmediatelyReturnedVariables" value="true" />
      <option name="m_ignoreAnnotatedVariables" value="false" />







|
>
>







 







|







 







>







 







>
>
>
>
>







 







>







 







<







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
...
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
...
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
...
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
...
356
357
358
359
360
361
362

363
364
365
366
367
368
369
      <option name="m_limit" value="1" />
    </inspection_tool>
    <inspection_tool class="AnonymousHasLambdaAlternative" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="AnonymousInnerClass" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="ArrayLengthInLoopCondition" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="AssertEqualsBetweenInconvertibleTypes" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="AssignmentUsedAsCondition" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf" />
    </inspection_tool>
    <inspection_tool class="BeforeClassOrAfterClassIsPublicStaticVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="BeforeOrAfterIsPublicVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="BooleanMethodNameMustStartWithQuestion" enabled="false" level="WEAK WARNING" enabled_by_default="false">
      <option name="ignoreBooleanMethods" value="false" />
      <option name="ignoreInAnnotationInterface" value="true" />
      <option name="onlyWarnOnBaseMethods" value="true" />
      <option name="questionString" value="add,are,can,check,contains,could,endsWith,equals,has,is,matches,must,put,remove,shall,should,startsWith,was,were,will,would" />
................................................................................
          <option name="REQUIRED_TAGS" value="" />
        </value>
      </option>
      <option name="IGNORE_DEPRECATED" value="false" />
      <option name="IGNORE_JAVADOC_PERIOD" value="true" />
      <option name="IGNORE_DUPLICATED_THROWS" value="false" />
      <option name="IGNORE_POINT_TO_ITSELF" value="false" />
      <option name="myAdditionalJavadocTags" value="squirreljme.syscallparam,squirreljme.syscallreturn,squirreljme.property,squirreljme.error,squirreljme.property,squirreljme.tsiparam,squirreljme.env" />
    </inspection_tool>
    <inspection_tool class="JavaLangImport" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="JavaModuleNaming" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="JavaRequiresAutoModule" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="LambdaBodyCanBeCodeBlock" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="LambdaCanBeMethodCall" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="LambdaCanBeReplacedWithAnonymous" enabled="false" level="INFORMATION" enabled_by_default="false" />
................................................................................
      <option name="m_ignoreCatchParameters" value="true" />
      <option name="m_regex" value="(__)?[a-z][A-Za-z\d]*" />
      <option name="m_minLength" value="1" />
      <option name="m_maxLength" value="20" />
    </inspection_tool>
    <inspection_tool class="LongLine" enabled="true" level="TYPO" enabled_by_default="true" />
    <inspection_tool class="MagicNumber" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="MarkdownUnresolvedFileReference" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="MethodCallInLoopCondition" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="MethodNameSameAsClassName" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
    <inspection_tool class="MethodNameSameAsParentName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
    <inspection_tool class="MethodRefCanBeReplacedWithLambda" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="MissingOverrideAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
      <option name="ignoreObjectMethods" value="false" />
      <option name="ignoreAnonymousClassMethods" value="false" />
................................................................................
    </inspection_tool>
    <inspection_tool class="MissingPackageInfo" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="m_requireAnnotationsFirst" value="true" />
    </inspection_tool>
    <inspection_tool class="MisspelledHeader" enabled="true" level="WEAK WARNING" enabled_by_default="true">
      <option name="CUSTOM_HEADERS">
        <header value="LIBlet-Dependency-1" />
        <header value="LIBlet-Name" />
        <header value="LIBlet-Vendor" />
        <header value="LIBlet-Version" />
        <header value="Microedition-Configuration" />
        <header value="X-SquirrelJME-API-Name" />
        <header value="X-SquirrelJME-API-Vendor" />
        <header value="X-SquirrelJME-API-Version" />
        <header value="X-SquirrelJME-DefinedConfigurations" />
        <header value="X-SquirrelJME-InternalProjectName" />
      </option>
    </inspection_tool>
................................................................................
    <inspection_tool class="RedundantImplements" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="ignoreSerializable" value="false" />
      <option name="ignoreCloneable" value="false" />
    </inspection_tool>
    <inspection_tool class="RedundantTypeArguments" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="ReplaceNullCheck" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SamePackageImport" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="ShellCheck" enabled="false" level="ERROR" enabled_by_default="false" />
    <inspection_tool class="SimplifiableJUnitAssertion" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SimplifyForEach" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="Since15" enabled="false" level="ERROR" enabled_by_default="false" />
    <inspection_tool class="SingleCharacterStartsWith" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="StandardVariableNames" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
    <inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
................................................................................
    <inspection_tool class="StringRepeatCanBeUsed" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="SystemGetenv" enabled="true" level="ERROR" enabled_by_default="true" />
    <inspection_tool class="TestFailedLine" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="TestMethodIsPublicVoidNoArg" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="TextBlockBackwardMigration" enabled="false" level="INFORMATION" enabled_by_default="false" />
    <inspection_tool class="TextBlockMigration" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" enabled="false" level="WARNING" enabled_by_default="false" />

    <inspection_tool class="UnaryPlus" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnconstructableTestCase" enabled="false" level="WARNING" enabled_by_default="false" />
    <inspection_tool class="UnnecessaryConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnnecessaryFinalOnLocalVariableOrParameter" enabled="true" level="WARNING" enabled_by_default="true" />
    <inspection_tool class="UnnecessaryLocalVariable" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="m_ignoreImmediatelyReturnedVariables" value="true" />
      <option name="m_ignoreAnnotatedVariables" value="false" />

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/palmos/PalmDatabaseAttribute.java.

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	/** Is a bundle, always beam with the same creator type. */
	BUNDLE(0x0800),
	
	/** Database is open and has not been closed properly. */
	OPEN(0x8000),
	
	/** End. */
	;
	
	/** The bit used. */
	public final int bit;
	
	/**
	 * Initializes the attribute.







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	/** Is a bundle, always beam with the same creator type. */
	BUNDLE(0x0800),
	
	/** Database is open and has not been closed properly. */
	OPEN(0x8000),
	
	/* End. */
	;
	
	/** The bit used. */
	public final int bit;
	
	/**
	 * Initializes the attribute.

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/palmos/PalmDatabaseBuilder.java.

414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
	 * Converts a four string to an integer.
	 *
	 * @param __four The string to convert.
	 * @return The resulting value.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/07/13
	 */
	private static final int __fourToInt(String __four)
		throws NullPointerException
	{
		if (__four == null)
			throw new NullPointerException("NARG");
		
		// There must be at least four characters
		String use = __four;







|







414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
	 * Converts a four string to an integer.
	 *
	 * @param __four The string to convert.
	 * @return The resulting value.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/07/13
	 */
	private static int __fourToInt(String __four)
		throws NullPointerException
	{
		if (__four == null)
			throw new NullPointerException("NARG");
		
		// There must be at least four characters
		String use = __four;

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/palmos/PalmDatabaseType.java.

18
19
20
21
22
23
24
25
26
27
28
{
	/** Resource database. */
	RESOURCE,
	
	/** Record database. */
	RECORD,
	
	/** End. */
	;
}








|



18
19
20
21
22
23
24
25
26
27
28
{
	/** Resource database. */
	RESOURCE,
	
	/** Record database. */
	RECORD,
	
	/* End. */
	;
}

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/swm/SuiteDependency.java.

513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
	 * @param __level The level of the dependency.
	 * @param __name The name.
	 * @param __vendor The vendor.
	 * @param __version The version.
	 * @throws InvalidSuiteException If the input parameters are not valid.
	 * @since 2017/11/26
	 */
	private static final void __check(SuiteDependencyType __type,
		SuiteDependencyLevel __level, SuiteName __name,
		SuiteVendor __vendor, SuiteVersionRange __version)
		throws InvalidSuiteException
	{
		// {@squirreljme.error DG09 Dependencies on LIBlets must have the
		// name, vendor, and version set. (The type; The level; The name;
		// The vendor; The version)}







|







513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
	 * @param __level The level of the dependency.
	 * @param __name The name.
	 * @param __vendor The vendor.
	 * @param __version The version.
	 * @throws InvalidSuiteException If the input parameters are not valid.
	 * @since 2017/11/26
	 */
	private static void __check(SuiteDependencyType __type,
		SuiteDependencyLevel __level, SuiteName __name,
		SuiteVendor __vendor, SuiteVersionRange __version)
		throws InvalidSuiteException
	{
		// {@squirreljme.error DG09 Dependencies on LIBlets must have the
		// name, vendor, and version set. (The type; The level; The name;
		// The vendor; The version)}

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/swm/SuiteDependencyLevel.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Required. */
	REQUIRED,
	
	/** Optional. */
	OPTIONAL,
	
	/** End. */
	;
	
	/**
	 * Is this an optional dependency level?
	 *
	 * @return {@code true} if this is an optional dependency level.
	 * @since 2017/11/22







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Required. */
	REQUIRED,
	
	/** Optional. */
	OPTIONAL,
	
	/* End. */
	;
	
	/**
	 * Is this an optional dependency level?
	 *
	 * @return {@code true} if this is an optional dependency level.
	 * @since 2017/11/22

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/swm/SuiteDependencyType.java.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	
	/** Service. */
	SERVICE,
	
	/** Proprietary. */
	PROPRIETARY,
	
	/** End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/02/22
	 */
	@Override







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	
	/** Service. */
	SERVICE,
	
	/** Proprietary. */
	PROPRIETARY,
	
	/* End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/02/22
	 */
	@Override

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/swm/SuiteVersion.java.

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
	 *
	 * @param __v The input string.
	 * @return The version tuplet.
	 * @throws IllegalArgumentException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/10/12
	 */
	private static final int[] __decodeVersion(String __v)
		throws IllegalArgumentException, NullPointerException
	{
		// Check
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Trim whitespace







|







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
	 *
	 * @param __v The input string.
	 * @return The version tuplet.
	 * @throws IllegalArgumentException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/10/12
	 */
	private static int[] __decodeVersion(String __v)
		throws IllegalArgumentException, NullPointerException
	{
		// Check
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Trim whitespace

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/util/Base64Alphabet.java.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	/** The URL alphabet. */
	URL('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
		'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', '='),
	
	/** End. */
	;
	
	/** The alphabet for the characters. */
	final char[] _alphabet;
	
	/**
	 * Initializes the alphabet.







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	/** The URL alphabet. */
	URL('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
		'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', '='),
	
	/* End. */
	;
	
	/** The alphabet for the characters. */
	final char[] _alphabet;
	
	/**
	 * Initializes the alphabet.

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/util/CommentReader.java.

246
247
248
249
250
251
252
253
254
255
256
		
		/** Single line comment. */
		SINGLE,
		
		/** Block comment. */
		BLOCK,
		
		/** End. */
		;
	}
}







|



246
247
248
249
250
251
252
253
254
255
256
		
		/** Single line comment. */
		SINGLE,
		
		/** Block comment. */
		BLOCK,
		
		/* End. */
		;
	}
}

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/util/MIMEFileDecoder.java.

324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
		
		/**
		 * Reads the header information.
		 *
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private final void __readHeader()
			throws IOException
		{
			BufferedReader in = this.in;
			
			// {@squirreljme.error BD1k Unexpected end of file while trying
			// to read MIME header.}
			String ln = in.readLine();
................................................................................
		/**
		 * Reads the next line into the character.
		 *
		 * @return If a line was read.
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private final boolean __readNext()
			throws IOException
		{
			// {@squirreljme.error BD1m Unexpected EOF while read the MIME
			// file data.}
			String ln = this.in.readLine();
			if (ln == null)
				throw new IOException("BD1m");







|







 







|







324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
		
		/**
		 * Reads the header information.
		 *
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private void __readHeader()
			throws IOException
		{
			BufferedReader in = this.in;
			
			// {@squirreljme.error BD1k Unexpected end of file while trying
			// to read MIME header.}
			String ln = in.readLine();
................................................................................
		/**
		 * Reads the next line into the character.
		 *
		 * @return If a line was read.
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private boolean __readNext()
			throws IOException
		{
			// {@squirreljme.error BD1m Unexpected EOF while read the MIME
			// file data.}
			String ln = this.in.readLine();
			if (ln == null)
				throw new IOException("BD1m");

Changes to buildSrc/src/main/java/cc/squirreljme/plugin/util/StringUtils.java.

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
	 *
	 * @param __a The array to check.
	 * @param __c The character to find in the array.
	 * @return The index of the character or {@code -1} if it was not found.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/11/23
	 */
	private static final int __indexOf(char[] __a, char __c)
		throws NullPointerException
	{
		if (__a == null)
			throw new NullPointerException("NARG");
		
		for (int i = 0, n = __a.length; i < n; i++)
			if (__c == __a[i])
				return i;
		return -1;
	}
}








|












349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
	 *
	 * @param __a The array to check.
	 * @param __c The character to find in the array.
	 * @return The index of the character or {@code -1} if it was not found.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/11/23
	 */
	private static int __indexOf(char[] __a, char __c)
		throws NullPointerException
	{
		if (__a == null)
			throw new NullPointerException("NARG");
		
		for (int i = 0, n = __a.length; i < n; i++)
			if (__c == __a[i])
				return i;
		return -1;
	}
}

Changes to emulators/emulator-base/src/main/java/cc/squirreljme/emulator/profiler/ProfilerSnapshot.java.

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
...
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
...
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
...
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
	
	/**
	 * Builds the the method table.
	 *
	 * @return The table of instrumented methods.
	 * @since 2018/11/11
	 */
	private final Map<FrameLocation, Integer> __doMethodTable()
	{
		// The table and the ID, which must be passable to sub-builders
		Map<FrameLocation, Integer> rv = new LinkedHashMap<>();
		int[] next = new int[1];
		
		// Need root frame for the entry point, used virtually to refer to
		// multiple initial points in the entry frame since that is a thing
................................................................................
	 * @param __rv The table to write to.
	 * @param __nid The next ID.
	 * @param __fs The frames to process.
	 * @return The table of instrumented methods.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private final Map<FrameLocation, Integer> __doMethodTableSub(
		Map<FrameLocation, Integer> __rv,
		int[] __nid, Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__rv == null || __nid == null || __fs == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * @param __cpu The stream to write to.
	 * @param __t The thread information to write.
	 * @param __mids The method IDs.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private final void __doWriteThread(DataOutputStream __cpu,
		ProfiledThread __t, Map<FrameLocation, Integer> __mids)
		throws IOException, NullPointerException
	{
		if (__cpu == null || __t == null || __mids == null)
			throw new NullPointerException("NARG");
		
		// ID and name
................................................................................
	 *
	 * @param __ps The stream to print to.
	 * @param __tab The current tab level.
	 * @param __fs The frames to dump.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private static final void __dumpFrames(PrintStream __ps, int __tab,
		Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__ps == null || __fs == null)
			throw new NullPointerException("NARG");
		
		// Go through each frame







|







 







|







 







|







 







|







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
...
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
...
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
...
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
	
	/**
	 * Builds the the method table.
	 *
	 * @return The table of instrumented methods.
	 * @since 2018/11/11
	 */
	private Map<FrameLocation, Integer> __doMethodTable()
	{
		// The table and the ID, which must be passable to sub-builders
		Map<FrameLocation, Integer> rv = new LinkedHashMap<>();
		int[] next = new int[1];
		
		// Need root frame for the entry point, used virtually to refer to
		// multiple initial points in the entry frame since that is a thing
................................................................................
	 * @param __rv The table to write to.
	 * @param __nid The next ID.
	 * @param __fs The frames to process.
	 * @return The table of instrumented methods.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private Map<FrameLocation, Integer> __doMethodTableSub(
		Map<FrameLocation, Integer> __rv,
		int[] __nid, Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__rv == null || __nid == null || __fs == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * @param __cpu The stream to write to.
	 * @param __t The thread information to write.
	 * @param __mids The method IDs.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private void __doWriteThread(DataOutputStream __cpu,
		ProfiledThread __t, Map<FrameLocation, Integer> __mids)
		throws IOException, NullPointerException
	{
		if (__cpu == null || __t == null || __mids == null)
			throw new NullPointerException("NARG");
		
		// ID and name
................................................................................
	 *
	 * @param __ps The stream to print to.
	 * @param __tab The current tab level.
	 * @param __fs The frames to dump.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	private static void __dumpFrames(PrintStream __ps, int __tab,
		Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__ps == null || __fs == null)
			throw new NullPointerException("NARG");
		
		// Go through each frame

Changes to emulators/emulator-base/src/main/java/cc/squirreljme/emulator/profiler/__NodeTable__.java.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	/** Overflowed narrow point? */
	private boolean _overflowed;
	
	/**
	 * Parses the frames and loads into a node table.
	 *
	 * @param __fs The input frames to map.
	 * @param __depth The depth of the stack.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	public final void parse(Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__fs == null)







<







43
44
45
46
47
48
49

50
51
52
53
54
55
56
	/** Overflowed narrow point? */
	private boolean _overflowed;
	
	/**
	 * Parses the frames and loads into a node table.
	 *
	 * @param __fs The input frames to map.

	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/11
	 */
	public final void parse(Iterable<ProfiledFrame> __fs)
		throws NullPointerException
	{
		if (__fs == null)

Changes to emulators/emulator-base/src/main/java/cc/squirreljme/emulator/vm/VMFactory.java.

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
...
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
	 *
	 * @param __props The properties to check first.
	 * @param __key The key to get.
	 * @return The value for the given key, {@code null} means it is not set.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/01/23
	 */
	private static final String __getProperty(Map<String, String> __props,
		String __key)
		throws NullPointerException
	{
		return VMFactory.__getProperty(__props, __key, null);
	}
	
	/**
................................................................................
	 * @param __props The properties to check first.
	 * @param __key The key to get.
	 * @param __def Default value.
	 * @return The value for the given key, {@code __def} means it is not set.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/01/23
	 */
	private static final String __getProperty(Map<String, String> __props,
		String __key, String __def)
		throws NullPointerException
	{
		if (__props == null || __key == null)
			throw new NullPointerException("NARG");
		
		// Grab from these properties first







|







 







|







381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
...
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
	 *
	 * @param __props The properties to check first.
	 * @param __key The key to get.
	 * @return The value for the given key, {@code null} means it is not set.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/01/23
	 */
	private static String __getProperty(Map<String, String> __props,
		String __key)
		throws NullPointerException
	{
		return VMFactory.__getProperty(__props, __key, null);
	}
	
	/**
................................................................................
	 * @param __props The properties to check first.
	 * @param __key The key to get.
	 * @param __def Default value.
	 * @return The value for the given key, {@code __def} means it is not set.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/01/23
	 */
	private static String __getProperty(Map<String, String> __props,
		String __key, String __def)
		throws NullPointerException
	{
		if (__props == null || __key == null)
			throw new NullPointerException("NARG");
		
		// Grab from these properties first

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/MemoryManager.java.

11
12
13
14
15
16
17

18
19
20
21
22
23
24
..
34
35
36
37
38
39
40




41
42
43
44
45
46
47
..
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
...
101
102
103
104
105
106
107

















108
109
110
111
112
113
114

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.memory.MemoryAccessException;
import cc.squirreljme.jvm.memory.ReadableBasicMemory;
import cc.squirreljme.jvm.memory.ReadableByteMemory;
import cc.squirreljme.jvm.memory.WritableBasicMemory;
import cc.squirreljme.jvm.memory.WritableByteMemory;

import cc.squirreljme.vm.springcoat.exceptions.SpringVirtualMachineException;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
................................................................................
 * allocate and access raw blocks as required.
 *
 * @since 2020/03/03
 */
public final class MemoryManager
	implements ReadableBasicMemory, WritableBasicMemory
{




	/** ROM storage starting area. */
	private static final int _ROM_START_POINTER =
		0x7000_0000;
	
	/** The pool of UTF constant strings which are somewhere in memory. */
	private final Map<String, SpringPointer> _utfPool =
		new TreeMap<>();
................................................................................
	 * run-time.
	 *
	 * @param __data The chunk of bytes to be added.
	 * @return The resultant pointer to the chunk.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/14
	 */
	public SpringPointer appendRom(byte[] __data)
		throws NullPointerException
	{
		if (__data == null)
			throw new NullPointerException("NARG");
		
		// Setup memory chunk and store here
		MemoryChunk chunk = new MemoryChunk((__data.length + 3) & (~3));
................................................................................
			
			// Prepare the next placement region for more ROM data
			this._romNext = romNext + ((chunk.size() + 7) & (~7));
			
			return new SpringPointer(romNext);
		}
	}

















	
	/**
	 * Binds a method to the given memory address which is used to dynamically
	 * refer to it.
	 *
	 * @param __method The method to bind.
	 * @return The pointer of the bound method.







>







 







>
>
>
>







 







|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
..
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
..
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.memory.MemoryAccessException;
import cc.squirreljme.jvm.memory.ReadableBasicMemory;
import cc.squirreljme.jvm.memory.ReadableByteMemory;
import cc.squirreljme.jvm.memory.WritableBasicMemory;
import cc.squirreljme.jvm.memory.WritableByteMemory;
import cc.squirreljme.runtime.cldc.debug.Debugging;
import cc.squirreljme.vm.springcoat.exceptions.SpringVirtualMachineException;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
................................................................................
 * allocate and access raw blocks as required.
 *
 * @since 2020/03/03
 */
public final class MemoryManager
	implements ReadableBasicMemory, WritableBasicMemory
{
	/** RAM storage starting area. */
	private static final int _RAM_START_ADDRESS =
		0x1000_0000;
	
	/** ROM storage starting area. */
	private static final int _ROM_START_POINTER =
		0x7000_0000;
	
	/** The pool of UTF constant strings which are somewhere in memory. */
	private final Map<String, SpringPointer> _utfPool =
		new TreeMap<>();
................................................................................
	 * run-time.
	 *
	 * @param __data The chunk of bytes to be added.
	 * @return The resultant pointer to the chunk.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/14
	 */
	public final SpringPointer appendRom(byte[] __data)
		throws NullPointerException
	{
		if (__data == null)
			throw new NullPointerException("NARG");
		
		// Setup memory chunk and store here
		MemoryChunk chunk = new MemoryChunk((__data.length + 3) & (~3));
................................................................................
			
			// Prepare the next placement region for more ROM data
			this._romNext = romNext + ((chunk.size() + 7) & (~7));
			
			return new SpringPointer(romNext);
		}
	}
	
	/**
	 * Attaches the specified amount of RAM to the system.
	 *
	 * @param __len The amount of RAM to attach.
	 * @return The resulting memory pointer.
	 * @throws IllegalArgumentException If the length is zero or negative.
	 * @since 2020/03/26
	 */
	public final SpringPointer attachRam(int __len)
		throws IllegalArgumentException
	{
		if (__len <= 0)
			throw new IllegalArgumentException("Cannot attach negative RAM.");
		
		throw Debugging.todo();
	}
	
	/**
	 * Binds a method to the given memory address which is used to dynamically
	 * refer to it.
	 *
	 * @param __method The method to bind.
	 * @return The pointer of the bound method.

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/ObjectLoader.java.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
..
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
..
77
78
79
80
81
82
83

84
85
86
87
88
89
90
91
...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
156
157



158
159
160
161
162
163
164
...
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat;

import cc.squirreljme.runtime.cldc.debug.Debugging;

import cc.squirreljme.vm.springcoat.objects.ArrayViewer;
import cc.squirreljme.vm.springcoat.objects.ObjectViewer;
import java.util.Map;
import net.multiphasicapps.classfile.ClassName;
import net.multiphasicapps.classfile.ConstantValueString;
import net.multiphasicapps.classfile.MethodDescriptor;
import net.multiphasicapps.classfile.MethodNameAndType;
................................................................................
		new ClassName("java/lang/String");
	
	/** The class info class. */
	private static final ClassName _CLASSINFO_CLASS =
		new ClassName("cc/squirreljme/jvm/ClassInfo");
	
	/** Load-UTF and intern function. */
	private static final MethodNameAndType _LOAD_NAME_AND_TYPE =
		new MethodNameAndType("__loadUtfAndIntern",
		"(J)Ljava/lang/String;");
	
	/** Classinfo constructor. */
	private static final MethodDescriptor _CLASSINFO_CONSTRUCTOR =
		new MethodDescriptor("(IJJIIIIILcc/squirreljme/jvm/ClassInfo;" +
			"[Lcc/squirreljme/jvm/ClassInfo;Lcc/squirreljme/jvm/ClassInfo;" +
................................................................................
	private ObjectLoader()
	{
	}
	
	/**
	 * Loads the class info from the given class.
	 *
	 * @param __class The class ot map.
	 * @return The object for this class.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/21
	 */
	public static SpringObject loadClassInfo(SpringThreadWorker __thread,
		SpringClass __class)
		throws NullPointerException
................................................................................
			if (rv != null)
				return rv;
			
			// Use for the allocation of strings
			MemoryManager mmu = __thread.machine.tasks.memory;
			
			// Initialize instance

			rv = __thread.newInstance(_CLASSINFO_CLASS, _CLASSINFO_CONSTRUCTOR,
				0, // int __fl
				(long)-1, // long __minip
				mmu.loadUtf(__class.name.toString()).pointer, // long __namep
				-1, // int __sz
				-1, // int __bz
				-1, // int __no
				-1, // int __dim
................................................................................
		// Load the UTF string into memory
		SpringMachine machine = __thread.machine;
		SpringPointer utfPointer = machine.tasks.memory.loadUtf(
			__in.toString());
		
		// Call the string internal intern since it does the things needed
		return __thread.invokeMethod(true, ObjectLoader._STRING_CLASS,
			ObjectLoader._LOAD_NAME_AND_TYPE, utfPointer.pointer);
	}
	
	/**
	 * Allocates new array.
	 *
	 * @param <T> The type of array viewer to create.
	 * @param __thread The creating thread.
	 * @param __componentType The component type.
	 * @param __len The length of the array.
	 * @return The array viewer.
	 * @throws NullPointerException On null arguments.

	 * @since 2020/03/25
	 */
	public static <T> ArrayViewer<T> newArray(SpringThreadWorker __thread,
		SpringClass __componentType, int __len)
		throws NullPointerException
	{
		if (__thread == null || __componentType == null)
			throw new NullPointerException("NARG");
		



		throw Debugging.todo();
	}
	
	/**
	 * Creates a new instance of the given class.
	 *
	 * @param __thread The thread to allocate under.
................................................................................
		if (__thread == null || __class == null)
			throw new NullPointerException("NARG");
		
		throw Debugging.todo();
	}
	
	/**
	 * Allocates a new string.
	 *
	 * @param __thread The allocating thread.
	 * @param __s The string to allocate.
	 * @return The allocated string.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/25
	 */







>







 







|







 







|







 







>
|







 







|











>




|




>
>
>







 







|







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
..
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
...
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
...
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat;

import cc.squirreljme.runtime.cldc.debug.Debugging;
import cc.squirreljme.vm.springcoat.exceptions.SpringNegativeArraySizeException;
import cc.squirreljme.vm.springcoat.objects.ArrayViewer;
import cc.squirreljme.vm.springcoat.objects.ObjectViewer;
import java.util.Map;
import net.multiphasicapps.classfile.ClassName;
import net.multiphasicapps.classfile.ConstantValueString;
import net.multiphasicapps.classfile.MethodDescriptor;
import net.multiphasicapps.classfile.MethodNameAndType;
................................................................................
		new ClassName("java/lang/String");
	
	/** The class info class. */
	private static final ClassName _CLASSINFO_CLASS =
		new ClassName("cc/squirreljme/jvm/ClassInfo");
	
	/** Load-UTF and intern function. */
	private static final MethodNameAndType _LOAD_UTF_NAT =
		new MethodNameAndType("__loadUtfAndIntern",
		"(J)Ljava/lang/String;");
	
	/** Classinfo constructor. */
	private static final MethodDescriptor _CLASSINFO_CONSTRUCTOR =
		new MethodDescriptor("(IJJIIIIILcc/squirreljme/jvm/ClassInfo;" +
			"[Lcc/squirreljme/jvm/ClassInfo;Lcc/squirreljme/jvm/ClassInfo;" +
................................................................................
	private ObjectLoader()
	{
	}
	
	/**
	 * Loads the class info from the given class.
	 *
	 * @param __class The class to map.
	 * @return The object for this class.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/21
	 */
	public static SpringObject loadClassInfo(SpringThreadWorker __thread,
		SpringClass __class)
		throws NullPointerException
................................................................................
			if (rv != null)
				return rv;
			
			// Use for the allocation of strings
			MemoryManager mmu = __thread.machine.tasks.memory;
			
			// Initialize instance
			rv = __thread.newInstance(ObjectLoader._CLASSINFO_CLASS,
				ObjectLoader._CLASSINFO_CONSTRUCTOR,
				0, // int __fl
				(long)-1, // long __minip
				mmu.loadUtf(__class.name.toString()).pointer, // long __namep
				-1, // int __sz
				-1, // int __bz
				-1, // int __no
				-1, // int __dim
................................................................................
		// Load the UTF string into memory
		SpringMachine machine = __thread.machine;
		SpringPointer utfPointer = machine.tasks.memory.loadUtf(
			__in.toString());
		
		// Call the string internal intern since it does the things needed
		return __thread.invokeMethod(true, ObjectLoader._STRING_CLASS,
			ObjectLoader._LOAD_UTF_NAT, utfPointer.pointer);
	}
	
	/**
	 * Allocates new array.
	 *
	 * @param <T> The type of array viewer to create.
	 * @param __thread The creating thread.
	 * @param __componentType The component type.
	 * @param __len The length of the array.
	 * @return The array viewer.
	 * @throws NullPointerException On null arguments.
	 * @throws SpringNegativeArraySizeException If the length is negative.
	 * @since 2020/03/25
	 */
	public static <T> ArrayViewer<T> newArray(SpringThreadWorker __thread,
		SpringClass __componentType, int __len)
		throws NullPointerException, SpringNegativeArraySizeException
	{
		if (__thread == null || __componentType == null)
			throw new NullPointerException("NARG");
		
		if (__len < 0)
			throw new SpringNegativeArraySizeException("Negative size.");
		
		throw Debugging.todo();
	}
	
	/**
	 * Creates a new instance of the given class.
	 *
	 * @param __thread The thread to allocate under.
................................................................................
		if (__thread == null || __class == null)
			throw new NullPointerException("NARG");
		
		throw Debugging.todo();
	}
	
	/**
	 * Allocates a new string without interning it.
	 *
	 * @param __thread The allocating thread.
	 * @param __s The string to allocate.
	 * @return The allocated string.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/25
	 */

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringArrayObjectBoolean.java.

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/11/14
	 */
	@Override
	@SuppressWarnings({"unchecked"})
	@Deprecated
	public final void set(int __dx, Object __v)
		throws SpringArrayStoreException, SpringArrayIndexOutOfBoundsException
	{
		// Try setting
		try
		{







<







103
104
105
106
107
108
109

110
111
112
113
114
115
116
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/11/14
	 */
	@Override

	@Deprecated
	public final void set(int __dx, Object __v)
		throws SpringArrayStoreException, SpringArrayIndexOutOfBoundsException
	{
		// Try setting
		try
		{

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringClass.java.

782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
	
	/**
	 * Returns the root type, the base of the component.
	 *
	 * @return The root type of this type.
	 * @since 2018/09/27
	 */
	private final SpringClass __rootType()
	{
		SpringClass rv = this;
		for (SpringClass r = this; r != null; r = r.component)
			rv = r;
		return rv;
	}
}








|








782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
	
	/**
	 * Returns the root type, the base of the component.
	 *
	 * @return The root type of this type.
	 * @since 2018/09/27
	 */
	private SpringClass __rootType()
	{
		SpringClass rv = this;
		for (SpringClass r = this; r != null; r = r.component)
			rv = r;
		return rv;
	}
}

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringDisplayEventCallback.java.

163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
	 * @param __func The function to call.
	 * @param __desc The descriptor.
	 * @param __args The arguments to call.
	 * @return The object value.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/12/03
	 */
	private final Object __exec(String __func, String __desc, Object... __args)
		throws NullPointerException
	{
		if (__func == null || __args == null)
			throw new NullPointerException("NARG");
		
		// Need object and our class
		SpringObject object = this.object;







|







163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
	 * @param __func The function to call.
	 * @param __desc The descriptor.
	 * @param __args The arguments to call.
	 * @return The object value.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/12/03
	 */
	private Object __exec(String __func, String __desc, Object... __args)
		throws NullPointerException
	{
		if (__func == null || __args == null)
			throw new NullPointerException("NARG");
		
		// Need object and our class
		SpringObject object = this.object;

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringField.java.

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** The field index. */
	protected final int index;
	
	/**
	 * Initializes the field.
	 *
	 * @param __cn The class this field is in.
	 * @param __f The field definition.
	 * @param __dx The field index, this is ignored for statics and cannot be
	 * negative for instances.
	 * @throws IllegalArgumentException If the field index is negative.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/08
	 */







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** The field index. */
	protected final int index;
	
	/**
	 * Initializes the field.
	 *
	 * @param __cl The class this field is in.
	 * @param __f The field definition.
	 * @param __dx The field index, this is ignored for statics and cannot be
	 * negative for instances.
	 * @throws IllegalArgumentException If the field index is negative.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/08
	 */

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringMachine.java.

12
13
14
15
16
17
18

19
20
21
22
23
24
25
..
37
38
39
40
41
42
43




44
45
46
47
48
49
50
...
282
283
284
285
286
287
288




















289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
...
382
383
384
385
386
387
388

389
390
391
392
393
394
395

import cc.squirreljme.emulator.profiler.ProfilerSnapshot;
import cc.squirreljme.emulator.vm.VMResourceAccess;
import cc.squirreljme.emulator.vm.VMSuiteManager;
import cc.squirreljme.emulator.vm.VirtualMachine;
import cc.squirreljme.jvm.ThreadStartIndex;
import cc.squirreljme.runtime.cldc.asm.TaskAccess;

import cc.squirreljme.vm.VMClassLibrary;
import cc.squirreljme.vm.springcoat.exceptions.SpringFatalException;
import cc.squirreljme.vm.springcoat.exceptions.SpringMachineExitException;
import cc.squirreljme.vm.springcoat.exceptions.SpringVirtualMachineException;
import cc.squirreljme.vm.springcoat.objects.ArrayViewer;
import cc.squirreljme.vm.springcoat.objects.ObjectViewer;
import java.io.PrintStream;
................................................................................
 * a classpath along with all the needed storage for variables and such.
 *
 * @since 2018/07/29
 */
public final class SpringMachine
	implements Runnable, VirtualMachine
{




	/** Lock. */
	public final Object strlock =
		new Object();
	
	/** The class loader. */
	protected final SpringClassLoader classloader;
	
................................................................................
	/**
	 * {@inheritDoc}
	 * @since 2018/09/13
	 */
	@Override
	public final void run()
	{




















		// Obtain the boot library to read entry points from
		SpringClassLoader classloader = this.classloader;
		VMClassLibrary bootbin = classloader.bootLibrary();
		
		// Must be specified
		String entryClass = this.bootcl;
		
		// Thread that will be used as the main thread of execution, also used
		// to initialize classes when they are requested
		SpringThread mainthread = this.createThread("main");
		
		// We will be using the same logic in the thread worker if we need to
		// initialize any objects or arguments
		SpringThreadWorker worker = new SpringThreadWorker(this,
			mainthread, true);
		mainthread._worker = worker;
		
		// Load the entry point class
		SpringClass entrycl = worker.loadClass(new ClassName(
			entryClass.replace('.', '/')));
		
		// All code enters at a static main method, regardless of the
		// circumstances
		SpringMethod main = entrycl.lookupMethod(true,
................................................................................
			{
				Thread.sleep(500);
			}
			catch (InterruptedException e)
			{
			}
		}

	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/11/17
	 */
	@Override







>







 







>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







<
<
<
<
<
<
<
<
<
<







 







>







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
..
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
...
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320










321
322
323
324
325
326
327
...
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411

import cc.squirreljme.emulator.profiler.ProfilerSnapshot;
import cc.squirreljme.emulator.vm.VMResourceAccess;
import cc.squirreljme.emulator.vm.VMSuiteManager;
import cc.squirreljme.emulator.vm.VirtualMachine;
import cc.squirreljme.jvm.ThreadStartIndex;
import cc.squirreljme.runtime.cldc.asm.TaskAccess;
import cc.squirreljme.runtime.cldc.debug.Debugging;
import cc.squirreljme.vm.VMClassLibrary;
import cc.squirreljme.vm.springcoat.exceptions.SpringFatalException;
import cc.squirreljme.vm.springcoat.exceptions.SpringMachineExitException;
import cc.squirreljme.vm.springcoat.exceptions.SpringVirtualMachineException;
import cc.squirreljme.vm.springcoat.objects.ArrayViewer;
import cc.squirreljme.vm.springcoat.objects.ObjectViewer;
import java.io.PrintStream;
................................................................................
 * a classpath along with all the needed storage for variables and such.
 *
 * @since 2018/07/29
 */
public final class SpringMachine
	implements Runnable, VirtualMachine
{
	/** The default size of RAM. */
	public static final int DEFAULT_RAM_SIZE =
		32 * 1048576;
	
	/** Lock. */
	public final Object strlock =
		new Object();
	
	/** The class loader. */
	protected final SpringClassLoader classloader;
	
................................................................................
	/**
	 * {@inheritDoc}
	 * @since 2018/09/13
	 */
	@Override
	public final void run()
	{
		// Allocate RAM for data storage
		MemoryManager mmu = this.tasks.memory;
		SpringPointer baseRam = mmu.attachRam(SpringMachine.DEFAULT_RAM_SIZE);
		
		// Thread that will be used as the main thread of execution, also used
		// to initialize classes when they are requested
		SpringThread mainThread = this.createThread("main");
		
		// We will be using the same logic in the thread worker if we need to
		// initialize any objects or arguments
		SpringThreadWorker mainWorker = new SpringThreadWorker(this,
			mainThread, true);
		mainThread._worker = mainWorker;
		
		// Execute main program loop
		mainWorker.run();
		
		throw Debugging.todo();
		
		/*
		// Obtain the boot library to read entry points from
		SpringClassLoader classloader = this.classloader;
		VMClassLibrary bootbin = classloader.bootLibrary();
		
		// Must be specified
		String entryClass = this.bootcl;
		










		// Load the entry point class
		SpringClass entrycl = worker.loadClass(new ClassName(
			entryClass.replace('.', '/')));
		
		// All code enters at a static main method, regardless of the
		// circumstances
		SpringMethod main = entrycl.lookupMethod(true,
................................................................................
			{
				Thread.sleep(500);
			}
			catch (InterruptedException e)
			{
			}
		}
		 */
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/11/17
	 */
	@Override

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringThreadWorker.java.

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
..
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
...
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
....
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
....
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
....
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
....
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
....
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
....
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
....
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
....
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
....
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
....
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
....
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
	
	/** The owning machine. */
	protected final SpringMachine machine;
	
	/** The thread being run. */
	protected final SpringThread thread;
	
	/** The thread to signal instead for interrupt. */
	protected final Thread signalinstead;
	
	/** The current step count. */
	private volatile int _stepcount;
	
	/**
	 * Initialize the worker.
	 *
	 * @param __m The executing machine.
	 * @param __t The running thread.
	 * @param __main Is this the main thread? Used for interrupt hacking.
	 * @throws NullPointerException On null arguments.
................................................................................
		throws NullPointerException
	{
		if (__m == null || __t == null)
			throw new NullPointerException("NARG");
		
		this.machine = __m;
		this.thread = __t;
		this.signalinstead = (__main ? Thread.currentThread() : null);
		
		// Set the thread's worker to this
		if (__t._worker == null)
			__t._worker = this;
		
		// {@squirreljme.error BK1x Thread already has a worker associated
		// with it.}
................................................................................
			
			// Depends on the class type
			SpringClass sscl = sso.type();
			ClassName type = sscl.name();
			switch (type.toString())
			{
				case "java/lang/Integer":
					return Integer.valueOf((Integer)
						sso.fieldByField(sscl.lookupField(false,
						"_value", "I")).get());
				
				case "java/lang/String":
					return new String(this.<char[]>asNativeObject(
						char[].class, this.invokeMethod(false,
							new ClassName("java/lang/String"),
							new MethodNameAndType("toCharArray", "()[C"),
							sso)));
................................................................................
	/**
	 * Maps an object to a long value.
	 *
	 * @param __v The value to convert.
	 * @return The converted value.
	 * @since 2020/03/13
	 */
	@SuppressWarnings("PointlessBitwiseExpression")
	final long mapObjectToLong(SpringObject __v)
	{
		if (__v == SpringNullObject.NULL)
			return 0;
		return ((long)this.uniqueObjectToPointer(__v)) & 0xFFFFFFFFL;
	}
	
................................................................................
	 * @param __f The field to lookup.
	 * @return The specified for the field.
	 * @throws NullPointerException On null arguments.
	 * @throws SpringIncompatibleClassChangeException If the field is static.
	 * @throws SpringNoSuchFieldException If the field does not exist.
	 * @since 2018/09/16
	 */
	private final SpringField __lookupInstanceField(FieldReference __f)
		throws NullPointerException, SpringIncompatibleClassChangeException,
			SpringNoSuchFieldException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
			
		// {@squirreljme.error BK28 Could not access the target class for
................................................................................
	 * @return The static field storage.
	 * @throws NullPointerException On null arguments.
	 * @throws SpringIncompatibleClassChangeException If the target field is
	 * not static.
	 * @throws SpringNoSuchFieldException If the field does not exist.
	 * @since 2018/09/09
	 */
	private final SpringFieldStorage __lookupStaticField(FieldReference __f)
		throws NullPointerException, SpringIncompatibleClassChangeException,
			SpringNoSuchFieldException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error BK2a Could not access the target class for
................................................................................
	/**
	 * Single step through handling a single instruction.
	 *
	 * This method uses strict floating point to make operations consistent.
	 *
	 * @since 2018/09/03
	 */
	private final strictfp void __singleStep()
	{
		// Need the current frame and its byte code
		SpringThread thread = this.thread;
		
		// Check if the VM is exiting, to discontinue execution if it has been
		// requested by any thread
		SpringMachine machine = this.machine;
................................................................................
			
			// Exit profiler stack
			thread.profiler.exitAll(System.nanoTime());
			
			throw e;
		}
		
		// Increase the step count
		this._stepcount++;
		
		SpringThread.Frame frame = thread.currentFrame();
		ByteCode code = frame.byteCode();
		
		// Frame is execution
		int iec = frame.incrementExecCount();
		if (iec > 0 && (iec % SpringThreadWorker._EXECUTION_THRESHOLD) == 0)
		{
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/19
	 */
	private final void __vmInvokeInterface(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private final void __vmInvokeSpecial(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private final void __vmInvokeStatic(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/16
	 */
	private final void __vmInvokeVirtual(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 * allocated.
	 *
	 * @param __i The instruction.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private final void __vmNew(Instruction __i, SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __f == null)
			throw new NullPointerException("NARG");
		
		// Lookup class we want to allocate
		ClassName allocname;
................................................................................
	 * parent frame's stack (if any).
	 *
	 * @param __thread The thread to return in.
	 * @param __value The value to push.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/16
	 */
	private final void __vmReturn(SpringThread __thread, Object __value)
		throws NullPointerException
	{
		if (__thread == null || __value == null)
			throw new NullPointerException("NARG");
		
		// Pop our current frame
		SpringThread.Frame old = __thread.popFrame();







<
<
<
<
<
<







 







<







 







<
|
|







 







<







 







|







 







|







 







|







 







<
<
<







 







|







 







|







 







|







 







|







 







|







 







|







57
58
59
60
61
62
63






64
65
66
67
68
69
70
..
75
76
77
78
79
80
81

82
83
84
85
86
87
88
...
247
248
249
250
251
252
253

254
255
256
257
258
259
260
261
262
....
1270
1271
1272
1273
1274
1275
1276

1277
1278
1279
1280
1281
1282
1283
....
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
....
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
....
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
....
1657
1658
1659
1660
1661
1662
1663



1664
1665
1666
1667
1668
1669
1670
....
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
....
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
....
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
....
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
....
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
....
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
	
	/** The owning machine. */
	protected final SpringMachine machine;
	
	/** The thread being run. */
	protected final SpringThread thread;
	






	/**
	 * Initialize the worker.
	 *
	 * @param __m The executing machine.
	 * @param __t The running thread.
	 * @param __main Is this the main thread? Used for interrupt hacking.
	 * @throws NullPointerException On null arguments.
................................................................................
		throws NullPointerException
	{
		if (__m == null || __t == null)
			throw new NullPointerException("NARG");
		
		this.machine = __m;
		this.thread = __t;

		
		// Set the thread's worker to this
		if (__t._worker == null)
			__t._worker = this;
		
		// {@squirreljme.error BK1x Thread already has a worker associated
		// with it.}
................................................................................
			
			// Depends on the class type
			SpringClass sscl = sso.type();
			ClassName type = sscl.name();
			switch (type.toString())
			{
				case "java/lang/Integer":

					return sso.fieldByField(sscl.lookupField(false,
						"_value", "I")).get();
				
				case "java/lang/String":
					return new String(this.<char[]>asNativeObject(
						char[].class, this.invokeMethod(false,
							new ClassName("java/lang/String"),
							new MethodNameAndType("toCharArray", "()[C"),
							sso)));
................................................................................
	/**
	 * Maps an object to a long value.
	 *
	 * @param __v The value to convert.
	 * @return The converted value.
	 * @since 2020/03/13
	 */

	final long mapObjectToLong(SpringObject __v)
	{
		if (__v == SpringNullObject.NULL)
			return 0;
		return ((long)this.uniqueObjectToPointer(__v)) & 0xFFFFFFFFL;
	}
	
................................................................................
	 * @param __f The field to lookup.
	 * @return The specified for the field.
	 * @throws NullPointerException On null arguments.
	 * @throws SpringIncompatibleClassChangeException If the field is static.
	 * @throws SpringNoSuchFieldException If the field does not exist.
	 * @since 2018/09/16
	 */
	private SpringField __lookupInstanceField(FieldReference __f)
		throws NullPointerException, SpringIncompatibleClassChangeException,
			SpringNoSuchFieldException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
			
		// {@squirreljme.error BK28 Could not access the target class for
................................................................................
	 * @return The static field storage.
	 * @throws NullPointerException On null arguments.
	 * @throws SpringIncompatibleClassChangeException If the target field is
	 * not static.
	 * @throws SpringNoSuchFieldException If the field does not exist.
	 * @since 2018/09/09
	 */
	private SpringFieldStorage __lookupStaticField(FieldReference __f)
		throws NullPointerException, SpringIncompatibleClassChangeException,
			SpringNoSuchFieldException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error BK2a Could not access the target class for
................................................................................
	/**
	 * Single step through handling a single instruction.
	 *
	 * This method uses strict floating point to make operations consistent.
	 *
	 * @since 2018/09/03
	 */
	private strictfp void __singleStep()
	{
		// Need the current frame and its byte code
		SpringThread thread = this.thread;
		
		// Check if the VM is exiting, to discontinue execution if it has been
		// requested by any thread
		SpringMachine machine = this.machine;
................................................................................
			
			// Exit profiler stack
			thread.profiler.exitAll(System.nanoTime());
			
			throw e;
		}
		



		SpringThread.Frame frame = thread.currentFrame();
		ByteCode code = frame.byteCode();
		
		// Frame is execution
		int iec = frame.incrementExecCount();
		if (iec > 0 && (iec % SpringThreadWorker._EXECUTION_THRESHOLD) == 0)
		{
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/19
	 */
	private void __vmInvokeInterface(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private void __vmInvokeSpecial(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private void __vmInvokeStatic(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 *
	 * @param __i The instruction.
	 * @param __t The current thread.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/16
	 */
	private void __vmInvokeVirtual(Instruction __i, SpringThread __t,
		SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __t == null || __f == null)
			throw new NullPointerException("NARG");
		
		MethodReference ref = __i.<MethodReference>argument(
................................................................................
	 * allocated.
	 *
	 * @param __i The instruction.
	 * @param __f The current frame.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/15
	 */
	private void __vmNew(Instruction __i, SpringThread.Frame __f)
		throws NullPointerException
	{
		if (__i == null || __f == null)
			throw new NullPointerException("NARG");
		
		// Lookup class we want to allocate
		ClassName allocname;
................................................................................
	 * parent frame's stack (if any).
	 *
	 * @param __thread The thread to return in.
	 * @param __value The value to push.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/16
	 */
	private void __vmReturn(SpringThread __thread, Object __value)
		throws NullPointerException
	{
		if (__thread == null || __value == null)
			throw new NullPointerException("NARG");
		
		// Pop our current frame
		SpringThread.Frame old = __thread.popFrame();

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/objects/ArrayViewerAsList.java.

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat.objects;

import cc.squirreljme.runtime.cldc.debug.Debugging;
import java.util.AbstractList;

/**
 * This is a view of an array as a list type.
 *
 * @since 2020/03/22
 */







<







5
6
7
8
9
10
11

12
13
14
15
16
17
18
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat.objects;


import java.util.AbstractList;

/**
 * This is a view of an array as a list type.
 *
 * @since 2020/03/22
 */

Changes to emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/objects/SimpleObjectViewer.java.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat.objects;

import cc.squirreljme.runtime.cldc.debug.Debugging;
import cc.squirreljme.vm.springcoat.SpringObject;
import cc.squirreljme.vm.springcoat.SpringPointer;

/**
 * This is a viewer for simple objects.
 *
 * @since 2020/03/22
 */







<







6
7
8
9
10
11
12

13
14
15
16
17
18
19
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat.objects;

import cc.squirreljme.runtime.cldc.debug.Debugging;

import cc.squirreljme.vm.springcoat.SpringPointer;

/**
 * This is a viewer for simple objects.
 *
 * @since 2020/03/22
 */

Added emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/objects/SpringObjectViewer.java.



































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// -*- Mode: Java; indent-tabs-mode: t; tab-width: 4 -*-
// ---------------------------------------------------------------------------
// Multi-Phasic Applications: SquirrelJME
//     Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat.objects;

import cc.squirreljme.runtime.cldc.debug.Debugging;
import cc.squirreljme.vm.springcoat.ReferenceChainer;
import cc.squirreljme.vm.springcoat.ReferenceCounter;
import cc.squirreljme.vm.springcoat.SpringClass;
import cc.squirreljme.vm.springcoat.SpringMonitor;
import cc.squirreljme.vm.springcoat.SpringObject;
import cc.squirreljme.vm.springcoat.SpringPointerArea;

/**
 * This wraps .
 *
 * @since 2020/03/26
 */
@Deprecated
public final class SpringObjectViewer
	implements SpringObject
{
	/** The object to view. */
	protected final ObjectViewer viewer;
	
	/**
	 * Initializes the viewer from the new method to the old method.
	 *
	 * @param __viewer The viewer to represent.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/03/26
	 */
	public SpringObjectViewer(ObjectViewer __viewer)
		throws NullPointerException
	{
		if (__viewer == null)
			throw new NullPointerException("NARG");
		
		this.viewer = __viewer;
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2020/03/26
	 */
	@Deprecated
	@Override
	public SpringMonitor monitor()
	{
		throw Debugging.todo();
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2020/03/26
	 */
	@Deprecated
	@Override
	public SpringPointerArea pointerArea()
	{
		throw Debugging.todo();
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2020/03/26
	 */
	@Deprecated
	@Override
	public ReferenceChainer refChainer()
	{
		throw Debugging.todo();
	}
	
	/**
	 * Returns the object viewer this wraps.
	 *
	 * @return The viewer this wraps.
	 * @since 2020/03/26
	 */
	public ObjectViewer objectViewer()
	{
		return this.viewer;
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2020/03/26
	 */
	@Deprecated
	@Override
	public ReferenceCounter refCounter()
	{
		throw Debugging.todo();
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2020/03/26
	 */
	@Deprecated
	@Override
	public SpringClass type()
	{
		throw Debugging.todo();
	}
}

Changes to emulators/summercoat-vm/src/main/java/cc/squirreljme/vm/summercoat/ByteArrayMemory.java.

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * This is a region of memory which uses a read-only byte array.
 *
 * @since 2019/04/21
 */
public final class ByteArrayMemory
	extends AbstractReadableMemory
	implements ReadableMemory
{
	/** The offset to this address. */
	protected final int offset;
	
	/** The size of the byte array. */
	protected final int size;
	







<







12
13
14
15
16
17
18

19
20
21
22
23
24
25
/**
 * This is a region of memory which uses a read-only byte array.
 *
 * @since 2019/04/21
 */
public final class ByteArrayMemory
	extends AbstractReadableMemory

{
	/** The offset to this address. */
	protected final int offset;
	
	/** The size of the byte array. */
	protected final int size;
	

Changes to emulators/summercoat-vm/src/main/java/cc/squirreljme/vm/summercoat/NativeCPU.java.

1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
....
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
....
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
....
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
....
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
....
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
	 * @param __pcl The class string from the pool.
	 * @param __pmn The method name from the pool.
	 * @param __pmt The method type from the pool.
	 * @param __psf The current source file.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/15
	 */
	private final void __debugEntry(Frame __f, int __pcl, int __pmn, int __pmt,
		int __psf)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// Get the pool address
................................................................................
	/**
	 * Debugs the exit of a frame.
	 *
	 * @param __f The frame to exit.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/30
	 */
	private final void __debugExit(Frame __f)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// Exit the frame, but if we extra exited then it is very possible
		// that the state can be messed up so do not absolutely destroy the
................................................................................
	 * @param __f The frame.
	 * @param __sln The source line.
	 * @param __jop The Java operation.
	 * @param __jpc The Java address.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/15
	 */
	private final void __debugPoint(Frame __f, int __sln, int __jop, int __jpc)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		__f._inline = __sln;
		__f._injop = __jop;
................................................................................
	/**
	 * Loads a UTF string from the given memory address.
	 *
	 * @param __addr The address to read from.
	 * @return The resulting string.
	 * @since 2019/05/15
	 */
	private final String __loadUtfString(int __addr)
	{
		// Read length to figure out how long the string is
		WritableMemory memory = this.memory;
		int strlen = memory.memReadShort(__addr) & 0xFFFF;
		
		// Decode string data
		try (DataInputStream dis = new DataInputStream(
................................................................................
	 * Internal system call handling.
	 *
	 * @param __si System call index.
	 * @param __args Arguments.
	 * @return The result.
	 * @since 2019/05/23
	 */
	private final long __sysCall(short __si, int... __args)
	{
		// Error state for the last call of this type
		int[] errors = this._syscallerrors;
		
		// Return value with error value, to set if any
		long rv;
		int err;
................................................................................
		
		/** The current Java address. */
		int _injpc;
		
		/** The current task ID. */
		int _taskid;
		
		/**
		 * Potential initialization.
		 */
		{
			this._execslices = (NativeCPU.ENABLE_DEBUG ?
				new LinkedList<ExecutionSlice>() :
				(Deque<ExecutionSlice>)null);
		}
	}
}








|







 







|







 







|







 







|







 







|







 







|
|









1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
....
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
....
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
....
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
....
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
....
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
	 * @param __pcl The class string from the pool.
	 * @param __pmn The method name from the pool.
	 * @param __pmt The method type from the pool.
	 * @param __psf The current source file.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/15
	 */
	private void __debugEntry(Frame __f, int __pcl, int __pmn, int __pmt,
		int __psf)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// Get the pool address
................................................................................
	/**
	 * Debugs the exit of a frame.
	 *
	 * @param __f The frame to exit.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/30
	 */
	private void __debugExit(Frame __f)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		// Exit the frame, but if we extra exited then it is very possible
		// that the state can be messed up so do not absolutely destroy the
................................................................................
	 * @param __f The frame.
	 * @param __sln The source line.
	 * @param __jop The Java operation.
	 * @param __jpc The Java address.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/15
	 */
	private void __debugPoint(Frame __f, int __sln, int __jop, int __jpc)
		throws NullPointerException
	{
		if (__f == null)
			throw new NullPointerException("NARG");
		
		__f._inline = __sln;
		__f._injop = __jop;
................................................................................
	/**
	 * Loads a UTF string from the given memory address.
	 *
	 * @param __addr The address to read from.
	 * @return The resulting string.
	 * @since 2019/05/15
	 */
	private String __loadUtfString(int __addr)
	{
		// Read length to figure out how long the string is
		WritableMemory memory = this.memory;
		int strlen = memory.memReadShort(__addr) & 0xFFFF;
		
		// Decode string data
		try (DataInputStream dis = new DataInputStream(
................................................................................
	 * Internal system call handling.
	 *
	 * @param __si System call index.
	 * @param __args Arguments.
	 * @return The result.
	 * @since 2019/05/23
	 */
	private long __sysCall(short __si, int... __args)
	{
		// Error state for the last call of this type
		int[] errors = this._syscallerrors;
		
		// Return value with error value, to set if any
		long rv;
		int err;
................................................................................
		
		/** The current Java address. */
		int _injpc;
		
		/** The current task ID. */
		int _taskid;
		
		/*
		  Potential initialization.
		 */
		{
			this._execslices = (NativeCPU.ENABLE_DEBUG ?
				new LinkedList<ExecutionSlice>() :
				(Deque<ExecutionSlice>)null);
		}
	}
}

Changes to emulators/summercoat-vm/src/main/java/cc/squirreljme/vm/summercoat/SuiteMemory.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
...
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/**
 * This represents the single virtual memory space for suite memory.
 *
 * @since 2019/04/21
 */
public final class SuiteMemory
	extends AbstractReadableMemory
	implements ReadableMemory
{
	/** The suite manager. */
	protected final VMSuiteManager suites;
	
	/** The library this uses. */
	protected final String libname;
	
................................................................................
	 *
	 * @param __libname The library to load.
	 * @return The loaded library.
	 * @throws NullPointerException On null arguments.
	 * @throws VMException If it was not found.
	 * @since 2019/11/28
	 */
	private final VMClassLibrary __loadLibrary(String __libname)
		throws NullPointerException, VMException
	{
		if (__libname == null)
			throw new NullPointerException("NARG");
			
		VMSuiteManager suites = this.suites;
		







<







 







|







19
20
21
22
23
24
25

26
27
28
29
30
31
32
...
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
/**
 * This represents the single virtual memory space for suite memory.
 *
 * @since 2019/04/21
 */
public final class SuiteMemory
	extends AbstractReadableMemory

{
	/** The suite manager. */
	protected final VMSuiteManager suites;
	
	/** The library this uses. */
	protected final String libname;
	
................................................................................
	 *
	 * @param __libname The library to load.
	 * @return The loaded library.
	 * @throws NullPointerException On null arguments.
	 * @throws VMException If it was not found.
	 * @since 2019/11/28
	 */
	private VMClassLibrary __loadLibrary(String __libname)
		throws NullPointerException, VMException
	{
		if (__libname == null)
			throw new NullPointerException("NARG");
			
		VMSuiteManager suites = this.suites;
		

Changes to emulators/summercoat-vm/src/main/java/cc/squirreljme/vm/summercoat/SuitesMemory.java.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 * This class contains the memory information for every single suite which
 * exists within the VM.
 *
 * @since 2019/04/21
 */
public final class SuitesMemory
	extends AbstractReadableMemory
	implements ReadableMemory
{
	/** Configuration and table space size. */
	public static final int CONFIG_TABLE_SIZE =
		1048576;
	
	/** The suite chunk size. */
	public static final int SUITE_CHUNK_SIZE =







<







23
24
25
26
27
28
29

30
31
32
33
34
35
36
 * This class contains the memory information for every single suite which
 * exists within the VM.
 *
 * @since 2019/04/21
 */
public final class SuitesMemory
	extends AbstractReadableMemory

{
	/** Configuration and table space size. */
	public static final int CONFIG_TABLE_SIZE =
		1048576;
	
	/** The suite chunk size. */
	public static final int SUITE_CHUNK_SIZE =

Changes to modules/build.gradle.

20
21
22
23
24
25
26



27
28
29
30
31

32
33
34
35
36
37
38
		// Java ME 8 is effectively Java 7
        compileJava.sourceCompatibility = JavaVersion.VERSION_1_7
		compileJava.targetCompatibility = JavaVersion.VERSION_1_7

		// All files are always in UTF-8 format
		compileJava.options.encoding = "utf-8"




		// Copy to tests
		compileTestJava.sourceCompatibility = compileJava.sourceCompatibility
		compileTestJava.targetCompatibility = compileJava.targetCompatibility
		compileTestJava.options.encoding = compileJava.options.encoding
		compileTestJava.options.verbose = compileJava.options.verbose


		// Copy to JavaDoc
		javadoc.options.source = "1.7"
		javadoc.options.tags = [ "squirreljme.property",
			"squirreljme.env",
			"squirreljme.error",
			"squirreljme.syscallparam",







>
>
>





>







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
		// Java ME 8 is effectively Java 7
        compileJava.sourceCompatibility = JavaVersion.VERSION_1_7
		compileJava.targetCompatibility = JavaVersion.VERSION_1_7

		// All files are always in UTF-8 format
		compileJava.options.encoding = "utf-8"

		// Emit deprecation errors
		compileJava.options.deprecation = true

		// Copy to tests
		compileTestJava.sourceCompatibility = compileJava.sourceCompatibility
		compileTestJava.targetCompatibility = compileJava.targetCompatibility
		compileTestJava.options.encoding = compileJava.options.encoding
		compileTestJava.options.verbose = compileJava.options.verbose
		compileTestJava.options.deprecation = compileJava.options.deprecation

		// Copy to JavaDoc
		javadoc.options.source = "1.7"
		javadoc.options.tags = [ "squirreljme.property",
			"squirreljme.env",
			"squirreljme.error",
			"squirreljme.syscallparam",

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/Allocator.java.

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
	 * @param __want The wanted size.
	 * @param __seeker The current chunk position.
	 * @param __csz The chunk size.
	 * @param __cnx The chunk next pointer.
	 * @return The allocation pointer.
	 * @since 2019/06/21
	 */
	private static final int __claim(int __tag, int __want, int __seeker,
		int __csz, int __cnx)
	{
		// Calculate free space in this chunk
		int freespace = (__csz & Allocator.CHUNK_SIZE_MASK);
		
		// This chunk will be split into a used and free chunk
		if (__want + Allocator.SPLIT_REQUIREMENT <= freespace)







|







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
	 * @param __want The wanted size.
	 * @param __seeker The current chunk position.
	 * @param __csz The chunk size.
	 * @param __cnx The chunk next pointer.
	 * @return The allocation pointer.
	 * @since 2019/06/21
	 */
	private static int __claim(int __tag, int __want, int __seeker,
		int __csz, int __cnx)
	{
		// Calculate free space in this chunk
		int freespace = (__csz & Allocator.CHUNK_SIZE_MASK);
		
		// This chunk will be split into a used and free chunk
		if (__want + Allocator.SPLIT_REQUIREMENT <= freespace)

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/Bootstrap.java.

19
20
21
22
23
24
25

26
27
28
29
30
31
32
..
42
43
44
45
46
47
48

49
50
51
52
53
54
55
import cc.squirreljme.jvm.boot.task.ThreadManager;

/**
 * This is the bootstrap entry point for the supervisor.
 *
 * @since 2019/05/25
 */

public final class Bootstrap
{
	/**
	 * Not used.
	 *
	 * @since 2019/05/25
	 */
................................................................................
	 * @param __rombase Base address of the ROM (for offset calculation).
	 * @param __romsize The size of ROM.
	 * @param __confbase The configuration memory base.
	 * @param __confsize The configuration memory size.
	 * @since 2019/05/25
	 */
	@SuppressWarnings("unused")

	static final void __start(int __rambase, int __ramsize,
		int __rombase, int __romsize, int __confbase, int __confsize)
	{
		// Initialize the RAM links to setup dirty bits and initialize the
		// last block of memory with anything that remains. This makes it so
		// the RAM is actually useable.
		Allocator.__initRamLinks(__rambase, __ramsize);







>







 







>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
..
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import cc.squirreljme.jvm.boot.task.ThreadManager;

/**
 * This is the bootstrap entry point for the supervisor.
 *
 * @since 2019/05/25
 */
@Deprecated
public final class Bootstrap
{
	/**
	 * Not used.
	 *
	 * @since 2019/05/25
	 */
................................................................................
	 * @param __rombase Base address of the ROM (for offset calculation).
	 * @param __romsize The size of ROM.
	 * @param __confbase The configuration memory base.
	 * @param __confsize The configuration memory size.
	 * @since 2019/05/25
	 */
	@SuppressWarnings("unused")
	@Deprecated
	static final void __start(int __rambase, int __ramsize,
		int __rombase, int __romsize, int __confbase, int __confsize)
	{
		// Initialize the RAM links to setup dirty bits and initialize the
		// last block of memory with anything that remains. This makes it so
		// the RAM is actually useable.
		Allocator.__initRamLinks(__rambase, __ramsize);

Added modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/SystemBoot.java.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// -*- Mode: Java; indent-tabs-mode: t; tab-width: 4 -*-
// ---------------------------------------------------------------------------
// Multi-Phasic Applications: SquirrelJME
//     Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.jvm.boot;

import cc.squirreljme.runtime.cldc.debug.Debugging;

/**
 * Boots the SquirrelJME virtual machine system.
 *
 * @since 2020/03/26
 */
public final class SystemBoot
{
	/**
	 * System boot entry point.
	 *
	 * @param __ramAddr The RAM address.
	 * @param __ramLen The size of RAM.
	 * @param __configAddr The configuration address.
	 * @param __configLen The configuration length.
	 * @since 2020/03/26
	 */
	@SuppressWarnings("unused")
	static void __sysBoot(long __ramAddr, int __ramLen,
		long __configAddr, int __configLen)
	{
		throw Debugging.todo();
	}
}

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/task/TaskClass.java.

142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
...
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
...
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
...
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
...
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
...
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
	 * @param __task The owning task.
	 * @param __ciu The class info utility.
	 * @param __cfp The class file parser for this class.
	 * @param __poolp The pool pointer.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/08
	 */
	private final void __buildPool(Task __task, ClassInfoUtility __ciu,
		ClassFileParser __cfp, int __poolp)
		throws NullPointerException
	{
		if (__task == null || __ciu == null || __cfp == null)
			throw new NullPointerException("NARG");
		
		// The name of this class
................................................................................
	 * @param __ciu The class info utility.
	 * @param __cfp The class file parser for this class.
	 * @param __vtvirtual The virtual method pointer table.
	 * @param __vtpool The pool used for that method.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/28
	 */
	private final void __buildVTable(Task __task, ClassInfoUtility __ciu,
		ClassFileParser __cfp, int __vtvirtual, int __vtpool)
		throws NullPointerException
	{
		if (__task == null || __ciu == null || __cfp == null)
			throw new NullPointerException("NARG");
		
		todo.DEBUG.note("TODO -- Build VTables.");
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/09
	 */
	private final TaskClass __initializeClassInfoArray(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We just need the utility to access the class info
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/17
	 */
	private final TaskClass __initializeClassInfoClass(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We need the parser for class info so that we can initialize the
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/09
	 */
	private final TaskClass __initializeClassInfoPrimitive(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We just need the utility to access the class info
................................................................................
	 *
	 * @param __task The task.
	 * @param __s The string to encode.
	 * @return The raw string pointer.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/08
	 */
	private final int __makeString(Task __task, String __s)
		throws NullPointerException
	{
		if (__task == null || __s == null)
			throw new NullPointerException("NARG");
		
		// Count the number of bytes this will take up
		int bytes = 2;







|







 







|







 







|







 







|







 







|







 







|







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
...
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
...
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
...
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
...
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
...
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
	 * @param __task The owning task.
	 * @param __ciu The class info utility.
	 * @param __cfp The class file parser for this class.
	 * @param __poolp The pool pointer.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/08
	 */
	private void __buildPool(Task __task, ClassInfoUtility __ciu,
		ClassFileParser __cfp, int __poolp)
		throws NullPointerException
	{
		if (__task == null || __ciu == null || __cfp == null)
			throw new NullPointerException("NARG");
		
		// The name of this class
................................................................................
	 * @param __ciu The class info utility.
	 * @param __cfp The class file parser for this class.
	 * @param __vtvirtual The virtual method pointer table.
	 * @param __vtpool The pool used for that method.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/28
	 */
	private void __buildVTable(Task __task, ClassInfoUtility __ciu,
		ClassFileParser __cfp, int __vtvirtual, int __vtpool)
		throws NullPointerException
	{
		if (__task == null || __ciu == null || __cfp == null)
			throw new NullPointerException("NARG");
		
		todo.DEBUG.note("TODO -- Build VTables.");
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/09
	 */
	private TaskClass __initializeClassInfoArray(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We just need the utility to access the class info
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/17
	 */
	private TaskClass __initializeClassInfoClass(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We need the parser for class info so that we can initialize the
................................................................................
	 *
	 * @param __task The creating task.
	 * @param __cl The class name being initialized.
	 * @return {@code this}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/11/09
	 */
	private TaskClass __initializeClassInfoPrimitive(Task __task,
		String __cl)
		throws NullPointerException
	{
		if (__task == null || __cl == null)
			throw new NullPointerException("NARG");
		
		// We just need the utility to access the class info
................................................................................
	 *
	 * @param __task The task.
	 * @param __s The string to encode.
	 * @return The raw string pointer.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/08
	 */
	private int __makeString(Task __task, String __s)
		throws NullPointerException
	{
		if (__task == null || __s == null)
			throw new NullPointerException("NARG");
		
		// Count the number of bytes this will take up
		int bytes = 2;

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/task/TaskThread.java.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.jvm.boot.task;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.SystemCallIndex;
import cc.squirreljme.jvm.boot.Globals;
import cc.squirreljme.jvm.boot.io.MemoryBlob;
import cc.squirreljme.jvm.boot.lib.ClassNameUtils;

/**
 * This represents a single thread, which is associated with a task.
 *







<







6
7
8
9
10
11
12

13
14
15
16
17
18
19
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.jvm.boot.task;

import cc.squirreljme.jvm.Assembly;

import cc.squirreljme.jvm.boot.Globals;
import cc.squirreljme.jvm.boot.io.MemoryBlob;
import cc.squirreljme.jvm.boot.lib.ClassNameUtils;

/**
 * This represents a single thread, which is associated with a task.
 *

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/jvm/boot/task/ThreadManager.java.

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	/** Threads that currently exist. */
	private TaskThread[] _threads =
		new TaskThread[ThreadManager._DEFAULT_THREAD_COUNT];
	
	/** The next logical thread id. */
	private int _nextlid;
	
	/**
	 * Always fills in the boot thread.
	 *
	 * @since 2019/10/19
	 */
	{
		this._threads[0] = this.BOOT_THREAD;
	}
	
	/**
	 * Returns any thread that is owned by the given task.







|
|
|
|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	/** Threads that currently exist. */
	private TaskThread[] _threads =
		new TaskThread[ThreadManager._DEFAULT_THREAD_COUNT];
	
	/** The next logical thread id. */
	private int _nextlid;
	
	/*
	  Always fills in the boot thread.
	 
	  @since 2019/10/19
	 */
	{
		this._threads[0] = this.BOOT_THREAD;
	}
	
	/**
	 * Returns any thread that is owned by the given task.

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/asm/TaskAccess.java.

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
		String[] __args, String[] __sprops, ConsoleCallback __stdout,
		ConsoleCallback __stderr);
	
	/**
	 * Starts the given thread.
	 *
	 * @param __t The thread which is to run, the execution point of the
	 * thread is the {@link Thread#__start()} method.
	 * @param __n The name hint of this thread.
	 * @return The thread ID.
	 * @since 2018/11/17
	 */
	@Api(ApiLevel.LEVEL_SQUIRRELJME_0_2_0_20181225)
	@Deprecated
	public static final native int startThread(Thread __t, String __n);







|







113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
		String[] __args, String[] __sprops, ConsoleCallback __stdout,
		ConsoleCallback __stderr);
	
	/**
	 * Starts the given thread.
	 *
	 * @param __t The thread which is to run, the execution point of the
	 * thread is the {@code Thread.__start()} method.
	 * @param __n The name hint of this thread.
	 * @return The thread ID.
	 * @since 2018/11/17
	 */
	@Api(ApiLevel.LEVEL_SQUIRRELJME_0_2_0_20181225)
	@Deprecated
	public static final native int startThread(Thread __t, String __n);

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/i18n/DefaultLocale.java.

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	/**
	 * Determines the default locale.
	 *
	 * @return The default locale.
	 * @since 2018/09/20
	 */
	private static final Locale __defaultLocale()
	{
		// Use local from system property
		String prop = null;
		try
		{
			prop = System.getProperty("microedition.locale");
		}







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	/**
	 * Determines the default locale.
	 *
	 * @return The default locale.
	 * @since 2018/09/20
	 */
	private static Locale __defaultLocale()
	{
		// Use local from system property
		String prop = null;
		try
		{
			prop = System.getProperty("microedition.locale");
		}

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/io/CodecFactory.java.

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
	 *
	 * @param __n The encoding to normalize.
	 * @return The normalized encoding, if it is not known then the input is
	 * returned.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/19
	 */
	private static final String __normalizeEncodingName(String __n)
		throws NullPointerException
	{
		if (__n == null)
			throw new NullPointerException("NARG");
		
		// Store original since it will be lowercase
		String orign = __n;







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
	 *
	 * @param __n The encoding to normalize.
	 * @return The normalized encoding, if it is not known then the input is
	 * returned.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/09/19
	 */
	private static String __normalizeEncodingName(String __n)
		throws NullPointerException
	{
		if (__n == null)
			throw new NullPointerException("NARG");
		
		// Store original since it will be lowercase
		String orign = __n;

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/io/UTF8Decoder.java.

69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
		{
				// U+0000 to U+007F
			case 1:
				return (a & 0xFF) | 0x1_0000;
				
				// U+0080 to U+07FF
			case 2:
				return (((__b[__o + 0] & 0b11111) << 6) |
					(__b[__o + 1] & 0b111111)) | 0x2_0000;
				
				// U+0800 to U+FFFF
			case 3:
				return (((__b[__o + 0] & 0b1111) << 12) |
					((__b[__o + 1] & 0b111111) << 6) |
					(__b[__o + 2] & 0b111111)) | 0x3_0000;
				
				// Should not occur
			default:
				throw new todo.OOPS();
		}







|




|







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
		{
				// U+0000 to U+007F
			case 1:
				return (a & 0xFF) | 0x1_0000;
				
				// U+0080 to U+07FF
			case 2:
				return (((__b[__o] & 0b11111) << 6) |
					(__b[__o + 1] & 0b111111)) | 0x2_0000;
				
				// U+0800 to U+FFFF
			case 3:
				return (((__b[__o] & 0b1111) << 12) |
					((__b[__o + 1] & 0b111111) << 6) |
					(__b[__o + 2] & 0b111111)) | 0x3_0000;
				
				// Should not occur
			default:
				throw new todo.OOPS();
		}

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/io/UTF8Encoder.java.

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
		
		// Two Byte
		else if (__c >= 0x0080 && __c <= 0x07FF)
		{
			if (__l < 2)
				return -2;
			
			__b[__o + 0] = (byte)(((__c >>> 6) & 0b11111) | 0b110_00000); 
			__b[__o + 1] = (byte)((__c & 0b111111) | 0b10_000000);
			
			return 2;
		}
		
		// Three byte (__c >= 0x0800 && __c <= 0xFFFF)
		else
		{
			if (__l < 3)
				return -3;
				
			__b[__o + 0] = (byte)(((__c >>> 12) & 0b1111) | 0b1110_0000); 
			__b[__o + 1] = (byte)(((__c >>> 6) & 0b111111) | 0b10_000000);
			__b[__o + 2] = (byte)((__c & 0b111111) | 0b10_000000);
			
			return 3;
		}
	}
	







|











|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
		
		// Two Byte
		else if (__c >= 0x0080 && __c <= 0x07FF)
		{
			if (__l < 2)
				return -2;
			
			__b[__o] = (byte)(((__c >>> 6) & 0b11111) | 0b110_00000);
			__b[__o + 1] = (byte)((__c & 0b111111) | 0b10_000000);
			
			return 2;
		}
		
		// Three byte (__c >= 0x0800 && __c <= 0xFFFF)
		else
		{
			if (__l < 3)
				return -3;
				
			__b[__o] = (byte)(((__c >>> 12) & 0b1111) | 0b1110_0000);
			__b[__o + 1] = (byte)(((__c >>> 6) & 0b111111) | 0b10_000000);
			__b[__o + 2] = (byte)((__c & 0b111111) | 0b10_000000);
			
			return 3;
		}
	}
	

Changes to modules/cldc-compact/src/main/java/cc/squirreljme/runtime/cldc/util/FDMLMath.java.

103
104
105
106
107
108
109

110
111
112
113
114
115
116
...
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
	/**
	 * Logarithm of a number.
	 *
	 * @param __v The input value.
	 * @return The resulting logarithm value.
	 * @since 2018/11/02
	 */

	@ImplementationNote("Source http://www.netlib.org/fdlibm/e_log.c")
	public static double log(double __v)
	{
		double hfsq, f, s, z, r, w, t1, t2, dk;
		int k, hx, i, j;
		int uulx;

................................................................................
	 * Compose high and low value to double.
	 *
	 * @param __hi The high value.
	 * @param __lo The low value.
	 * @return The double value.
	 * @since 2018/11/03
	 */
	private static final double __compose(int __hi, int __lo)
	{
		return Double.longBitsToDouble(
			(((long)__hi & 0xFFFFFFFFL) << 32) |
			((long)__lo & 0xFFFFFFFFL));
	}

	/**
	 * Returns the high word of the double.
	 *
	 * @param __v The input double.
	 * @return The high word of the double.
	 * @since 2018/11/03
	 */
	private static final int __hi(double __v)
	{
		return (int)(Double.doubleToRawLongBits(__v) >>> 32);
	}

	/**
	 * Returns the low word of the double.
	 *
	 * @param __v The input double.
	 * @return The low word of the double.
	 * @since 2018/11/03
	 */
	private static final int __lo(double __v)
	{
		return (int)(Double.doubleToRawLongBits(__v));
	}
}








>







 







|













|











|





103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
...
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
	/**
	 * Logarithm of a number.
	 *
	 * @param __v The input value.
	 * @return The resulting logarithm value.
	 * @since 2018/11/02
	 */
	@SuppressWarnings({"divzero", "NumericOverflow"})
	@ImplementationNote("Source http://www.netlib.org/fdlibm/e_log.c")
	public static double log(double __v)
	{
		double hfsq, f, s, z, r, w, t1, t2, dk;
		int k, hx, i, j;
		int uulx;

................................................................................
	 * Compose high and low value to double.
	 *
	 * @param __hi The high value.
	 * @param __lo The low value.
	 * @return The double value.
	 * @since 2018/11/03
	 */
	private static double __compose(int __hi, int __lo)
	{
		return Double.longBitsToDouble(
			(((long)__hi & 0xFFFFFFFFL) << 32) |
			((long)__lo & 0xFFFFFFFFL));
	}

	/**
	 * Returns the high word of the double.
	 *
	 * @param __v The input double.
	 * @return The high word of the double.
	 * @since 2018/11/03
	 */
	private static int __hi(double __v)
	{
		return (int)(Double.doubleToRawLongBits(__v) >>> 32);
	}

	/**
	 * Returns the low word of the double.
	 *
	 * @param __v The input double.
	 * @return The low word of the double.
	 * @since 2018/11/03
	 */
	private static int __lo(double __v)
	{
		return (int)(Double.doubleToRawLongBits(__v));
	}
}

Changes to modules/cldc-compact/src/main/java/java/io/DataInputStream.java.

472
473
474
475
476
477
478

479
480
481
482
483
484
485
	 * @return The decoded string.
	 * @throws EOFException On end of file.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @throws UTFDataFormatException If the input UTF data is not correct.
	 * @since 2018/12/03
	 */

	public static final String readUTF(DataInput __in)
		throws EOFException, IOException, NullPointerException,
			UTFDataFormatException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		







>







472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
	 * @return The decoded string.
	 * @throws EOFException On end of file.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @throws UTFDataFormatException If the input UTF data is not correct.
	 * @since 2018/12/03
	 */
	@SuppressWarnings("FinalStaticMethod")
	public static final String readUTF(DataInput __in)
		throws EOFException, IOException, NullPointerException,
			UTFDataFormatException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		

Changes to modules/cldc-compact/src/main/java/java/io/PrintStream.java.

31
32
33
34
35
36
37

38
39
40
41
42
43
44
..
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
...
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
...
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
...
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
...
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
...
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
...
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
...
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
 *
 * If not specified, the current system encoding is used.
 *
 * Any characters which are written to the output will be encoded accordingly.
 *
 * @since 2018/09/16
 */

public class PrintStream
	extends OutputStream
	implements Appendable, Closeable
{
	/**
	 * This buffer size for this class has been chosen to be small, since in
	 * most cases this class will either not be used or will be outputting just
................................................................................
	
	/** The position the buffer is at. */
	private int _bat;
	
	/** Error state? */
	private boolean _inerror;
	
	/**
	 * Cache the line separator which is derived from the system properties.
	 *
	 * @since 2018/09/18
	 */
	static
	{
		String nl;
		try
		{
			nl = System.getProperty("line.separator");
................................................................................
	 * Writes to the given stream using the given encoder and with the
	 * specified auto flushing.
	 *
	 * @param __out The stream to write to.
	 * @param __autoflush If auto flushing is to be enabled.
	 * @param __enc The encoder to use to encode characters to bytes.
	 * @throws NullPointerException On null arguments.
	 * @throws UnsupportedEncodingException If the encoding is not supported.
	 * @since 2018/09/17
	 */
	private PrintStream(OutputStream __out, boolean __autoflush, Encoder __enc)
		throws NullPointerException
	{
		if (__out == null || __enc == null)
			throw new NullPointerException("NARG");
................................................................................
	}
	
	/**
	 * Flushes the stream to the output.
	 *
	 * @since 2018/09/21
	 */
	private final void __flush()
	{
		// Nothing to be written at all?
		int bat = this._bat;
		if (bat <= 0)
			return;
		
		// Write individual bytes and detect any exceptions
................................................................................
	/**
	 * Prints the specified string.
	 *
	 * @param __s The string to print, if {@code null} then {@code "null"} is
	 * printed.
	 * @since 2018/09/20
	 */
	private final void __print(String __s)
	{
		synchronized (this)
		{
			// Print null explicitely
			if (__s == null)
				__s = "null";
			
................................................................................
	 * @param __args The arguments.
	 * @return {@code this}.
	 * @throws IllegalArgumentException If the string contains illegal
	 * format specifiers.
	 * @throws NullPointerException If no format was specified.
	 * @since 2018/09/23
	 */
	private final PrintStream __printf(String __fmt, Object... __args)
		throws IllegalArgumentException, NullPointerException
	{
		if (__fmt == null)
			throw new NullPointerException("NARG");
		
		// Generate text to write into a string builder
		StringBuilder sb = new StringBuilder();
................................................................................
		
		return this;
	}
	
	/**
	 * Prints the end of line sequence that is used for the current platform.
	 *
	 * @return The end of line sequence.
	 * @since 2018/09/21
	 */
	private final void __println()
	{
		synchronized (this)
		{
			// If the newline character has not yet been set, use a fallback
			String nl = PrintStream._NEWLINE;
			if (nl == null)
				nl = "\n";
................................................................................
	 * @param __o The offset.
	 * @param __l The length.
	 * @throws IndexOutOfBoundsException If the offset and/or length are
	 * negative or exceed the array bounds.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/21
	 */
	private final void __writeBytes(byte[] __b, int __o, int __l)
		throws IndexOutOfBoundsException, NullPointerException
	{
		if (__b == null)
			throw new NullPointerException("NARG");
		if (__o < 0 || __l < 0 || (__o + __l) > __b.length)
			throw new IndexOutOfBoundsException("IOOB");
		
................................................................................
	
	/**
	 * Writes a single character to the output, encoding it as required.
	 *
	 * @param __c The character to write.
	 * @since 2018/09/19
	 */
	private final void __writeChar(char __c)
	{
		// Encode bytes into the array
		byte[] minienc = this._minienc;
		int wc = this._encoder.encode(__c, minienc, 0, minienc.length);
		
		// {@squirreljme.error ZZ0q Did not expect the buffer to be out of
		// room.}







>







 







|
|
|
|







 







<







 







|







 







|







 







|







 







<


|







 







|







 







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
..
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
...
150
151
152
153
154
155
156

157
158
159
160
161
162
163
...
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
...
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
...
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
...
760
761
762
763
764
765
766

767
768
769
770
771
772
773
774
775
776
...
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
...
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
 *
 * If not specified, the current system encoding is used.
 *
 * Any characters which are written to the output will be encoded accordingly.
 *
 * @since 2018/09/16
 */
@SuppressWarnings("RedundantInterfaceDeclaration")
public class PrintStream
	extends OutputStream
	implements Appendable, Closeable
{
	/**
	 * This buffer size for this class has been chosen to be small, since in
	 * most cases this class will either not be used or will be outputting just
................................................................................
	
	/** The position the buffer is at. */
	private int _bat;
	
	/** Error state? */
	private boolean _inerror;
	
	/*
	  Cache the line separator which is derived from the system properties.
	 
	  @since 2018/09/18
	 */
	static
	{
		String nl;
		try
		{
			nl = System.getProperty("line.separator");
................................................................................
	 * Writes to the given stream using the given encoder and with the
	 * specified auto flushing.
	 *
	 * @param __out The stream to write to.
	 * @param __autoflush If auto flushing is to be enabled.
	 * @param __enc The encoder to use to encode characters to bytes.
	 * @throws NullPointerException On null arguments.

	 * @since 2018/09/17
	 */
	private PrintStream(OutputStream __out, boolean __autoflush, Encoder __enc)
		throws NullPointerException
	{
		if (__out == null || __enc == null)
			throw new NullPointerException("NARG");
................................................................................
	}
	
	/**
	 * Flushes the stream to the output.
	 *
	 * @since 2018/09/21
	 */
	private void __flush()
	{
		// Nothing to be written at all?
		int bat = this._bat;
		if (bat <= 0)
			return;
		
		// Write individual bytes and detect any exceptions
................................................................................
	/**
	 * Prints the specified string.
	 *
	 * @param __s The string to print, if {@code null} then {@code "null"} is
	 * printed.
	 * @since 2018/09/20
	 */
	private void __print(String __s)
	{
		synchronized (this)
		{
			// Print null explicitely
			if (__s == null)
				__s = "null";
			
................................................................................
	 * @param __args The arguments.
	 * @return {@code this}.
	 * @throws IllegalArgumentException If the string contains illegal
	 * format specifiers.
	 * @throws NullPointerException If no format was specified.
	 * @since 2018/09/23
	 */
	private PrintStream __printf(String __fmt, Object... __args)
		throws IllegalArgumentException, NullPointerException
	{
		if (__fmt == null)
			throw new NullPointerException("NARG");
		
		// Generate text to write into a string builder
		StringBuilder sb = new StringBuilder();
................................................................................
		
		return this;
	}
	
	/**
	 * Prints the end of line sequence that is used for the current platform.
	 *

	 * @since 2018/09/21
	 */
	private void __println()
	{
		synchronized (this)
		{
			// If the newline character has not yet been set, use a fallback
			String nl = PrintStream._NEWLINE;
			if (nl == null)
				nl = "\n";
................................................................................
	 * @param __o The offset.
	 * @param __l The length.
	 * @throws IndexOutOfBoundsException If the offset and/or length are
	 * negative or exceed the array bounds.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/21
	 */
	private void __writeBytes(byte[] __b, int __o, int __l)
		throws IndexOutOfBoundsException, NullPointerException
	{
		if (__b == null)
			throw new NullPointerException("NARG");
		if (__o < 0 || __l < 0 || (__o + __l) > __b.length)
			throw new IndexOutOfBoundsException("IOOB");
		
................................................................................
	
	/**
	 * Writes a single character to the output, encoding it as required.
	 *
	 * @param __c The character to write.
	 * @since 2018/09/19
	 */
	private void __writeChar(char __c)
	{
		// Encode bytes into the array
		byte[] minienc = this._minienc;
		int wc = this._encoder.encode(__c, minienc, 0, minienc.length);
		
		// {@squirreljme.error ZZ0q Did not expect the buffer to be out of
		// room.}

Changes to modules/cldc-compact/src/main/java/java/io/Reader.java.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
	{
		if (__l == null)
			throw new NullPointerException("NARG");
		
		this.lock = __l;
	}
	
	public abstract void close()
		throws IOException;
	
	/**
	 * Reads multiple characters.
	 *
	 * @param __c The output characters.
	 * @param __o The offset into the output.
	 * @param __l The number of characters to read.
	 * @return The number of read characters or {@code -1} on end of file.







<
<
<







44
45
46
47
48
49
50



51
52
53
54
55
56
57
	{
		if (__l == null)
			throw new NullPointerException("NARG");
		
		this.lock = __l;
	}
	



	/**
	 * Reads multiple characters.
	 *
	 * @param __c The output characters.
	 * @param __o The offset into the output.
	 * @param __l The number of characters to read.
	 * @return The number of read characters or {@code -1} on end of file.

Changes to modules/cldc-compact/src/main/java/java/io/Writer.java.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
	}
	
	protected Writer(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public abstract void close()
		throws IOException;
	
	public abstract void flush()
		throws IOException;
	
	public abstract void write(char[] __a, int __b, int __c)
		throws IOException;
	
	@Override







<
<
<
<







21
22
23
24
25
26
27




28
29
30
31
32
33
34
	}
	
	protected Writer(Object __a)
	{
		throw new todo.TODO();
	}
	




	public abstract void flush()
		throws IOException;
	
	public abstract void write(char[] __a, int __b, int __c)
		throws IOException;
	
	@Override

Changes to modules/cldc-compact/src/main/java/java/lang/AssertionError.java.

107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
	/**
	 * Converts the given object to a string.
	 *
	 * @param __o The object to convert.
	 * @return The string form of the object.
	 * @since 2018/12/04
	 */
	private static final String __convert(Object __o)
	{
		if (__o == null)
			return "null";
		
		// Just make sure we can convert this
		try
		{







|







107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
	/**
	 * Converts the given object to a string.
	 *
	 * @param __o The object to convert.
	 * @return The string form of the object.
	 * @since 2018/12/04
	 */
	private static String __convert(Object __o)
	{
		if (__o == null)
			return "null";
		
		// Just make sure we can convert this
		try
		{

Changes to modules/cldc-compact/src/main/java/java/lang/Class.java.

403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
...
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
	/**
	 * This checks whether assertions should be **disabled** for this class (or
	 * for the entire package).
	 *
	 * @return The assertions status to use.
	 * @since 2016/10/09
	 */
	private final boolean __checkAssertionStatus()
	{
		// Default to true
		boolean rv = true;
		
		// Determine class name
		String cn = this.getName();
		String prop = Class._ASSERTION_PREFIX + cn;
................................................................................
	
	/**
	 * Returns the root type, the base of the component.
	 *
	 * @return The root type of this type.
	 * @since 2018/09/27
	 */
	private final Class<?> __rootType()
	{
		Class<?> rv = this;
		for (Class<?> r = this; r != null; r = r._data.component())
			rv = r;
		return rv;
	}
	







|







 







|







403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
...
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
	/**
	 * This checks whether assertions should be **disabled** for this class (or
	 * for the entire package).
	 *
	 * @return The assertions status to use.
	 * @since 2016/10/09
	 */
	private boolean __checkAssertionStatus()
	{
		// Default to true
		boolean rv = true;
		
		// Determine class name
		String cn = this.getName();
		String prop = Class._ASSERTION_PREFIX + cn;
................................................................................
	
	/**
	 * Returns the root type, the base of the component.
	 *
	 * @return The root type of this type.
	 * @since 2018/09/27
	 */
	private Class<?> __rootType()
	{
		Class<?> rv = this;
		for (Class<?> r = this; r != null; r = r._data.component())
			rv = r;
		return rv;
	}
	

Changes to modules/cldc-compact/src/main/java/java/lang/Double.java.

71
72
73
74
75
76
77

78
79
80
81
82
83
84
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(Double __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()







>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(Double __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()

Changes to modules/cldc-compact/src/main/java/java/lang/Float.java.

83
84
85
86
87
88
89

90
91
92
93
94
95
96
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(Float __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()







>







83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(Float __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()

Changes to modules/cldc-compact/src/main/java/java/lang/Long.java.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
64
65
66
67
68
69
70

71
72
73
74
75
76
77
...
377
378
379
380
381
382
383
384
385
386
387
388
389
390
// ---------------------------------------------------------------------------

package java.lang;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.JVMFunction;
import cc.squirreljme.runtime.cldc.annotation.ImplementationNote;
import cc.squirreljme.runtime.cldc.asm.ObjectAccess;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

public final class Long
	extends Number
	implements Comparable<Long>
{
................................................................................
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(Long __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()
................................................................................
	 * Returns an unsigned string of the given number and base.
	 *
	 * @param __v The value to translate.
	 * @param __b The number base.
	 * @return The resulting string.
	 * @since 2019/12/25
	 */
	private static final String __unsignedString(long __v, int __b)
	{
		throw new todo.TODO();
	}
}









<







 







>







 







|






9
10
11
12
13
14
15

16
17
18
19
20
21
22
..
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
...
377
378
379
380
381
382
383
384
385
386
387
388
389
390
// ---------------------------------------------------------------------------

package java.lang;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.JVMFunction;
import cc.squirreljme.runtime.cldc.annotation.ImplementationNote;

import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

public final class Long
	extends Number
	implements Comparable<Long>
{
................................................................................
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(Long __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()
................................................................................
	 * Returns an unsigned string of the given number and base.
	 *
	 * @param __v The value to translate.
	 * @param __b The number base.
	 * @return The resulting string.
	 * @since 2019/12/25
	 */
	private static String __unsignedString(long __v, int __b)
	{
		throw new todo.TODO();
	}
}


Changes to modules/cldc-compact/src/main/java/java/lang/Short.java.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
..
60
61
62
63
64
65
66

67
68
69
70
71
72
73
..
83
84
85
86
87
88
89

90
91
92
93
94
95
96
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.lang;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.JVMFunction;
import cc.squirreljme.runtime.cldc.asm.ObjectAccess;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

public final class Short
	extends Number
	implements Comparable<Short>
{
................................................................................
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(Short __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()
................................................................................
	
	@Override
	public float floatValue()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int intValue()







<







 







>







 







>







8
9
10
11
12
13
14

15
16
17
18
19
20
21
..
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
..
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.lang;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.jvm.JVMFunction;

import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

public final class Short
	extends Number
	implements Comparable<Short>
{
................................................................................
	
	@Override
	public byte byteValue()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(Short __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public double doubleValue()
................................................................................
	
	@Override
	public float floatValue()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int intValue()

Changes to modules/cldc-compact/src/main/java/java/lang/String.java.

351
352
353
354
355
356
357

358
359
360
361
362
363
364
....
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
....
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
....
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
	 * @param __o The string to compare against.
	 * @return A negative value if this string precedes the other string, a
	 * positive value if this string procedes the other string, or zero if the
	 * strings are equal.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/02
	 */

	public int compareTo(String __o)
		throws NullPointerException
	{
		// Check
		if (__o == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Checks to see if this string matches the target sequence.
	 *
	 * @param __s The input sequence to check against.
	 * @return If they are the same or not.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/08/15
	 */
	private final boolean __contentEquals(CharSequence __s)
		throws NullPointerException
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// If the two have different lengths they will never be equal
................................................................................
	 * Returns the encoded byte sequence.
	 *
	 * @param __e The encoder to use when writing bytes.
	 * @return The bytes from this string.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/12/08
	 */
	private final byte[] __getBytes(Encoder __e)
		throws NullPointerException
	{
		if (__e == null)
			throw new NullPointerException("NARG");
		
		// Maximum size of sequences that can be encoded
		int msl;
................................................................................
	 * Returns the position where the given string is found.
	 *
	 * @param __b The sequence to find.
	 * @param __i The starting index.
	 * @return The index of the sequence or {@code -1} if it is not found.
	 * @since 2019/05/14
	 */
	private final int __indexOf(CharSequence __b, int __i)
	{
		if (__b == null)
			throw new NullPointerException("NARG");
		
		// Normalize position
		if (__i < 0)
			__i = 0;







>







 







|







 







|







 







|







351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
....
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
....
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
....
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
	 * @param __o The string to compare against.
	 * @return A negative value if this string precedes the other string, a
	 * positive value if this string procedes the other string, or zero if the
	 * strings are equal.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/02
	 */
	@Override
	public int compareTo(String __o)
		throws NullPointerException
	{
		// Check
		if (__o == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Checks to see if this string matches the target sequence.
	 *
	 * @param __s The input sequence to check against.
	 * @return If they are the same or not.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/08/15
	 */
	private boolean __contentEquals(CharSequence __s)
		throws NullPointerException
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// If the two have different lengths they will never be equal
................................................................................
	 * Returns the encoded byte sequence.
	 *
	 * @param __e The encoder to use when writing bytes.
	 * @return The bytes from this string.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/12/08
	 */
	private byte[] __getBytes(Encoder __e)
		throws NullPointerException
	{
		if (__e == null)
			throw new NullPointerException("NARG");
		
		// Maximum size of sequences that can be encoded
		int msl;
................................................................................
	 * Returns the position where the given string is found.
	 *
	 * @param __b The sequence to find.
	 * @param __i The starting index.
	 * @return The index of the sequence or {@code -1} if it is not found.
	 * @since 2019/05/14
	 */
	private int __indexOf(CharSequence __b, int __i)
	{
		if (__b == null)
			throw new NullPointerException("NARG");
		
		// Normalize position
		if (__i < 0)
			__i = 0;

Changes to modules/cldc-compact/src/main/java/java/lang/StringBuffer.java.

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
..
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
...
113
114
115
116
117
118
119
120
121
122
123
124
125

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
...
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
...
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
...
197
198
199
200
201
202
203
204
205
206
207
208
209

210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
...
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
...
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
...
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
...
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303

304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
...
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
...
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
...
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
...
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
...
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
...
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
...
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
...
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
...
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
...
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
...
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
...
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
...
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
...
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
...
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
...
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
...
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
...
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
...
641
642
643
644
645
646
647
648
649
650
651
652

653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
...
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
...
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
...
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730

731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
...
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
...
764
765
766
767
768
769
770
771
772
773
774
775

776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
	 */
	public StringBuffer(CharSequence __a)
	{
		this.builder = new StringBuilder(__a);
	}
	
	/**
	 * See {@link StringBuffer#append(Object)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(Object __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(String __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(StringBuffer)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(StringBuffer __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(CharSequence)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public StringBuffer append(CharSequence __a)
	{
		synchronized (this)
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(CharSequence, int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public StringBuffer append(CharSequence __a, int __b, int __c)
	{
		synchronized (this)
		{
			this.builder.append(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(char[])}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(char[] __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(char[], int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		{
			this.builder.append(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(boolean)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(boolean __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public StringBuffer append(char __a)
	{
		synchronized (this)
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(int __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(long)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(long __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(float)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(float __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#append(double)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(double __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#capacity()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int capacity()
	{
		synchronized (this)
		{
			return this.builder.capacity();
		}
	}
	
	/**
	 * See {@link StringBuffer#charAt(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public char charAt(int __a)
	{
		synchronized (this)
		{
			return this.builder.charAt(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#delete(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer delete(int __a, int __b)
................................................................................
		{
			this.builder.delete(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#deleteCharAt(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer deleteCharAt(int __a)
	{
................................................................................
		{
			this.builder.deleteCharAt(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#ensureCapacity(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void ensureCapacity(int __a)
	{
		synchronized (this)
		{
			this.builder.ensureCapacity(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#getChars(int, int, char[], int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		synchronized (this)
		{
			this.builder.getChars(__a, __b, __c, __d);
		}
	}
	
	/**
	 * See {@link StringBuffer#indexOf(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int indexOf(String __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.indexOf(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#indexOf(String, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int indexOf(String __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.indexOf(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, char[], int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
................................................................................
		{
			this.builder.insert(__a, __b, __c, __d);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, Object)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, Object __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, String __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, char[])}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, char[] __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, CharSequence)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, CharSequence __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, CharSequence, int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
................................................................................
		{
			this.builder.insert(__a, __b, __c, __d);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, boolean)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, boolean __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, char __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, int __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, long)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, long __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, float)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, float __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#insert(int, double)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, double __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#lastIndexOf(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int lastIndexOf(String __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.lastIndexOf(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#lastIndexOf(String, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int lastIndexOf(String __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.lastIndexOf(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuffer#length()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public int length()
	{
		synchronized (this)
		{
			return this.builder.length();
		}
	}
	
	/**
	 * See {@link StringBuffer#replace(int, int, String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		{
			this.builder.replace(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#reverse()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer reverse()
	{
		synchronized (this)
................................................................................
		{
			this.builder.reverse();
			return this;
		}
	}
	
	/**
	 * See {@link StringBuffer#setCharAt(int, char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void setCharAt(int __a, char __b)
	{
................................................................................
		synchronized (this)
		{
			this.builder.setCharAt(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuffer#setLength(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void setLength(int __a)
	{
		synchronized (this)
		{
			this.builder.setLength(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#subSequence(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public CharSequence subSequence(int __a, int __b)
	{
		synchronized (this)
		{
			return this.builder.subSequence(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuffer#substring(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public String substring(int __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.substring(__a);
		}
	}
	
	/**
	 * See {@link StringBuffer#substring(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public String substring(int __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.substring(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuffer#toString()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */

	public String toString()
	{
		synchronized (this)
		{
			return this.builder.toString();
		}
	}
	
	/**
	 * See {@link StringBuffer#trimToSize()}.
	 *
	 * @since 2018/12/08
	 */
	public void trimToSize()
	{
		synchronized (this)
		{
			this.builder.trimToSize();
		}
	}
}








|







 







|







 







|







 







|





>










|







>










|







 







|







 







|







 







|





>










|







 







|







 







|







 







|







 







|













|





>









|







 







|







 







|













|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|




>









|







 







|







 







|







 







|













|






>









|







 







|







 







|




>









|












65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
..
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
...
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
...
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
...
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
...
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
...
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
...
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
...
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
...
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
...
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
...
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
...
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
...
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
...
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
...
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
...
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
...
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
...
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
...
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
...
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
...
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
...
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
...
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
...
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
...
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
...
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
...
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
...
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
...
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
...
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
...
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
...
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
...
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
	 */
	public StringBuffer(CharSequence __a)
	{
		this.builder = new StringBuilder(__a);
	}
	
	/**
	 * See {@link StringBuilder#append(Object)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(Object __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(String __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(StringBuffer)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(StringBuffer __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(CharSequence)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public StringBuffer append(CharSequence __a)
	{
		synchronized (this)
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(CharSequence, int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public StringBuffer append(CharSequence __a, int __b, int __c)
	{
		synchronized (this)
		{
			this.builder.append(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(char[])}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(char[] __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(char[], int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		{
			this.builder.append(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(boolean)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(boolean __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public StringBuffer append(char __a)
	{
		synchronized (this)
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(int __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(long)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(long __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(float)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(float __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#append(double)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer append(double __a)
	{
................................................................................
		{
			this.builder.append(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#capacity()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int capacity()
	{
		synchronized (this)
		{
			return this.builder.capacity();
		}
	}
	
	/**
	 * See {@link StringBuilder#charAt(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public char charAt(int __a)
	{
		synchronized (this)
		{
			return this.builder.charAt(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#delete(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer delete(int __a, int __b)
................................................................................
		{
			this.builder.delete(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#deleteCharAt(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer deleteCharAt(int __a)
	{
................................................................................
		{
			this.builder.deleteCharAt(__a);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#ensureCapacity(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void ensureCapacity(int __a)
	{
		synchronized (this)
		{
			this.builder.ensureCapacity(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#getChars(int, int, char[], int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		synchronized (this)
		{
			this.builder.getChars(__a, __b, __c, __d);
		}
	}
	
	/**
	 * See {@link StringBuilder#indexOf(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int indexOf(String __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.indexOf(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#indexOf(String, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int indexOf(String __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.indexOf(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, char[], int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
................................................................................
		{
			this.builder.insert(__a, __b, __c, __d);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, Object)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, Object __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, String __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, char[])}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, char[] __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, CharSequence)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, CharSequence __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, CharSequence, int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @param __d Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
................................................................................
		{
			this.builder.insert(__a, __b, __c, __d);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, boolean)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, boolean __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, char __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, int __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, long)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, long __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, float)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, float __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#insert(int, double)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer insert(int __a, double __b)
................................................................................
		{
			this.builder.insert(__a, __b);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#lastIndexOf(String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int lastIndexOf(String __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.lastIndexOf(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#lastIndexOf(String, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public int lastIndexOf(String __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.lastIndexOf(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuilder#length()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public int length()
	{
		synchronized (this)
		{
			return this.builder.length();
		}
	}
	
	/**
	 * See {@link StringBuilder#replace(int, int, String)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @param __c Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
................................................................................
		{
			this.builder.replace(__a, __b, __c);
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#reverse()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public StringBuffer reverse()
	{
		synchronized (this)
................................................................................
		{
			this.builder.reverse();
			return this;
		}
	}
	
	/**
	 * See {@link StringBuilder#setCharAt(int, char)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void setCharAt(int __a, char __b)
	{
................................................................................
		synchronized (this)
		{
			this.builder.setCharAt(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuilder#setLength(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @since 2018/12/08
	 */
	public void setLength(int __a)
	{
		synchronized (this)
		{
			this.builder.setLength(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#subSequence(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public CharSequence subSequence(int __a, int __b)
	{
		synchronized (this)
		{
			return this.builder.subSequence(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuilder#substring(int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public String substring(int __a)
	{
................................................................................
		synchronized (this)
		{
			return this.builder.substring(__a);
		}
	}
	
	/**
	 * See {@link StringBuilder#substring(int, int)}.
	 *
	 * @param __a Same as linked documentation.
	 * @param __b Same as linked documentation.
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	public String substring(int __a, int __b)
................................................................................
		synchronized (this)
		{
			return this.builder.substring(__a, __b);
		}
	}
	
	/**
	 * See {@link StringBuilder#toString()}.
	 *
	 * @return Same as linked documentation.
	 * @since 2018/12/08
	 */
	@Override
	public String toString()
	{
		synchronized (this)
		{
			return this.builder.toString();
		}
	}
	
	/**
	 * See {@link StringBuilder#trimToSize()}.
	 *
	 * @since 2018/12/08
	 */
	public void trimToSize()
	{
		synchronized (this)
		{
			this.builder.trimToSize();
		}
	}
}

Changes to modules/cldc-compact/src/main/java/java/lang/StringBuilder.java.

345
346
347
348
349
350
351

352
353
354
355
356
357
358
...
599
600
601
602
603
604
605

606
607
608
609
610
611
612
...
678
679
680
681
682
683
684

685
686
687
688
689
690
691
...
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
	 *
	 * @param __dx The index.
	 * @return The character at the given index.
	 * @throws IndexOutOfBoundsException If the character is outside of
	 * bounds.
	 * @since 2018/09/29
	 */

	public char charAt(int __dx)
		throws IndexOutOfBoundsException
	{
		// {@squirreljme.error ZZ1o Out of bound access. (The index)}
		if (__dx < 0 || __dx >= this._at)
			throw new IndexOutOfBoundsException("ZZ1o " + __dx);
		
................................................................................
	
	/**
	 * Returns the length of the string.
	 *
	 * @return The string length.
	 * @since 2018/09/29
	 */

	public int length()
	{
		return this._at;
	}
	
	public StringBuilder replace(int __a, int __b, String __c)
	{
................................................................................
	 *
	 * @param __s The start.
	 * @param __e The end.
	 * @return The sub-sequence.
	 * @throws IndexOutOfBoundsException If the index is out of bounds.
	 * @since 2019/05/11
	 */

	public CharSequence subSequence(int __s, int __e)
		throws IndexOutOfBoundsException
	{
		return this.substring(__s, __e);
	}
	
	/**
................................................................................
	 * Obtains the buffer, potentially resizing it to fit the given amount
	 * of characters.
	 *
	 * @param __l The number of characters to add.
	 * @return The buffer.
	 * @since 2018/09/23
	 */
	private final char[] __buffer(int __l)
	{
		// Get buffer properties
		char[] buffer = this._buffer;
		int limit = this._limit,
			at = this._at;
		
		// Need to resize the buffer to fit this?







>







 







>







 







>







 







|







345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
...
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
...
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
...
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
	 *
	 * @param __dx The index.
	 * @return The character at the given index.
	 * @throws IndexOutOfBoundsException If the character is outside of
	 * bounds.
	 * @since 2018/09/29
	 */
	@Override
	public char charAt(int __dx)
		throws IndexOutOfBoundsException
	{
		// {@squirreljme.error ZZ1o Out of bound access. (The index)}
		if (__dx < 0 || __dx >= this._at)
			throw new IndexOutOfBoundsException("ZZ1o " + __dx);
		
................................................................................
	
	/**
	 * Returns the length of the string.
	 *
	 * @return The string length.
	 * @since 2018/09/29
	 */
	@Override
	public int length()
	{
		return this._at;
	}
	
	public StringBuilder replace(int __a, int __b, String __c)
	{
................................................................................
	 *
	 * @param __s The start.
	 * @param __e The end.
	 * @return The sub-sequence.
	 * @throws IndexOutOfBoundsException If the index is out of bounds.
	 * @since 2019/05/11
	 */
	@Override
	public CharSequence subSequence(int __s, int __e)
		throws IndexOutOfBoundsException
	{
		return this.substring(__s, __e);
	}
	
	/**
................................................................................
	 * Obtains the buffer, potentially resizing it to fit the given amount
	 * of characters.
	 *
	 * @param __l The number of characters to add.
	 * @return The buffer.
	 * @since 2018/09/23
	 */
	private char[] __buffer(int __l)
	{
		// Get buffer properties
		char[] buffer = this._buffer;
		int limit = this._limit,
			at = this._at;
		
		// Need to resize the buffer to fit this?

Changes to modules/cldc-compact/src/main/java/java/lang/Throwable.java.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.lang;

import cc.squirreljme.jvm.Assembly;
import cc.squirreljme.runtime.cldc.debug.CallTraceElement;
import java.io.PrintStream;

/**
 * This class is the base class for all types which are thrown, itself being a
 * checked exception handled by the compiler.
 *







<







6
7
8
9
10
11
12

13
14
15
16
17
18
19
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.lang;


import cc.squirreljme.runtime.cldc.debug.CallTraceElement;
import java.io.PrintStream;

/**
 * This class is the base class for all types which are thrown, itself being a
 * checked exception handled by the compiler.
 *

Changes to modules/cldc-compact/src/main/java/java/lang/annotation/Annotation.java.

46
47
48
49
50
51
52

53
54
55
56
57
58
59
..
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78

79
80
81
	 * Two arrays are equal if {@code Arrays.equals(a, b)} evaluates to
	 * {@code true}.
	 *
	 * @param __o The other object to check against.
	 * @return {@code true} if they are logically equivalent.
	 * @since 2014/10/13
	 */

	boolean equals(Object __o);
	
	/**
	 * Calculates the hash code which is a sum of the hash codes of its members
	 * in a specifically defined pattern.
	 *
	 * The base hash code for a member is {@code (127 *
................................................................................
	 * returned if they were object types (their wrapper classes) is used. If
	 * an array then {@code Arrays.hashCode()} is used. Otherwise, it is the
	 * normal hashCode of the specified value.
	 *
	 * @return The hash code for this annotation.
	 * @since 2014/10/13
	 */

	int hashCode();
	
	/**
	 * Returns an implementation dependent string which represents the
	 * annotation and all of its values.
	 *
	 * @return The string representation of this annotation.
	 * @since 2014/10/13
	 */

	String toString();
}








>







 







>









>



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
..
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
	 * Two arrays are equal if {@code Arrays.equals(a, b)} evaluates to
	 * {@code true}.
	 *
	 * @param __o The other object to check against.
	 * @return {@code true} if they are logically equivalent.
	 * @since 2014/10/13
	 */
	@Override
	boolean equals(Object __o);
	
	/**
	 * Calculates the hash code which is a sum of the hash codes of its members
	 * in a specifically defined pattern.
	 *
	 * The base hash code for a member is {@code (127 *
................................................................................
	 * returned if they were object types (their wrapper classes) is used. If
	 * an array then {@code Arrays.hashCode()} is used. Otherwise, it is the
	 * normal hashCode of the specified value.
	 *
	 * @return The hash code for this annotation.
	 * @since 2014/10/13
	 */
	@Override
	int hashCode();
	
	/**
	 * Returns an implementation dependent string which represents the
	 * annotation and all of its values.
	 *
	 * @return The string representation of this annotation.
	 * @since 2014/10/13
	 */
	@Override
	String toString();
}

Changes to modules/cldc-compact/src/main/java/java/lang/annotation/ElementType.java.

38
39
40
41
42
43
44
45
46
47
48
	
	/** Parameter of a method. */
	PARAMETER(),
	
	/** A class, interface, or enumeration. */
	TYPE(),
	
	/** End. */
	;
}








|



38
39
40
41
42
43
44
45
46
47
48
	
	/** Parameter of a method. */
	PARAMETER(),
	
	/** A class, interface, or enumeration. */
	TYPE(),
	
	/* End. */
	;
}

Changes to modules/cldc-compact/src/main/java/java/lang/annotation/RetentionPolicy.java.

23
24
25
26
27
28
29
30
31
32
33
	
	/** Kept after compilation and visible at runtime. */
	RUNTIME(),
	
	/** Removed after compilation, does not appear in the class file. */
	SOURCE(),
	
	/** End. */
	;
}








|



23
24
25
26
27
28
29
30
31
32
33
	
	/** Kept after compilation and visible at runtime. */
	RUNTIME(),
	
	/** Removed after compilation, does not appear in the class file. */
	SOURCE(),
	
	/* End. */
	;
}

Changes to modules/cldc-compact/src/main/java/java/security/BasicPermission.java.

46
47
48
49
50
51
52

53
54
55
56
57

58
59
60
61
62

63
64
65
66
67

68
69
70
71
72

73
74
75
76
77
78
	 */
	public BasicPermission(String __name, String __act)
		throws IllegalArgumentException, NullPointerException
	{
		this(__name);
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	

	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
}








>





>





>





>





>






46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
	 */
	public BasicPermission(String __name, String __act)
		throws IllegalArgumentException, NullPointerException
	{
		this(__name);
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
}

Changes to modules/cldc-compact/src/main/java/java/util/AbstractCollection.java.

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This is a basic implementation of a {@link Collection}.
 *
 * Sub-classes are only required to implement {@link #iterator()} and
 * {@link #size()}.
 *
 * To support adding elements {@link add(Object)} must be implemented.
 *
 * To support removing elements {@link Iterator#remove()} must be implemented.
 *
 * @param <E> The element type.
 * @since 2018/09/15
 */
public abstract class AbstractCollection<E>







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This is a basic implementation of a {@link Collection}.
 *
 * Sub-classes are only required to implement {@link #iterator()} and
 * {@link #size()}.
 *
 * To support adding elements {@link #add(Object)} must be implemented.
 *
 * To support removing elements {@link Iterator#remove()} must be implemented.
 *
 * @param <E> The element type.
 * @since 2018/09/15
 */
public abstract class AbstractCollection<E>

Changes to modules/cldc-compact/src/main/java/java/util/AbstractMap.java.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
..
36
37
38
39
40
41
42

43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
58

59
60
61
62
63
64
65
..
90
91
92
93
94
95
96

97
98
99
100
101
102
103
public abstract class AbstractMap<K, V>
	implements Map<K, V>
{
	protected AbstractMap()
	{
	}
	
	public abstract Set<Map.Entry<K, V>> entrySet();
	
	/**
	 * {@inheritDoc}
	 * @since 2018/11/05
	 */
	@Override
	public void clear()
	{
................................................................................
	@Override
	protected Object clone()
		throws CloneNotSupportedException
	{
		return (AbstractMap<?, ?>)super.clone();
	}
	

	public boolean containsKey(Object __a)
	{
		throw new todo.TODO();
	}
	

	public boolean containsValue(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public V get(Object __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	 */
	@Override
	public Set<K> keySet()
	{
		return new __AbstractMapKeySet__<K, V>(this);
	}
	

	public V put(K __a, V __b)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}







<
<







 







>





>











>







 







>







13
14
15
16
17
18
19


20
21
22
23
24
25
26
..
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
..
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
public abstract class AbstractMap<K, V>
	implements Map<K, V>
{
	protected AbstractMap()
	{
	}
	


	/**
	 * {@inheritDoc}
	 * @since 2018/11/05
	 */
	@Override
	public void clear()
	{
................................................................................
	@Override
	protected Object clone()
		throws CloneNotSupportedException
	{
		return (AbstractMap<?, ?>)super.clone();
	}
	
	@Override
	public boolean containsKey(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean containsValue(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public V get(Object __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	 */
	@Override
	public Set<K> keySet()
	{
		return new __AbstractMapKeySet__<K, V>(this);
	}
	
	@Override
	public V put(K __a, V __b)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}

Changes to modules/cldc-compact/src/main/java/java/util/ArrayDeque.java.

31
32
33
34
35
36
37

38
39
40
41
42

43
44
45
46
47
48
49
..
59
60
61
62
63
64
65

66
67
68
69
70

71
72
73
74
75

76
77
78
79
80

81
82
83
84
85
86
87
..
91
92
93
94
95
96
97

98
99
100
101
102

103
104
105
106
107

108
109
110
111
112

113
114
115
116
117

118
119
120
121
122

123
124
125
126
127

128
129
130
131
132

133
134
135
136
137

138
139
140
141
142

143
144
145
146
147

148
149
150
151
152

153
154
155
156
157
158
159
160
161
162
163

164
165
166
167
168

169
170
171
172
173

174
175
176
177
178

179
180
181
182
183
184
185
186
187
188
189
190
	
	@Override
	public boolean add(E __a)
	{
		throw new todo.TODO();
	}
	

	public void addFirst(E __a)
	{
		throw new todo.TODO();
	}
	

	public void addLast(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void clear()
................................................................................
	
	@Override
	public boolean contains(Object __a)
	{
		throw new todo.TODO();
	}
	

	public Iterator<E> descendingIterator()
	{
		throw new todo.TODO();
	}
	

	public E element()
	{
		throw new todo.TODO();
	}
	

	public E getFirst()
	{
		throw new todo.TODO();
	}
	

	public E getLast()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean isEmpty()
................................................................................
	
	@Override
	public Iterator<E> iterator()
	{
		throw new todo.TODO();
	}
	

	public boolean offer(E __a)
	{
		throw new todo.TODO();
	}
	

	public boolean offerFirst(E __a)
	{
		throw new todo.TODO();
	}
	

	public boolean offerLast(E __a)
	{
		throw new todo.TODO();
	}
	

	public E peek()
	{
		throw new todo.TODO();
	}
	

	public E peekFirst()
	{
		throw new todo.TODO();
	}
	

	public E peekLast()
	{
		throw new todo.TODO();
	}
	

	public E poll()
	{
		throw new todo.TODO();
	}
	

	public E pollFirst()
	{
		throw new todo.TODO();
	}
	

	public E pollLast()
	{
		throw new todo.TODO();
	}
	

	public E pop()
	{
		throw new todo.TODO();
	}
	

	public void push(E __a)
	{
		throw new todo.TODO();
	}
	

	public E remove()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean remove(Object __a)
	{
		throw new todo.TODO();
	}
	

	public E removeFirst()
	{
		throw new todo.TODO();
	}
	

	public boolean removeFirstOccurrence(Object __a)
	{
		throw new todo.TODO();
	}
	

	public E removeLast()
	{
		throw new todo.TODO();
	}
	

	public boolean removeLastOccurrence(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public int size()
	{
		throw new todo.TODO();
	}
}








>





>







 







>





>





>





>







 







>





>





>





>





>





>





>





>





>





>





>





>











>





>





>





>












31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
..
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
	
	@Override
	public boolean add(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void addFirst(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void addLast(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void clear()
................................................................................
	
	@Override
	public boolean contains(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public Iterator<E> descendingIterator()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E element()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E getFirst()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E getLast()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean isEmpty()
................................................................................
	
	@Override
	public Iterator<E> iterator()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean offer(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean offerFirst(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean offerLast(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public E peek()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E peekFirst()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E peekLast()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E poll()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E pollFirst()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E pollLast()
	{
		throw new todo.TODO();
	}
	
	@Override
	public E pop()
	{
		throw new todo.TODO();
	}
	
	@Override
	public void push(E __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public E remove()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean remove(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public E removeFirst()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean removeFirstOccurrence(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public E removeLast()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean removeLastOccurrence(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public int size()
	{
		throw new todo.TODO();
	}
}

Changes to modules/cldc-compact/src/main/java/java/util/ArrayList.java.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 *
 * @param <E> The element type.
 * @see Vector
 * @since 2018/09/15
 */
public class ArrayList<E>
	extends AbstractList<E>
	implements List<E>, RandomAccess, Cloneable
{
	/** Capacity growth size. */
	private static final int _GROWTH =
		8;
	
	/** Elements in the list. */
	private E[] _elements;







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 *
 * @param <E> The element type.
 * @see Vector
 * @since 2018/09/15
 */
public class ArrayList<E>
	extends AbstractList<E>
	implements RandomAccess, Cloneable
{
	/** Capacity growth size. */
	private static final int _GROWTH =
		8;
	
	/** Elements in the list. */
	private E[] _elements;

Changes to modules/cldc-compact/src/main/java/java/util/Calendar.java.

183
184
185
186
187
188
189

190
191
192
193
194

195
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
...
243
244
245
246
247
248
249

250
251
252
253
254
255
256
...
319
320
321
322
323
324
325

326
327
328
329
330
331
332
	}
	
	public final void clear(int __a)
	{
		throw new todo.TODO();
	}
	

	public Object clone()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(Calendar __a)
	{
		throw new todo.TODO();
	}
	
	protected void complete()
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int get(int __a)
	{
................................................................................
	}
	
	public TimeZone getTimeZone()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	protected final int internalGet(int __a)
	{
................................................................................
	}
	
	public void setTimeZone(TimeZone __a)
	{
		throw new todo.TODO();
	}
	

	public String toString()
	{
		throw new todo.TODO();
	}
	
	public static Calendar getInstance()
	{







>





>










>







 







>







 







>







183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
...
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
...
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
	}
	
	public final void clear(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public Object clone()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(Calendar __a)
	{
		throw new todo.TODO();
	}
	
	protected void complete()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int get(int __a)
	{
................................................................................
	}
	
	public TimeZone getTimeZone()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	protected final int internalGet(int __a)
	{
................................................................................
	}
	
	public void setTimeZone(TimeZone __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String toString()
	{
		throw new todo.TODO();
	}
	
	public static Calendar getInstance()
	{

Changes to modules/cldc-compact/src/main/java/java/util/Collection.java.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	boolean equals(Object __a);
	
	@Override
	int hashCode();
	
	boolean isEmpty();
	
	Iterator<E> iterator();
	
	boolean remove(Object __a);
	
	boolean removeAll(Collection<?> __a);
	
	boolean retainAll(Collection<?> __a);
	
	int size();







<
<







27
28
29
30
31
32
33


34
35
36
37
38
39
40
	boolean equals(Object __a);
	
	@Override
	int hashCode();
	
	boolean isEmpty();
	


	boolean remove(Object __a);
	
	boolean removeAll(Collection<?> __a);
	
	boolean retainAll(Collection<?> __a);
	
	int size();

Changes to modules/cldc-compact/src/main/java/java/util/Deque.java.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36
37
38
39

40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// ---------------------------------------------------------------------------

package java.util;

public interface Deque<E>
	extends Queue<E>
{
	boolean add(E __a);
	
	void addFirst(E __a);
	
	void addLast(E __a);
	
	boolean contains(Object __a);
	
	Iterator<E> descendingIterator();
	

	E element();
	
	E getFirst();
	
	E getLast();
	
	Iterator<E> iterator();
	
	boolean offer(E __a);
	
	boolean offerFirst(E __a);
	
	boolean offerLast(E __a);
	

	E peek();
	
	E peekFirst();
	
	E peekLast();
	

	E poll();
	
	E pollFirst();
	
	E pollLast();
	
	E pop();
	
	void push(E __a);
	

	E remove();
	
	boolean remove(Object __a);
	
	E removeFirst();
	
	boolean removeFirstOccurrence(Object __a);
	
	E removeLast();
	
	boolean removeLastOccurrence(Object __a);
	
	int size();
}








<





<
<


>






<
<
<
<




>






>










>


<
<








<


9
10
11
12
13
14
15

16
17
18
19
20


21
22
23
24
25
26
27
28
29




30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54


55
56
57
58
59
60
61
62

63
64
// ---------------------------------------------------------------------------

package java.util;

public interface Deque<E>
	extends Queue<E>
{

	
	void addFirst(E __a);
	
	void addLast(E __a);
	


	Iterator<E> descendingIterator();
	
	@Override
	E element();
	
	E getFirst();
	
	E getLast();
	




	boolean offerFirst(E __a);
	
	boolean offerLast(E __a);
	
	@Override
	E peek();
	
	E peekFirst();
	
	E peekLast();
	
	@Override
	E poll();
	
	E pollFirst();
	
	E pollLast();
	
	E pop();
	
	void push(E __a);
	
	@Override
	E remove();
	


	E removeFirst();
	
	boolean removeFirstOccurrence(Object __a);
	
	E removeLast();
	
	boolean removeLastOccurrence(Object __a);
	

}

Changes to modules/cldc-compact/src/main/java/java/util/Formatter.java.

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
...
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
...
387
388
389
390
391
392
393
394

395
396
397
398
399
400
401
...
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
	
	/** Has this been closed? */
	private volatile boolean _closed;
	
	/** The IOException if any was generated. */
	private IOException _ioe;
	
	/**
	 * Cache the line separator which is derived from the system properties.
	 *
	 * @since 2018/10/10
	 */
	static
	{
		String nl;
		try
		{
			nl = System.getProperty("line.separator");
................................................................................
				
				// Just a normal character
				if (c != '%')
				{
					out.append(c);
					
					// Just skip the single character
					next = i + 1;;
					continue;
				}
				
				// It is simpler to handle the parsing of the specifier in
				// another method due to loops and variables
				__PrintFState__ pf = new __PrintFState__(pg);
				next = this.__specifier(pf, i, __fmt);
................................................................................
	
	/**
	 * Formats other unsigned value.
	 *
	 * @param __pf Printing state.
	 * @param __n The number to print.
	 * @param __base The number's base.
	 * @throws 

	 */
	private static String __formatOtherUnsignedInt(__PrintFState__ __pf,
		Number __n, int __base)
		throws NullPointerException
	{
		if (__pf == null)
			throw new NullPointerException("NARG");
................................................................................
		// the precision (byte:-2 becomes 0xFE)
		long input;
		if (__n instanceof Byte)
			input = __n.byteValue() & 0xFF;
		else if (__n instanceof Short)
			input = __n.shortValue() & 0xFFFF;
		else if (__n instanceof Integer)
			input = __n.intValue() & 0xFFFFFFFF;
		else
			input = __n.longValue();
		
		// Bit shift and mask used for the value
		int shift, mask;
		switch (__pf._conv)
		{







|
|
|
|







 







|







 







|
>







 







|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
...
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
...
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
...
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
	
	/** Has this been closed? */
	private volatile boolean _closed;
	
	/** The IOException if any was generated. */
	private IOException _ioe;
	
	/*
	  Cache the line separator which is derived from the system properties.
	 
	  @since 2018/10/10
	 */
	static
	{
		String nl;
		try
		{
			nl = System.getProperty("line.separator");
................................................................................
				
				// Just a normal character
				if (c != '%')
				{
					out.append(c);
					
					// Just skip the single character
					next = i + 1;
					continue;
				}
				
				// It is simpler to handle the parsing of the specifier in
				// another method due to loops and variables
				__PrintFState__ pf = new __PrintFState__(pg);
				next = this.__specifier(pf, i, __fmt);
................................................................................
	
	/**
	 * Formats other unsigned value.
	 *
	 * @param __pf Printing state.
	 * @param __n The number to print.
	 * @param __base The number's base.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/03
	 */
	private static String __formatOtherUnsignedInt(__PrintFState__ __pf,
		Number __n, int __base)
		throws NullPointerException
	{
		if (__pf == null)
			throw new NullPointerException("NARG");
................................................................................
		// the precision (byte:-2 becomes 0xFE)
		long input;
		if (__n instanceof Byte)
			input = __n.byteValue() & 0xFF;
		else if (__n instanceof Short)
			input = __n.shortValue() & 0xFFFF;
		else if (__n instanceof Integer)
			input = __n.intValue();
		else
			input = __n.longValue();
		
		// Bit shift and mask used for the value
		int shift, mask;
		switch (__pf._conv)
		{

Changes to modules/cldc-compact/src/main/java/java/util/HashMap.java.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
...
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
 * If keys are added or removed during iteration then
 * {@link ConcurrentModificationException} will be thrown.
 *
 * @since 2018/10/07
 */
public class HashMap<K, V>
	extends AbstractMap<K, V>
	implements Map<K, V>, Cloneable
{
	/** Internal map. */
	final __BucketMap__<K, V> _map;
	
	/**
	 * Initializes the map with the given capacity and load factor.
	 *
................................................................................
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/10/07
	 */
	@Override
	@SuppressWarnings({"unchecked"})
	public Set<Map.Entry<K, V>> entrySet()
	{
		return this._map.entrySet();
	}
	
	/**
	 * {@inheritDoc}







|







 







<







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
...
167
168
169
170
171
172
173

174
175
176
177
178
179
180
 * If keys are added or removed during iteration then
 * {@link ConcurrentModificationException} will be thrown.
 *
 * @since 2018/10/07
 */
public class HashMap<K, V>
	extends AbstractMap<K, V>
	implements Cloneable
{
	/** Internal map. */
	final __BucketMap__<K, V> _map;
	
	/**
	 * Initializes the map with the given capacity and load factor.
	 *
................................................................................
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/10/07
	 */
	@Override

	public Set<Map.Entry<K, V>> entrySet()
	{
		return this._map.entrySet();
	}
	
	/**
	 * {@inheritDoc}

Changes to modules/cldc-compact/src/main/java/java/util/HashSet.java.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

package java.util;

import cc.squirreljme.runtime.cldc.annotation.ImplementationNote;

public class HashSet<E>
	extends AbstractSet<E>
	implements Set<E>, Cloneable
{
	/** Internal map. */
	private final __BucketMap__<E, Object> _map;
	
	/**
	 * Initializes the set with the given capacity and load factor.
	 *







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

package java.util;

import cc.squirreljme.runtime.cldc.annotation.ImplementationNote;

public class HashSet<E>
	extends AbstractSet<E>
	implements Cloneable
{
	/** Internal map. */
	private final __BucketMap__<E, Object> _map;
	
	/**
	 * Initializes the set with the given capacity and load factor.
	 *

Changes to modules/cldc-compact/src/main/java/java/util/Hashtable.java.

190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2019/05/05
	 */
	@Override
	@SuppressWarnings({"unchecked"})
	public Set<Map.Entry<K, V>> entrySet()
	{
		synchronized (this)
		{
			return new SynchronizedEntrySetNotNull<K, V>(this,
				this._map.entrySet());
		}







<







190
191
192
193
194
195
196

197
198
199
200
201
202
203
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2019/05/05
	 */
	@Override

	public Set<Map.Entry<K, V>> entrySet()
	{
		synchronized (this)
		{
			return new SynchronizedEntrySetNotNull<K, V>(this,
				this._map.entrySet());
		}

Changes to modules/cldc-compact/src/main/java/java/util/LinkedHashMap.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 * @param <K> The key type.
 * @param <V> The value type.
 * @see HashMap
 * @since 2019/05/09
 */
public class LinkedHashMap<K, V>
	extends HashMap<K, V>
	implements Map<K, V>
{
	/**
	 * Initializes the set with the given capacity and load factor.
	 *
	 * @param __cap The capacity used.
	 * @param __load The load factor used.
	 * @throws IllegalArgumentException If the capacity is negative or the







<







19
20
21
22
23
24
25

26
27
28
29
30
31
32
 * @param <K> The key type.
 * @param <V> The value type.
 * @see HashMap
 * @since 2019/05/09
 */
public class LinkedHashMap<K, V>
	extends HashMap<K, V>

{
	/**
	 * Initializes the set with the given capacity and load factor.
	 *
	 * @param __cap The capacity used.
	 * @param __load The load factor used.
	 * @throws IllegalArgumentException If the capacity is negative or the

Changes to modules/cldc-compact/src/main/java/java/util/LinkedHashSet.java.

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 *
 * @param <E> The element type to store.
 * @see HashSet
 * @since 2018/11/01
 */
public class LinkedHashSet<E>
	extends HashSet<E>
	implements Set<E>, Cloneable
{
	/**
	 * Initializes the set with the given capacity and load factor.
	 *
	 * @param __initcap The capacity used.
	 * @param __load The load factor used.
	 * @throws IllegalArgumentException If the capacity is negative or the







<







18
19
20
21
22
23
24

25
26
27
28
29
30
31
 *
 * @param <E> The element type to store.
 * @see HashSet
 * @since 2018/11/01
 */
public class LinkedHashSet<E>
	extends HashSet<E>

{
	/**
	 * Initializes the set with the given capacity and load factor.
	 *
	 * @param __initcap The capacity used.
	 * @param __load The load factor used.
	 * @throws IllegalArgumentException If the capacity is negative or the

Changes to modules/cldc-compact/src/main/java/java/util/LinkedList.java.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 * @param <E> The type of element to store.
 * @since 2016/09/05
 */
@ImplementationNote("For simplicity this uses base anchor nodes for the " +
	"head and tail of the list.")
public class LinkedList<E>
	extends AbstractSequentialList<E>
	implements List<E>, Deque<E>, Cloneable
{
	/** The list head. */
	final __Link__<E> _head =
		new __Link__<E>(null, null, null);
	
	/** The list tail, this gets linked into the head. */
	final __Link__<E> _tail =







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 * @param <E> The type of element to store.
 * @since 2016/09/05
 */
@ImplementationNote("For simplicity this uses base anchor nodes for the " +
	"head and tail of the list.")
public class LinkedList<E>
	extends AbstractSequentialList<E>
	implements Deque<E>, Cloneable
{
	/** The list head. */
	final __Link__<E> _head =
		new __Link__<E>(null, null, null);
	
	/** The list tail, this gets linked into the head. */
	final __Link__<E> _tail =

Changes to modules/cldc-compact/src/main/java/java/util/List.java.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

76
77
78
// ---------------------------------------------------------------------------

package java.util;

public interface List<E>
	extends Collection<E>
{
	boolean add(E __a);
	
	void add(int __a, E __b);
	
	boolean addAll(Collection<? extends E> __a);
	
	boolean addAll(int __a, Collection<? extends E> __b);
	
	void clear();
	
	boolean contains(Object __a);
	
	boolean containsAll(Collection<?> __a);
	
	@Override
	boolean equals(Object __a);
	
	/**
	 * Gets the value at the specified index.
	 *
	 * @param __i The index to get.
	 * @return The value at this index.
	 * @throws IndexOutOfBoundsException If the index it out of bounds for the
	 * list.
	 * @since 2018/12/07
	 */
	E get(int __i)
		throws IndexOutOfBoundsException;
	
	@Override
	int hashCode();
	
	int indexOf(Object __a);
	
	boolean isEmpty();
	
	Iterator<E> iterator();
	
	int lastIndexOf(Object __a);
	
	ListIterator<E> listIterator();
	
	ListIterator<E> listIterator(int __a);
	
	boolean remove(Object __a);
	
	E remove(int __a);
	
	boolean removeAll(Collection<?> __a);
	
	boolean retainAll(Collection<?> __a);
	
	E set(int __a, E __b);
	
	int size();
	
	List<E> subList(int __a, int __b);
	
	Object[] toArray();
	

	<T> T[] toArray(T[] __a);
}








<



<
<


<
<
<
<
<
<
<
<
<












<
<
<


<
<
<
<






<
<


<
<
<
<


<
<


<
<
>



9
10
11
12
13
14
15

16
17
18


19
20









21
22
23
24
25
26
27
28
29
30
31
32



33
34




35
36
37
38
39
40


41
42




43
44


45
46


47
48
49
50
// ---------------------------------------------------------------------------

package java.util;

public interface List<E>
	extends Collection<E>
{

	
	void add(int __a, E __b);
	


	boolean addAll(int __a, Collection<? extends E> __b);
	









	/**
	 * Gets the value at the specified index.
	 *
	 * @param __i The index to get.
	 * @return The value at this index.
	 * @throws IndexOutOfBoundsException If the index it out of bounds for the
	 * list.
	 * @since 2018/12/07
	 */
	E get(int __i)
		throws IndexOutOfBoundsException;
	



	int indexOf(Object __a);
	




	int lastIndexOf(Object __a);
	
	ListIterator<E> listIterator();
	
	ListIterator<E> listIterator(int __a);
	


	E remove(int __a);
	




	E set(int __a, E __b);
	


	List<E> subList(int __a, int __b);
	


	@Override
	<T> T[] toArray(T[] __a);
}

Changes to modules/cldc-compact/src/main/java/java/util/Queue.java.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// ---------------------------------------------------------------------------

package java.util;

public interface Queue<E>
	extends Collection<E>
{
	boolean add(E __a);
	
	E element();
	
	boolean offer(E __a);
	
	E peek();
	
	E poll();
	
	E remove();
}








<












9
10
11
12
13
14
15

16
17
18
19
20
21
22
23
24
25
26
27
// ---------------------------------------------------------------------------

package java.util;

public interface Queue<E>
	extends Collection<E>
{

	
	E element();
	
	boolean offer(E __a);
	
	E peek();
	
	E poll();
	
	E remove();
}

Changes to modules/cldc-compact/src/main/java/java/util/Set.java.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// ---------------------------------------------------------------------------

package java.util;

public interface Set<E>
	extends Collection<E>
{
	@Override
	boolean add(E __a);
	
	@Override
	boolean addAll(Collection<? extends E> __a);
	
	@Override
	void clear();
	
	@Override
	boolean contains(Object __a);
	
	@Override
	boolean containsAll(Collection<?> __a);
	
	@Override
	boolean equals(Object __a);
	
	@Override
	int hashCode();
	
	@Override
	boolean isEmpty();
	
	@Override
	Iterator<E> iterator();
	
	@Override
	boolean remove(Object __a);
	
	@Override
	boolean removeAll(Collection<?> __a);
	
	@Override
	boolean retainAll(Collection<?> __a);
	
	@Override
	int size();
	
	@Override
	Object[] toArray();
	
	@Override
	<T> T[] toArray(T[] __a);
}









<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<






9
10
11
12
13
14
15









































16
17
18
19
20
21
// ---------------------------------------------------------------------------

package java.util;

public interface Set<E>
	extends Collection<E>
{









































	
	@Override
	<T> T[] toArray(T[] __a);
}


Changes to modules/cldc-compact/src/main/java/java/util/StringTokenizer.java.

29
30
31
32
33
34
35

36
37
38
39
40
41
42
43
44
45

46
47
48
49
50
51
52
	}
	
	public int countTokens()
	{
		throw new todo.TODO();
	}
	

	public boolean hasMoreElements()
	{
		throw new todo.TODO();
	}
	
	public boolean hasMoreTokens()
	{
		throw new todo.TODO();
	}
	

	public Object nextElement()
	{
		throw new todo.TODO();
	}
	
	public String nextToken()
	{







>










>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	}
	
	public int countTokens()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean hasMoreElements()
	{
		throw new todo.TODO();
	}
	
	public boolean hasMoreTokens()
	{
		throw new todo.TODO();
	}
	
	@Override
	public Object nextElement()
	{
		throw new todo.TODO();
	}
	
	public String nextToken()
	{

Changes to modules/cldc-compact/src/main/java/java/util/Vector.java.

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2019/05/14
	 */
	@Override
	@SuppressWarnings({"unchecked"})
	public void add(int __i, E __v)
	{
		synchronized (this)
		{
			int size = this.elementCount;
			if (__i < 0 || __i > size)
				throw new IndexOutOfBoundsException("IOOB");







<







81
82
83
84
85
86
87

88
89
90
91
92
93
94
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2019/05/14
	 */
	@Override

	public void add(int __i, E __v)
	{
		synchronized (this)
		{
			int size = this.elementCount;
			if (__i < 0 || __i > size)
				throw new IndexOutOfBoundsException("IOOB");

Changes to modules/cldc-compact/src/main/java/java/util/WeakHashMap.java.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

package java.util;

import java.lang.ref.ReferenceQueue;

public class WeakHashMap<K, V>
	extends AbstractMap<K, V>
	implements Map<K, V>
{
	/** The default capacity. */
	private static final int _DEFAULT_CAPACITY =
		16;
	
	/** The default load factor. */
	private static final float _DEFAULT_LOAD =







<







10
11
12
13
14
15
16

17
18
19
20
21
22
23

package java.util;

import java.lang.ref.ReferenceQueue;

public class WeakHashMap<K, V>
	extends AbstractMap<K, V>

{
	/** The default capacity. */
	private static final int _DEFAULT_CAPACITY =
		16;
	
	/** The default load factor. */
	private static final float _DEFAULT_LOAD =

Changes to modules/cldc-compact/src/main/java/java/util/__AbstractListListIterator__.java.

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
	
	/**
	 * Checks if the list was concurrently modified.
	 *
	 * @throws ConcurrentModificationException If it was modified.
	 * @since 2018/10/29
	 */
	private final void __checkConcurrent()
		throws ConcurrentModificationException
	{
		// {@squirreljme.error ZZ2d List has been concurrently modified.}
		if (this._atmod != this.owner.modCount)
			throw new ConcurrentModificationException("ZZ2d");
	}
}








|








223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
	
	/**
	 * Checks if the list was concurrently modified.
	 *
	 * @throws ConcurrentModificationException If it was modified.
	 * @since 2018/10/29
	 */
	private void __checkConcurrent()
		throws ConcurrentModificationException
	{
		// {@squirreljme.error ZZ2d List has been concurrently modified.}
		if (this._atmod != this.owner.modCount)
			throw new ConcurrentModificationException("ZZ2d");
	}
}

Changes to modules/cldc-compact/src/main/java/java/util/__LinkedListListIterator__.java.

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
	
	/**
	 * Checks if the list was concurrently modified.
	 *
	 * @throws ConcurrentModificationException If it was modified.
	 * @since 2018/10/29
	 */
	private final void __checkConcurrent()
		throws ConcurrentModificationException
	{
		// {@squirreljme.error ZZ2w List has been concurrently modified.}
		if (this._atmod != this.list.modCount)
		{
			// Just empty these out so they are never used again
			this._next = null;







|







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
	
	/**
	 * Checks if the list was concurrently modified.
	 *
	 * @throws ConcurrentModificationException If it was modified.
	 * @since 2018/10/29
	 */
	private void __checkConcurrent()
		throws ConcurrentModificationException
	{
		// {@squirreljme.error ZZ2w List has been concurrently modified.}
		if (this._atmod != this.list.modCount)
		{
			// Just empty these out so they are never used again
			this._next = null;

Changes to modules/cldc-compact/src/main/java/java/util/__PrintFCategory__.java.

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	
	/** Percent. */
	PERCENT,
	
	/** Line Separator. */
	LINE_SEPARATOR,
	
	/** End. */
	;
	
	/**
	 * Is the specified flag valid?
	 *
	 * @param __f The flag to check.
	 * @return If it is valid.







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	
	/** Percent. */
	PERCENT,
	
	/** Line Separator. */
	LINE_SEPARATOR,
	
	/* End. */
	;
	
	/**
	 * Is the specified flag valid?
	 *
	 * @param __f The flag to check.
	 * @return If it is valid.

Changes to modules/cldc-compact/src/main/java/java/util/__PrintFConversion__.java.

130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
...
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
	
	/** ISO 8601 Date: %tY-%tm-%td. */
	DATE_ISO8601,
	
	/** Date and time as: %ta %tb %td %tT %tZ %tY. */
	DATE_LONG_FORMAT,
	
	/** End. */
	;
	
	/**
	 * Returns the category of this conversion.
	 *
	 * @return The conversion category.
	 * @since 2018/09/29
................................................................................
	 * Returns the conversion that is used for the characters.
	 *
	 * @param __f The first character.
	 * @param __s The second character.
	 * @return The conversion or {@code null} if it is not valid.
	 * @since 2018/09/28
	 */
	static final __PrintFConversion__ __decode(int __f, int __s)
	{
		// There are a ton of date formats, so just if a date is used do
		// not bother
		if (__f != 't' && __f != 'T')
			switch (__f)
			{
				case '%':	return __PrintFConversion__.PERCENT;







|







 







|







130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
...
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
	
	/** ISO 8601 Date: %tY-%tm-%td. */
	DATE_ISO8601,
	
	/** Date and time as: %ta %tb %td %tT %tZ %tY. */
	DATE_LONG_FORMAT,
	
	/* End. */
	;
	
	/**
	 * Returns the category of this conversion.
	 *
	 * @return The conversion category.
	 * @since 2018/09/29
................................................................................
	 * Returns the conversion that is used for the characters.
	 *
	 * @param __f The first character.
	 * @param __s The second character.
	 * @return The conversion or {@code null} if it is not valid.
	 * @since 2018/09/28
	 */
	static __PrintFConversion__ __decode(int __f, int __s)
	{
		// There are a ton of date formats, so just if a date is used do
		// not bother
		if (__f != 't' && __f != 'T')
			switch (__f)
			{
				case '%':	return __PrintFConversion__.PERCENT;

Changes to modules/cldc-compact/src/main/java/java/util/__PrintFFlag__.java.

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
..
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
	
	/** Locale specific grouping specifiers. */
	LOCALE_GROUPING,
	
	/** Negative numbers in parenthesis. */
	NEGATIVE_PARENTHESIS,
	
	/** End. */
	;
	
	/** Internal values. */
	private static final __PrintFFlag__[] _VALUES =
		__PrintFFlag__.values();
	
	/** The number of flags used. */
................................................................................
	 * Returns the value for the given ordinal/
	 *
	 * @param __i The ordinal.
	 * @return The flag.
	 * @throws IndexOutOfBoundsException If the ordinal is out of range.
	 * @since 2018/09/29
	 */
	public static final __PrintFFlag__ valueOf(int __i)
		throws IndexOutOfBoundsException
	{
		if (__i < 0 || __i >= __PrintFFlag__.COUNT)
			throw new IndexOutOfBoundsException("IOOB");
		return __PrintFFlag__._VALUES[__i];
	}
	
................................................................................
	/**
	 * Decodes the given character to a flag.
	 *
	 * @param __c The character to decode.
	 * @return The flag for the character or {@code null} if it is not valid.
	 * @since 2018/09/24
	 */
	static final __PrintFFlag__ __decode(char __c)
	{
		switch (__c)
		{
			case '-':	return __PrintFFlag__.LEFT_JUSTIFIED;
			case '#':	return __PrintFFlag__.ALTERNATIVE_FORM;
			case '+':	return __PrintFFlag__.ALWAYS_SIGNED;
			case ' ':	return __PrintFFlag__.SPACE_FOR_POSITIVE;







|







 







|







 







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
..
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
	
	/** Locale specific grouping specifiers. */
	LOCALE_GROUPING,
	
	/** Negative numbers in parenthesis. */
	NEGATIVE_PARENTHESIS,
	
	/* End. */
	;
	
	/** Internal values. */
	private static final __PrintFFlag__[] _VALUES =
		__PrintFFlag__.values();
	
	/** The number of flags used. */
................................................................................
	 * Returns the value for the given ordinal/
	 *
	 * @param __i The ordinal.
	 * @return The flag.
	 * @throws IndexOutOfBoundsException If the ordinal is out of range.
	 * @since 2018/09/29
	 */
	public static __PrintFFlag__ valueOf(int __i)
		throws IndexOutOfBoundsException
	{
		if (__i < 0 || __i >= __PrintFFlag__.COUNT)
			throw new IndexOutOfBoundsException("IOOB");
		return __PrintFFlag__._VALUES[__i];
	}
	
................................................................................
	/**
	 * Decodes the given character to a flag.
	 *
	 * @param __c The character to decode.
	 * @return The flag for the character or {@code null} if it is not valid.
	 * @since 2018/09/24
	 */
	static __PrintFFlag__ __decode(char __c)
	{
		switch (__c)
		{
			case '-':	return __PrintFFlag__.LEFT_JUSTIFIED;
			case '#':	return __PrintFFlag__.ALTERNATIVE_FORM;
			case '+':	return __PrintFFlag__.ALWAYS_SIGNED;
			case ' ':	return __PrintFFlag__.SPACE_FOR_POSITIVE;

Changes to modules/cldc-compact/src/main/java/java/util/__PrintFState__.java.

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
..
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
		this._global = __pg;
	}
	
	/**
	 * Returns the specified argument.
	 *
	 * @param <C> The return type.
	 * @param __i The index.
	 * @return The argument value.
	 * @throws IllegalArgumentException If the argument is not valid.
	 * @throws NullPointerException If no class was specified.
	 * @since 2018/09/29
	 */
	final <C> C __argument(Class<C> __cl)
		throws IllegalArgumentException, NullPointerException
................................................................................
		return rv;
	}
	
	/**
	 * Returns the specified argument.
	 *
	 * @param <C> The return type.
	 * @param __i The index.
	 * @param __def The default value, if the input is null then this will
	 * be returned.
	 * @return The argument value or the default if it was null.
	 * @throws IllegalArgumentException If the argument is not valid.
	 * @throws NullPointerException If no class was specified.
	 * @since 2018/09/29
	 */







|







 







|







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
..
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
		this._global = __pg;
	}
	
	/**
	 * Returns the specified argument.
	 *
	 * @param <C> The return type.
	 * @param __cl The class type.
	 * @return The argument value.
	 * @throws IllegalArgumentException If the argument is not valid.
	 * @throws NullPointerException If no class was specified.
	 * @since 2018/09/29
	 */
	final <C> C __argument(Class<C> __cl)
		throws IllegalArgumentException, NullPointerException
................................................................................
		return rv;
	}
	
	/**
	 * Returns the specified argument.
	 *
	 * @param <C> The return type.
	 * @param __cl The class type.
	 * @param __def The default value, if the input is null then this will
	 * be returned.
	 * @return The argument value or the default if it was null.
	 * @throws IllegalArgumentException If the argument is not valid.
	 * @throws NullPointerException If no class was specified.
	 * @since 2018/09/29
	 */

Changes to modules/cldc-compact/src/main/java/todo/__Utilities__.java.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
		}
	}
	
	/**
	 * Dumps the trace to the output using the normal trace logic.
	 *
	 * @param __a Letter A.
	 * @param __a Letter B.
	 * @param __trace The trace to print for.
	 * @since 2020/03/15
	 */
	@SuppressWarnings("StaticVariableUsedBeforeInitialization")
	public static void dumpTrace(char __a, char __b, int[] __trace,
		Object[] __args)
	{







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
		}
	}
	
	/**
	 * Dumps the trace to the output using the normal trace logic.
	 *
	 * @param __a Letter A.
	 * @param __b Letter B.
	 * @param __trace The trace to print for.
	 * @since 2020/03/15
	 */
	@SuppressWarnings("StaticVariableUsedBeforeInitialization")
	public static void dumpTrace(char __a, char __b, int[] __trace,
		Object[] __args)
	{

Changes to modules/cldc/src/main/java/java/nio/Buffer.java.

13
14
15
16
17
18
19



























20
21
22
23
24
25
26
public abstract class Buffer
{
	Buffer()
	{
		throw new todo.TODO();
	}
	



























	public final int capacity()
	{
		throw new todo.TODO();
	}
	
	public final Buffer clear()
	{







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public abstract class Buffer
{
	Buffer()
	{
		throw new todo.TODO();
	}
	
	/**
	 * Returns the array of the buffer.
	 *
	 * @return The array buffer.
	 * @since 2020/03/26
	 */
	@SuppressWarnings("unused")
	abstract Object array();
	
	/**
	 * Does this have an array?
	 *
	 * @return If this has an array.
	 * @since 2020/03/26
	 */
	@SuppressWarnings("unused")
	abstract boolean hasArray();
	
	/**
	 * Returns the offset of the array.
	 *
	 * @return The array offset.
	 * @since 2020/03/26
	 */
	@SuppressWarnings("unused")
	abstract int arrayOffset();
	
	public final int capacity()
	{
		throw new todo.TODO();
	}
	
	public final Buffer clear()
	{

Changes to modules/cldc/src/main/java/java/nio/ByteBuffer.java.

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
..
57
58
59
60
61
62
63

64
65
66
67
68

69
70
71
72
73

74
75
76
77
78
79
80
..
88
89
90
91
92
93
94

95
96
97
98
99
100
101
	
	public abstract int getInt(int __a);
	
	public abstract short getShort();
	
	public abstract short getShort(int __a);
	
	public abstract boolean isDirect();
	
	public abstract ByteBuffer put(byte __a);
	
	public abstract ByteBuffer put(int __a, byte __b);
	
	public abstract ByteBuffer putFloat(float __a);
	
	public abstract ByteBuffer putFloat(int __a, float __b);
................................................................................
	
	public abstract ByteBuffer putShort(short __a);
	
	public abstract ByteBuffer putShort(int __a, short __b);
	
	public abstract ByteBuffer slice();
	

	public final byte[] array()
	{
		throw new todo.TODO();
	}
	

	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(ByteBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public ByteBuffer get(byte[] __a)
	{
		throw new todo.TODO();
	}
	

	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()







<
<







 







>





>





>







 







>







37
38
39
40
41
42
43


44
45
46
47
48
49
50
..
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
..
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
	
	public abstract int getInt(int __a);
	
	public abstract short getShort();
	
	public abstract short getShort(int __a);
	


	public abstract ByteBuffer put(byte __a);
	
	public abstract ByteBuffer put(int __a, byte __b);
	
	public abstract ByteBuffer putFloat(float __a);
	
	public abstract ByteBuffer putFloat(int __a, float __b);
................................................................................
	
	public abstract ByteBuffer putShort(short __a);
	
	public abstract ByteBuffer putShort(int __a, short __b);
	
	public abstract ByteBuffer slice();
	
	@Override
	public final byte[] array()
	{
		throw new todo.TODO();
	}
	
	@Override
	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(ByteBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public ByteBuffer get(byte[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()

Changes to modules/cldc/src/main/java/java/nio/FloatBuffer.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40

41
42
43
44
45

46
47
48
49
50
51
52
..
60
61
62
63
64
65
66

67
68
69
70
71
72
73
		throw new todo.TODO();
	}
	
	public abstract float get();
	
	public abstract float get(int __a);
	
	public abstract boolean isDirect();
	
	public abstract ByteOrder order();
	
	public abstract FloatBuffer put(float __a);
	
	public abstract FloatBuffer put(int __a, float __b);
	
	public abstract FloatBuffer slice();
	

	public final float[] array()
	{
		throw new todo.TODO();
	}
	

	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(FloatBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public FloatBuffer get(float[] __a)
	{
		throw new todo.TODO();
	}
	

	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()







<
<








>





>





>







 







>







19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
		throw new todo.TODO();
	}
	
	public abstract float get();
	
	public abstract float get(int __a);
	


	public abstract ByteOrder order();
	
	public abstract FloatBuffer put(float __a);
	
	public abstract FloatBuffer put(int __a, float __b);
	
	public abstract FloatBuffer slice();
	
	@Override
	public final float[] array()
	{
		throw new todo.TODO();
	}
	
	@Override
	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(FloatBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public FloatBuffer get(float[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()

Changes to modules/cldc/src/main/java/java/nio/IntBuffer.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40

41
42
43
44
45

46
47
48
49
50
51
52
..
60
61
62
63
64
65
66

67
68
69
70
71
72
73
		throw new todo.TODO();
	}
	
	public abstract int get();
	
	public abstract int get(int __a);
	
	public abstract boolean isDirect();
	
	public abstract ByteOrder order();
	
	public abstract IntBuffer put(int __a);
	
	public abstract IntBuffer put(int __a, int __b);
	
	public abstract IntBuffer slice();
	

	public final int[] array()
	{
		throw new todo.TODO();
	}
	

	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(IntBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public IntBuffer get(int[] __a)
	{
		throw new todo.TODO();
	}
	

	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()







<
<








>





>





>







 







>







19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
		throw new todo.TODO();
	}
	
	public abstract int get();
	
	public abstract int get(int __a);
	


	public abstract ByteOrder order();
	
	public abstract IntBuffer put(int __a);
	
	public abstract IntBuffer put(int __a, int __b);
	
	public abstract IntBuffer slice();
	
	@Override
	public final int[] array()
	{
		throw new todo.TODO();
	}
	
	@Override
	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(IntBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public IntBuffer get(int[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()

Changes to modules/cldc/src/main/java/java/nio/ShortBuffer.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40

41
42
43
44
45

46
47
48
49
50
51
52
..
60
61
62
63
64
65
66

67
68
69
70
71
72
73
		throw new todo.TODO();
	}
	
	public abstract short get();
	
	public abstract short get(int __a);
	
	public abstract boolean isDirect();
	
	public abstract ByteOrder order();
	
	public abstract ShortBuffer put(short __a);
	
	public abstract ShortBuffer put(int __a, short __b);
	
	public abstract ShortBuffer slice();
	

	public final short[] array()
	{
		throw new todo.TODO();
	}
	

	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(ShortBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public ShortBuffer get(short[] __a)
	{
		throw new todo.TODO();
	}
	

	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()







<
<








>





>





>







 







>







19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
		throw new todo.TODO();
	}
	
	public abstract short get();
	
	public abstract short get(int __a);
	


	public abstract ByteOrder order();
	
	public abstract ShortBuffer put(short __a);
	
	public abstract ShortBuffer put(int __a, short __b);
	
	public abstract ShortBuffer slice();
	
	@Override
	public final short[] array()
	{
		throw new todo.TODO();
	}
	
	@Override
	public final int arrayOffset()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(ShortBuffer __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
................................................................................
	}
	
	public ShortBuffer get(short[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public final boolean hasArray()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()

Changes to modules/cldc/src/main/java/java/nio/channels/Channel.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.channels;

import java.io.Closeable;
import java.io.IOException;

public interface Channel
	extends Closeable
{
	void close()
		throws IOException;
	
	boolean isOpen();
}








<




<
<




7
8
9
10
11
12
13

14
15
16
17


18
19
20
21
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.channels;

import java.io.Closeable;


public interface Channel
	extends Closeable
{


	
	boolean isOpen();
}

Changes to modules/cldc/src/main/java/java/nio/channels/FileChannel.java.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
	{
		throw new todo.TODO();
	}
	
	public abstract void force(boolean __a)
		throws IOException;
	
	public abstract long position()
		throws IOException;
	
	public abstract FileChannel position(long __a)
		throws IOException;
	
	public abstract int read(ByteBuffer __a)
		throws IOException;
	
	public abstract int read(ByteBuffer __a, long __b)
		throws IOException;
	
	public abstract long size()
		throws IOException;
	
	public abstract FileChannel truncate(long __a)
		throws IOException;
	
	public abstract int write(ByteBuffer __a)
		throws IOException;
	
	public abstract int write(ByteBuffer __a, long __b)
		throws IOException;
	
	public static FileChannel open(Path __a, Set<? extends OpenOption> __b,
		FileAttribute<?>... __c)
		throws IOException
	{







|
<
<



<
<
<



|
<
<



<
<
<







24
25
26
27
28
29
30
31


32
33
34



35
36
37
38


39
40
41



42
43
44
45
46
47
48
	{
		throw new todo.TODO();
	}
	
	public abstract void force(boolean __a)
		throws IOException;
	
	@Override


	public abstract FileChannel position(long __a)
		throws IOException;
	



	public abstract int read(ByteBuffer __a, long __b)
		throws IOException;
	
	@Override


	public abstract FileChannel truncate(long __a)
		throws IOException;
	



	public abstract int write(ByteBuffer __a, long __b)
		throws IOException;
	
	public static FileChannel open(Path __a, Set<? extends OpenOption> __b,
		FileAttribute<?>... __c)
		throws IOException
	{

Changes to modules/cldc/src/main/java/java/nio/channels/SeekableByteChannel.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.channels;

import java.io.IOException;
import java.nio.ByteBuffer;

public interface SeekableByteChannel
	extends ByteChannel
{
	long position()
		throws IOException;
	
	SeekableByteChannel position(long __a)
		throws IOException;
	
	int read(ByteBuffer __a)
		throws IOException;
	
	long size()
		throws IOException;
	
	SeekableByteChannel truncate(long __a)
		throws IOException;
	
	int write(ByteBuffer __a)
		throws IOException;
}









<










<
<
<






<
<



7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23



24
25
26
27
28
29


30
31
32
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.channels;

import java.io.IOException;


public interface SeekableByteChannel
	extends ByteChannel
{
	long position()
		throws IOException;
	
	SeekableByteChannel position(long __a)
		throws IOException;
	



	long size()
		throws IOException;
	
	SeekableByteChannel truncate(long __a)
		throws IOException;
	


}


Changes to modules/cldc/src/main/java/java/nio/file/DirectoryStream.java.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.Closeable;
import java.io.IOException;
import java.util.Iterator;

public interface DirectoryStream<T>
	extends Closeable, Iterable<T>
{
	Iterator<T> iterator();
	
	interface Filter<T>
	{
		boolean accept(T __a)
			throws IOException;
	}
}








<




<








8
9
10
11
12
13
14

15
16
17
18

19
20
21
22
23
24
25
26
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.Closeable;
import java.io.IOException;


public interface DirectoryStream<T>
	extends Closeable, Iterable<T>
{

	
	interface Filter<T>
	{
		boolean accept(T __a)
			throws IOException;
	}
}

Changes to modules/cldc/src/main/java/java/nio/file/FileSystem.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.Closeable;
import java.io.IOException;
import java.util.Set;

public abstract class FileSystem
	implements Closeable
{
	/**
	 * Base constructor.
................................................................................
	 *
	 * @since 2019/12/22
	 */
	protected FileSystem()
	{
	}
	
	public abstract void close()
		throws IOException;
	
	public abstract Iterable<FileStore> getFileStores();
	
	public abstract Path getPath(String __a, String... __b);
	
	public abstract Iterable<Path> getRootDirectories();
	
	public abstract String getSeparator();







<







 







<
<
<







7
8
9
10
11
12
13

14
15
16
17
18
19
20
..
21
22
23
24
25
26
27



28
29
30
31
32
33
34
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.Closeable;

import java.util.Set;

public abstract class FileSystem
	implements Closeable
{
	/**
	 * Base constructor.
................................................................................
	 *
	 * @since 2019/12/22
	 */
	protected FileSystem()
	{
	}
	



	public abstract Iterable<FileStore> getFileStores();
	
	public abstract Path getPath(String __a, String... __b);
	
	public abstract Iterable<Path> getRootDirectories();
	
	public abstract String getSeparator();

Changes to modules/cldc/src/main/java/java/nio/file/FileSystemException.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
	}
	
	public String getFile()
	{
		throw new todo.TODO();
	}
	

	public String getMessage()
	{
		throw new todo.TODO();
	}
	
	public String getOtherFile()
	{







>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	}
	
	public String getFile()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getMessage()
	{
		throw new todo.TODO();
	}
	
	public String getOtherFile()
	{

Changes to modules/cldc/src/main/java/java/nio/file/LinkOption.java.

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package java.nio.file;

public enum LinkOption
	implements OpenOption, CopyOption
{
	NOFOLLOW_LINKS(),
	
	/** End. */
	;
	
	LinkOption()
	{
		throw new todo.TODO();
	}
}








|








11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package java.nio.file;

public enum LinkOption
	implements OpenOption, CopyOption
{
	NOFOLLOW_LINKS(),
	
	/* End. */
	;
	
	LinkOption()
	{
		throw new todo.TODO();
	}
}

Changes to modules/cldc/src/main/java/java/nio/file/Path.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
..
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.IOException;
import java.util.Iterator;

public interface Path
	extends Comparable<Path>, Iterable<Path>
{
	int compareTo(Path __a);
	
	boolean endsWith(Path __a);
	
	boolean endsWith(String __a);
	
	@Override
	boolean equals(Object __a);
................................................................................
	Path getRoot();
	
	@Override
	int hashCode();
	
	boolean isAbsolute();
	
	Iterator<Path> iterator();
	
	Path normalize();
	
	Path relativize(Path __a);
	
	Path resolve(Path __a);
	
	Path resolve(String __a);







<




<







 







<
<







7
8
9
10
11
12
13

14
15
16
17

18
19
20
21
22
23
24
..
36
37
38
39
40
41
42


43
44
45
46
47
48
49
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package java.nio.file;

import java.io.IOException;


public interface Path
	extends Comparable<Path>, Iterable<Path>
{

	
	boolean endsWith(Path __a);
	
	boolean endsWith(String __a);
	
	@Override
	boolean equals(Object __a);
................................................................................
	Path getRoot();
	
	@Override
	int hashCode();
	
	boolean isAbsolute();
	


	Path normalize();
	
	Path relativize(Path __a);
	
	Path resolve(Path __a);
	
	Path resolve(String __a);

Changes to modules/cldc/src/main/java/java/nio/file/StandardCopyOption.java.

15
16
17
18
19
20
21
22
23
24
25
{
	ATOMIC_MOVE,
	
	COPY_ATTRIBUTES,
	
	REPLACE_EXISTING,
	
	/** End. */
	;
}








|



15
16
17
18
19
20
21
22
23
24
25
{
	ATOMIC_MOVE,
	
	COPY_ATTRIBUTES,
	
	REPLACE_EXISTING,
	
	/* End. */
	;
}

Changes to modules/cldc/src/main/java/java/nio/file/StandardOpenOption.java.

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
	
	SYNC(),
	
	TRUNCATE_EXISTING(),
	
	WRITE(),
	
	/** End. */
	;
	
	StandardOpenOption()
	{
		throw new todo.TODO();
	}
}








|








29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
	
	SYNC(),
	
	TRUNCATE_EXISTING(),
	
	WRITE(),
	
	/* End. */
	;
	
	StandardOpenOption()
	{
		throw new todo.TODO();
	}
}

Changes to modules/cldc/src/main/java/java/nio/file/attribute/FileTime.java.

14
15
16
17
18
19
20

21
22
23
24
25

26
27
28
29
30

31
32
33
34
35
36
37
38
39
40

41
42
43
44
45
46
47
48
49
50
51
	implements Comparable<FileTime>
{
	private FileTime()
	{
		throw new todo.TODO();
	}
	

	public int compareTo(FileTime __a)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	public long toMillis()
	{
		throw new todo.TODO();
	}
	

	public String toString()
	{
		throw new todo.TODO();
	}
	
	public static FileTime fromMillis(long __v)
	{
		throw new todo.TODO();
	}
}








>





>





>










>











14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	implements Comparable<FileTime>
{
	private FileTime()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int compareTo(FileTime __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	public long toMillis()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String toString()
	{
		throw new todo.TODO();
	}
	
	public static FileTime fromMillis(long __v)
	{
		throw new todo.TODO();
	}
}

Added modules/cldc/src/main/java/java/nio/package-info.java.

































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// -*- Mode: Java; indent-tabs-mode: t; tab-width: 4 -*-
// ---------------------------------------------------------------------------
// Multi-Phasic Applications: SquirrelJME
//     Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

/**
 * Native Java I/O.
 *
 * @since 2020/03/26
 */

package java.nio;

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/SortedTreeMap.java.

178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
...
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
...
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
...
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
...
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
...
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
...
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
...
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2016/09/06
	 */
	@Override
	@SuppressWarnings({"unchecked"})
	public V put(K __k, V __v)
	{
		// Insert node
		__Found__ found = new __Found__();
		__Node__<K, V> now = this.__insert(null, this._root, found, __k, __v);
		
		// The root of the tree always becomes black
................................................................................
	/**
	 * Flips the color of the specified node.
	 *
	 * @param __at The node to flip colors for.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/03/30
	 */
	private final void __flipColor(__Node__<K, V> __at)
		throws NullPointerException
	{
		// Check
		if (__at == null)
			throw new NullPointerException("NARG");
		
		// Flip node colors
................................................................................
	 * @param __found The value information when a value is discovered.
	 * @param __k The key to use.
	 * @param __v The value to use.
	 * @return The root of the local segment, the first iteration of this call
	 * will always return the root of the tree.
	 * @since 2017/03/30
	 */
	private final __Node__<K, V> __insert(__Node__<K, V> __from,
		__Node__<K, V> __at, __Found__ __found, K __k, V __v)
	{
		// No root of the tree?
		if (__at == null)
		{
			// Setup data
			__Data__<K, V> data = new __Data__<>(this, __k, __v);
................................................................................
	/**
	 * Returns {@code true} if the given node is red.
	 *
	 * @param __n The node to see if it is red.
	 * @return {@code true} if the node is red.
	 * @since 2017/03/30
	 */
	private final boolean __isRed(__Node__<K, V> __n)
	{
		if (__n == null)
			return false;
		return __n._isred;
	}
	
	/**
	 * Returns the minimum node.
	 *
	 * @return The minimum node.
	 * @since 2017/03/30
	 */
	private final __Node__<K, V> __min(__Node__<K, V> __at)
	{
		while (__at._left != null)
			__at = __at._left;
		return __at;
	}
	
	/**
	 * Moves the specified red node.
	 *
	 * @param __at The node to move.
	 * @return The node that is not a side node.
	 * @since 2017/03/30
	 */
	private final __Node__<K, V> __moveRed(__Node__<K, V> __at, boolean __r)
	{
		// Flip the node color
		this.__flipColor(__at);
		
		// Move to the right
		if (__r)
		{
................................................................................
	 *
	 * @param __at The current node being traversed.
	 * @param __found Node searching information.
	 * @param __k The key to remove the value from.
	 * @return The node at the top (will not be a leaf)
	 * @since 2017/03/30
	 */
	private final __Node__<K, V> __remove(__Node__<K, V> __at,
		__Found__ __found, K __k)
	{
		// Key is lower?
		Comparator<K> compare = this._compare;
		int comp = compare.compare(__k, __at._data._key);
		if (comp < 0)
		{
................................................................................
	 *
	 * @param __at Current node.
	 * @param __found The found node information.
	 * @param __unlink If {@code true} the node is unlinked.
	 * @return The top node.
	 * @since 2017/03/30
	 */
	private final __Node__<K, V> __removeMin(__Node__<K, V> __at,
		__Found__ __found, boolean __unlink)
	{
		// If there is no left, remove the left node
		if (__at._left == null)
		{
			// Unlink our node
			if (__unlink)
................................................................................
	 *
	 * @param __at The node to rotate.
	 * @param __r If {@code true} then rotation is to the right, otherwise it
	 * is to the left.
	 * @return The center node.
	 * @since 2017/03/27
	 */
	private final __Node__<K, V> __rotate(__Node__<K, V> __at, boolean __r)
		throws NullPointerException
	{
		// Check
		if (__at == null)
			throw new NullPointerException("NARG");
		
		// Rotate right
................................................................................
	/**
	 * Unlinks the specified node.
	 *
	 * @param __at The node to unlink.
	 * @param __found The found node data.
	 * @since 2017/03/30
	 */
	private final void __unlink(__Node__<K, V> __at, __Found__ __found)
	{
		// Get the data to unlink
		__Data__<K, V> unlink = __at._data;
		if (__found != null)
			__found._oldvalue = unlink._value;
		
		// Link next node with the previous







<







 







|







 







|







 







|












|













|







 







|







 







|







 







|







 







|







178
179
180
181
182
183
184

185
186
187
188
189
190
191
...
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
...
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
...
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
...
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
...
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
...
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
...
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2016/09/06
	 */
	@Override

	public V put(K __k, V __v)
	{
		// Insert node
		__Found__ found = new __Found__();
		__Node__<K, V> now = this.__insert(null, this._root, found, __k, __v);
		
		// The root of the tree always becomes black
................................................................................
	/**
	 * Flips the color of the specified node.
	 *
	 * @param __at The node to flip colors for.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/03/30
	 */
	private void __flipColor(__Node__<K, V> __at)
		throws NullPointerException
	{
		// Check
		if (__at == null)
			throw new NullPointerException("NARG");
		
		// Flip node colors
................................................................................
	 * @param __found The value information when a value is discovered.
	 * @param __k The key to use.
	 * @param __v The value to use.
	 * @return The root of the local segment, the first iteration of this call
	 * will always return the root of the tree.
	 * @since 2017/03/30
	 */
	private __Node__<K, V> __insert(__Node__<K, V> __from,
		__Node__<K, V> __at, __Found__ __found, K __k, V __v)
	{
		// No root of the tree?
		if (__at == null)
		{
			// Setup data
			__Data__<K, V> data = new __Data__<>(this, __k, __v);
................................................................................
	/**
	 * Returns {@code true} if the given node is red.
	 *
	 * @param __n The node to see if it is red.
	 * @return {@code true} if the node is red.
	 * @since 2017/03/30
	 */
	private boolean __isRed(__Node__<K, V> __n)
	{
		if (__n == null)
			return false;
		return __n._isred;
	}
	
	/**
	 * Returns the minimum node.
	 *
	 * @return The minimum node.
	 * @since 2017/03/30
	 */
	private __Node__<K, V> __min(__Node__<K, V> __at)
	{
		while (__at._left != null)
			__at = __at._left;
		return __at;
	}
	
	/**
	 * Moves the specified red node.
	 *
	 * @param __at The node to move.
	 * @return The node that is not a side node.
	 * @since 2017/03/30
	 */
	private __Node__<K, V> __moveRed(__Node__<K, V> __at, boolean __r)
	{
		// Flip the node color
		this.__flipColor(__at);
		
		// Move to the right
		if (__r)
		{
................................................................................
	 *
	 * @param __at The current node being traversed.
	 * @param __found Node searching information.
	 * @param __k The key to remove the value from.
	 * @return The node at the top (will not be a leaf)
	 * @since 2017/03/30
	 */
	private __Node__<K, V> __remove(__Node__<K, V> __at,
		__Found__ __found, K __k)
	{
		// Key is lower?
		Comparator<K> compare = this._compare;
		int comp = compare.compare(__k, __at._data._key);
		if (comp < 0)
		{
................................................................................
	 *
	 * @param __at Current node.
	 * @param __found The found node information.
	 * @param __unlink If {@code true} the node is unlinked.
	 * @return The top node.
	 * @since 2017/03/30
	 */
	private __Node__<K, V> __removeMin(__Node__<K, V> __at,
		__Found__ __found, boolean __unlink)
	{
		// If there is no left, remove the left node
		if (__at._left == null)
		{
			// Unlink our node
			if (__unlink)
................................................................................
	 *
	 * @param __at The node to rotate.
	 * @param __r If {@code true} then rotation is to the right, otherwise it
	 * is to the left.
	 * @return The center node.
	 * @since 2017/03/27
	 */
	private __Node__<K, V> __rotate(__Node__<K, V> __at, boolean __r)
		throws NullPointerException
	{
		// Check
		if (__at == null)
			throw new NullPointerException("NARG");
		
		// Rotate right
................................................................................
	/**
	 * Unlinks the specified node.
	 *
	 * @param __at The node to unlink.
	 * @param __found The found node data.
	 * @since 2017/03/30
	 */
	private void __unlink(__Node__<K, V> __at, __Found__ __found)
	{
		// Get the data to unlink
		__Data__<K, V> unlink = __at._data;
		if (__found != null)
			__found._oldvalue = unlink._value;
		
		// Link next node with the previous

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/SortedTreeSet.java.

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
..
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
	/**
	 * Initializes an empty red/black set using the given comparator.
	 *
	 * @param __comp The comparator to use for values.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/09/06
	 */
	@SuppressWarnings({"unchecked"})
	public SortedTreeSet(Comparator<? extends V> __comp)
		throws NullPointerException
	{
		// Check
		if (__comp == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * initialized with the given values.
	 *
	 * @param __comp The comparator to use for values.
	 * @param __s The collection to copy values from.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/09/06
	 */
	@SuppressWarnings({"unchecked"})
	public SortedTreeSet(Comparator<? extends V> __comp,
		Collection<? extends V> __s)
		throws NullPointerException
	{
		// Check
		if (__comp == null || __s == null)
			throw new NullPointerException("NARG");







<







 







<







64
65
66
67
68
69
70

71
72
73
74
75
76
77
..
84
85
86
87
88
89
90

91
92
93
94
95
96
97
	/**
	 * Initializes an empty red/black set using the given comparator.
	 *
	 * @param __comp The comparator to use for values.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/09/06
	 */

	public SortedTreeSet(Comparator<? extends V> __comp)
		throws NullPointerException
	{
		// Check
		if (__comp == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * initialized with the given values.
	 *
	 * @param __comp The comparator to use for values.
	 * @param __s The collection to copy values from.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/09/06
	 */

	public SortedTreeSet(Comparator<? extends V> __comp,
		Collection<? extends V> __s)
		throws NullPointerException
	{
		// Check
		if (__comp == null || __s == null)
			throw new NullPointerException("NARG");

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/UnmodifiableCollection.java.

124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
	 * modified.
	 *
	 * @param <T> The type of value the set stores.
	 * @param __c The collection to wrap to disable modifications of.
	 * @return An unmodifiable view of the collection.
	 * @since 2017/10/09
	 */
	@SuppressWarnings({"unchecked"})
	public static <T> Collection<T> of(Collection<T> __c)
	{
		// If already one, return that collection
		if (__c instanceof UnmodifiableCollection)
			return __c;
		
		// Use List instead







<







124
125
126
127
128
129
130

131
132
133
134
135
136
137
	 * modified.
	 *
	 * @param <T> The type of value the set stores.
	 * @param __c The collection to wrap to disable modifications of.
	 * @return An unmodifiable view of the collection.
	 * @since 2017/10/09
	 */

	public static <T> Collection<T> of(Collection<T> __c)
	{
		// If already one, return that collection
		if (__c instanceof UnmodifiableCollection)
			return __c;
		
		// Use List instead

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/__Data__.java.

129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
	{
		return String.format("[%s, %s]", this._key, this._value);
	}
	
	/**
	 * Compares this data against the given key.
	 *
	 * @param __n The key to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(K __k)
	{
		return this._compare.compare(this._key, __k);
	}
	
	/**
	 * Compares this data against the given data.
	 *
	 * @param __n The data to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(__Data__<K, V> __d)
	{
		return this.__compare(__d._key);
	}







|











|







129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
	{
		return String.format("[%s, %s]", this._key, this._value);
	}
	
	/**
	 * Compares this data against the given key.
	 *
	 * @param __k The key to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(K __k)
	{
		return this._compare.compare(this._key, __k);
	}
	
	/**
	 * Compares this data against the given data.
	 *
	 * @param __d The data to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(__Data__<K, V> __d)
	{
		return this.__compare(__d._key);
	}

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/__MapIterator__.java.

107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
	 *
	 * @param __data The data to check.
	 * @return {@code __data}.
	 * @throws ConcurrentModificationException If modification was detected.
	 * @throws NullPointerException On null arguments. 
	 * @since 2017/03/30
	 */
	private final __Data__<K, V> __detect(__Data__<K, V> __data)
		throws ConcurrentModificationException, NullPointerException
	{
		// Check
		if (__data == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error AC08 Referenced node was deleted.}







|







107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
	 *
	 * @param __data The data to check.
	 * @return {@code __data}.
	 * @throws ConcurrentModificationException If modification was detected.
	 * @throws NullPointerException On null arguments. 
	 * @since 2017/03/30
	 */
	private __Data__<K, V> __detect(__Data__<K, V> __data)
		throws ConcurrentModificationException, NullPointerException
	{
		// Check
		if (__data == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error AC08 Referenced node was deleted.}

Changes to modules/collections/src/main/java/net/multiphasicapps/collections/__Node__.java.

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	
	/** The node to the right. */
	volatile __Node__<K, V> _right;
	
	/**
	 * Compares this node against the given key.
	 *
	 * @param __n The key to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(K __k)
	{
		return this._data.__compare(__k);
	}
	
	/**
	 * Compares this node against the given data.
	 *
	 * @param __n The data to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(__Data__<K, V> __d)
	{
		return this._data.__compare(__d);
	}







|











|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	
	/** The node to the right. */
	volatile __Node__<K, V> _right;
	
	/**
	 * Compares this node against the given key.
	 *
	 * @param __k The key to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(K __k)
	{
		return this._data.__compare(__k);
	}
	
	/**
	 * Compares this node against the given data.
	 *
	 * @param __d The data to compare against.
	 * @return The comparison result.
	 * @since 2017/03/30
	 */
	final int __compare(__Data__<K, V> __d)
	{
		return this._data.__compare(__d);
	}

Changes to modules/dio-adc/src/main/java/jdk/dio/adc/ADCChannelConfig.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42

43
44
45
46
47

48
49
50
51
52
53
54
..
71
72
73
74
75
76
77

78
79
80
81
82

83
84
85
86
87
88
89
	
	@Deprecated
	public ADCChannelConfig(String __a, int __b, int __c, int __d, int __e)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>







 







>





>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
..
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
	
	@Deprecated
	public ADCChannelConfig(String __a, int __b, int __c, int __d, int __e)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-adc/src/main/java/jdk/dio/adc/AcquisitionRoundListener.java.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.adc;

import java.nio.IntBuffer;
import jdk.dio.InputRoundListener;
import jdk.dio.RoundCompletionEvent;

public interface AcquisitionRoundListener
	extends InputRoundListener<ADCChannel, IntBuffer>
{
	void failed(Throwable __a, ADCChannel __b);
	
	void inputRoundCompleted(RoundCompletionEvent<ADCChannel, IntBuffer> __a);
}









<




<

<



8
9
10
11
12
13
14

15
16
17
18

19

20
21
22
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.adc;

import java.nio.IntBuffer;
import jdk.dio.InputRoundListener;


public interface AcquisitionRoundListener
	extends InputRoundListener<ADCChannel, IntBuffer>
{

	

}


Changes to modules/dio-adc/src/main/java/jdk/dio/adc/MonitoringListener.java.

12
13
14
15
16
17
18
19
20
21
22
23
24

import jdk.dio.AsyncErrorHandler;
import jdk.dio.DeviceEventListener;

public interface MonitoringListener
	extends DeviceEventListener, AsyncErrorHandler<ADCChannel>
{
	void failed(Throwable __a, ADCChannel __b);
	
	void thresholdReached(MonitoringEvent __a);
}









<





12
13
14
15
16
17
18

19
20
21
22
23

import jdk.dio.AsyncErrorHandler;
import jdk.dio.DeviceEventListener;

public interface MonitoringListener
	extends DeviceEventListener, AsyncErrorHandler<ADCChannel>
{

	
	void thresholdReached(MonitoringEvent __a);
}


Changes to modules/dio-atcmd/src/main/java/jdk/dio/atcmd/ATDevice.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	extends Device<ATDevice>
{
	@Deprecated
	void abortCommand(String __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void close()
		throws IOException;
	
	@Deprecated
	void escapeToCommandMode()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int getMaxCommandLength()
		throws IOException, UnavailableDeviceException, 







<
<
<







19
20
21
22
23
24
25



26
27
28
29
30
31
32
	extends Device<ATDevice>
{
	@Deprecated
	void abortCommand(String __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	



	@Deprecated
	void escapeToCommandMode()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int getMaxCommandLength()
		throws IOException, UnavailableDeviceException, 

Changes to modules/dio-atcmd/src/main/java/jdk/dio/atcmd/ATDeviceConfig.java.

24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40

41
42
43
44
45

46
47
48
49
50

51
52
53
54
55

56
57
58
59
60
61
62
	}
	
	public ATDeviceConfig(int __a, int __b)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>





>





>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
	}
	
	public ATDeviceConfig(int __a, int __b)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-atcmd/src/main/java/jdk/dio/atcmd/ATPermission.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
	
	public ATPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
}









>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	
	public ATPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
}


Changes to modules/dio-counter/src/main/java/jdk/dio/counter/CountingListener.java.

14
15
16
17
18
19
20
21
22
23
24
import jdk.dio.DeviceEventListener;

public interface CountingListener
	extends DeviceEventListener, AsyncErrorHandler<PulseCounter>
{
	void countValueAvailable(CountingEvent __a);
	
	void failed(Throwable __a, PulseCounter __b);
}









<



14
15
16
17
18
19
20

21
22
23
import jdk.dio.DeviceEventListener;

public interface CountingListener
	extends DeviceEventListener, AsyncErrorHandler<PulseCounter>
{
	void countValueAvailable(CountingEvent __a);
	

}


Changes to modules/dio-counter/src/main/java/jdk/dio/counter/PulseCounterConfig.java.

53
54
55
56
57
58
59

60
61
62
63
64
65
66
67
68
69

70
71
72
73
74

75
76
77
78
79
80
81
..
89
90
91
92
93
94
95

96
97
98
99
100

101
102
103
104
105
106
107
	@Deprecated
	public PulseCounterConfig(String __a, int __b, int __c, GPIOPinConfig __d
		)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	@Deprecated
	public GPIOPin getSource()
................................................................................
	}
	
	public int getType()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>







 







>





>







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
..
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
	@Deprecated
	public PulseCounterConfig(String __a, int __b, int __c, GPIOPinConfig __d
		)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	@Deprecated
	public GPIOPin getSource()
................................................................................
	}
	
	public int getType()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-dac/src/main/java/jdk/dio/dac/DACChannelConfig.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42

43
44
45
46
47

48
49
50
51
52
53
54
..
66
67
68
69
70
71
72

73
74
75
76
77

78
79
80
81
82
83
84
	
	@Deprecated
	public DACChannelConfig(String __a, int __b, int __c, int __d)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getOutputBufferSize()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>







 







>





>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
..
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
	
	@Deprecated
	public DACChannelConfig(String __a, int __b, int __c, int __d)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getOutputBufferSize()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-dac/src/main/java/jdk/dio/dac/GenerationRoundListener.java.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.dac;

import java.nio.IntBuffer;
import jdk.dio.OutputRoundListener;
import jdk.dio.RoundCompletionEvent;

public interface GenerationRoundListener
	extends OutputRoundListener<DACChannel, IntBuffer>
{
	void failed(Throwable __a, DACChannel __b);
	
	void outputRoundCompleted(RoundCompletionEvent<DACChannel, IntBuffer> __a);
}









<




<

<



8
9
10
11
12
13
14

15
16
17
18

19

20
21
22
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.dac;

import java.nio.IntBuffer;
import jdk.dio.OutputRoundListener;


public interface GenerationRoundListener
	extends OutputRoundListener<DACChannel, IntBuffer>
{

	

}


Changes to modules/dio-generic/src/main/java/jdk/dio/generic/GenericBufferIODevice.java.

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31

32
33
34
35
36
37
import jdk.dio.ClosedDeviceException;
import jdk.dio.UnavailableDeviceException;
import jdk.dio.UnsupportedByteOrderException;

public interface GenericBufferIODevice
	extends GenericDevice, ByteChannel, BufferAccess<ByteBuffer>
{

	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	

	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
}









>








>






17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import jdk.dio.ClosedDeviceException;
import jdk.dio.UnavailableDeviceException;
import jdk.dio.UnsupportedByteOrderException;

public interface GenericBufferIODevice
	extends GenericDevice, ByteChannel, BufferAccess<ByteBuffer>
{
	@Override
	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	@Override
	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
}


Changes to modules/dio-generic/src/main/java/jdk/dio/generic/GenericDeviceConfig.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42

43
44
45
46
47

48
49
50
51
52
53
54
..
56
57
58
59
60
61
62

63
64
65
66
67

68
69
70
71
72
73
74
	
	@Deprecated
	public GenericDeviceConfig(String __a, int __b)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getOutputBufferSize()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>







 







>





>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
..
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
	
	@Deprecated
	public GenericDeviceConfig(String __a, int __b)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getOutputBufferSize()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-gpio/src/main/java/jdk/dio/gpio/GPIOPinConfig.java.

73
74
75
76
77
78
79

80
81
82
83
84

85
86
87
88
89

90
91
92
93
94
95
96
...
113
114
115
116
117
118
119

120
121
122
123
124

125
126
127
128
129
130
131
	@Deprecated
	public GPIOPinConfig(String __a, int __b, int __c, int __d, int __e, 
		boolean __f)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getDirection()
	{
................................................................................
	}
	
	public int getTrigger()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>





>





>







 







>





>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
...
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
	@Deprecated
	public GPIOPinConfig(String __a, int __b, int __c, int __d, int __e, 
		boolean __f)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getDirection()
	{
................................................................................
	}
	
	public int getTrigger()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-gpio/src/main/java/jdk/dio/gpio/GPIOPinPermission.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
	
	public GPIOPinPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
}









>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	
	public GPIOPinPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
}


Changes to modules/dio-gpio/src/main/java/jdk/dio/gpio/GPIOPortConfig.java.

31
32
33
34
35
36
37

38
39
40
41
42
43
44
..
57
58
59
60
61
62
63

64
65
66
67
68

69
70
71
72
73
74
75
		1;
	
	public GPIOPortConfig(int __a, int __b, GPIOPinConfig... __c)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getDirection()
	{
................................................................................
	
	@Deprecated
	public GPIOPin[] getPins()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>







 







>





>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
..
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
		1;
	
	public GPIOPortConfig(int __a, int __b, GPIOPinConfig... __c)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getDirection()
	{
................................................................................
	
	@Deprecated
	public GPIOPin[] getPins()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-gpio/src/main/java/jdk/dio/gpio/GPIOPortPermission.java.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
	
	public GPIOPortPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
}









>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	
	public GPIOPortPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
}


Changes to modules/dio-i2cbus/src/main/java/jdk/dio/i2cbus/I2CDevice.java.

24
25
26
27
28
29
30

31
32
33
34
35
36
37
..
40
41
42
43
44
45
46

47
48
49
50
51
52
53
	I2CDevice.Bus getBus()
		throws IOException;
	
	int read()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	

	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
................................................................................
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read(int __a, int __b, int __c, ByteBuffer __d)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	

	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void write(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;







>







 







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
..
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	I2CDevice.Bus getBus()
		throws IOException;
	
	int read()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	@Override
	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
................................................................................
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read(int __a, int __b, int __c, ByteBuffer __d)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	@Override
	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void write(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;

Changes to modules/dio-i2cbus/src/main/java/jdk/dio/i2cbus/I2CDeviceConfig.java.

32
33
34
35
36
37
38

39
40
41
42
43
44
45
..
52
53
54
55
56
57
58

59
60
61
62
63

64
65
66
67
68
69
70
..
72
73
74
75
76
77
78

79
80
81
82
83

84
85
86
87
88
89
90
	
	@Deprecated
	public I2CDeviceConfig(String __a, int __b, int __c, int __d)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getAddress()
	{
................................................................................
	}
	
	public int getClockFrequency()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getOutputBufferSize()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>







 







>





>







 







>





>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
..
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
	
	@Deprecated
	public I2CDeviceConfig(String __a, int __b, int __c, int __d)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getAddress()
	{
................................................................................
	}
	
	public int getClockFrequency()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getOutputBufferSize()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-pwm/src/main/java/jdk/dio/pwm/GenerationListener.java.

12
13
14
15
16
17
18
19
20
21
22
23
24

import jdk.dio.AsyncErrorHandler;
import jdk.dio.DeviceEventListener;

public interface GenerationListener
	extends DeviceEventListener, AsyncErrorHandler<PWMChannel>
{
	void failed(Throwable __a, PWMChannel __b);
	
	void pulseGenerationCompleted(GenerationEvent __a);
}









<





12
13
14
15
16
17
18

19
20
21
22
23

import jdk.dio.AsyncErrorHandler;
import jdk.dio.DeviceEventListener;

public interface GenerationListener
	extends DeviceEventListener, AsyncErrorHandler<PWMChannel>
{

	
	void pulseGenerationCompleted(GenerationEvent __a);
}


Changes to modules/dio-pwm/src/main/java/jdk/dio/pwm/GenerationRoundListener.java.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.pwm;

import java.nio.IntBuffer;
import jdk.dio.OutputRoundListener;
import jdk.dio.RoundCompletionEvent;

public interface GenerationRoundListener
	extends OutputRoundListener<PWMChannel, IntBuffer>
{
	void failed(Throwable __a, PWMChannel __b);
	
	void outputRoundCompleted(RoundCompletionEvent<PWMChannel, IntBuffer> __a);
}









<




<

<



8
9
10
11
12
13
14

15
16
17
18

19

20
21
22
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package jdk.dio.pwm;

import java.nio.IntBuffer;
import jdk.dio.OutputRoundListener;


public interface GenerationRoundListener
	extends OutputRoundListener<PWMChannel, IntBuffer>
{

	

}


Changes to modules/dio-pwm/src/main/java/jdk/dio/pwm/PWMChannelConfig.java.

57
58
59
60
61
62
63

64
65
66
67
68
69
70
71
72
73

74
75
76
77
78

79
80
81
82
83
84
85
...
113
114
115
116
117
118
119

120
121
122
123
124

125
126
127
128
129
130
131
	@Deprecated
	public PWMChannelConfig(String __a, int __b, int __c, int __d, int __e, 
		GPIOPinConfig __f)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getIdleState()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>










>





>







 







>





>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
...
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
	@Deprecated
	public PWMChannelConfig(String __a, int __b, int __c, int __d, int __e, 
		GPIOPinConfig __f)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getIdleState()
	{
................................................................................
	}
	
	public double getScaleFactor()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-spibus/src/main/java/jdk/dio/spibus/SPIDevice.java.

28
29
30
31
32
33
34

35
36
37
38
39
40
41
42

43
44
45
46
47
48
49
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	

	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	

	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	void write(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;







>








>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int read()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	@Override
	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	int read(int __a, ByteBuffer __b)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	@Override
	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			UnsupportedByteOrderException, ClosedDeviceException;
	
	void write(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;

Changes to modules/dio-spibus/src/main/java/jdk/dio/spibus/SPIDeviceConfig.java.

51
52
53
54
55
56
57

58
59
60
61
62
63
64
..
81
82
83
84
85
86
87

88
89
90
91
92

93
94
95
96
97
98
99
...
106
107
108
109
110
111
112

113
114
115
116
117

118
119
120
121
122
123
124
	@Deprecated
	public SPIDeviceConfig(String __a, int __b, int __c, int __d, int __e, 
		int __f, int __g)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getAddress()
	{
................................................................................
	}
	
	public int getClockMode()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getWordLength()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>







 







>





>







 







>





>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
..
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
	@Deprecated
	public SPIDeviceConfig(String __a, int __b, int __c, int __d, int __e, 
		int __f, int __g)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getAddress()
	{
................................................................................
	}
	
	public int getClockMode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getInputBufferSize()
	{
................................................................................
	}
	
	public int getWordLength()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-uart/src/main/java/jdk/dio/uart/UART.java.

51
52
53
54
55
56
57

58
59
60
61
62
63
64
...
114
115
116
117
118
119
120

121
122
123
124
125
126
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int getStopBits()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	

	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void setBaudRate(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
................................................................................
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void stopWriting()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	

	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
}









>







 







>






51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
...
115
116
117
118
119
120
121
122
123
124
125
126
127
128
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	int getStopBits()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	@Override
	int read(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void setBaudRate(int __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
................................................................................
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	void stopWriting()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	@Override
	int write(ByteBuffer __a)
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
}


Changes to modules/dio-uart/src/main/java/jdk/dio/uart/UARTConfig.java.

96
97
98
99
100
101
102

103
104
105
106
107
108
109
...
111
112
113
114
115
116
117

118
119
120
121
122

123
124
125
126
127
128
129
...
151
152
153
154
155
156
157

158
159
160
161
162

163
164
165
166
167
168
169
	@Deprecated
	public UARTConfig(String __a, int __b, int __c, int __d, int __e, int __f
		, int __g, int __h, int __i)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getBaudRate()
	{
................................................................................
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getDataBits()
	{
................................................................................
	}
	
	public int getStopBits()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>







 







>





>







 







>





>







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
...
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
	@Deprecated
	public UARTConfig(String __a, int __b, int __c, int __d, int __e, int __f
		, int __g, int __h, int __i)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	public int getBaudRate()
	{
................................................................................
	}
	
	public int getChannelNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getDataBits()
	{
................................................................................
	}
	
	public int getStopBits()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-watchdog/src/main/java/jdk/dio/watchdog/WatchdogTimerConfig.java.

24
25
26
27
28
29
30

31
32
33
34
35

36
37
38
39
40

41
42
43
44
45
46
47
48
49
50

51
52
53
54
55

56
57
58
59
60
61
62
	}
	
	public WatchdogTimerConfig(int __a, int __b)
	{
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public String getControllerName()
	{
		throw new todo.TODO();
	}
	

	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getTimerNumber()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}







>





>





>










>





>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
	}
	
	public WatchdogTimerConfig(int __a, int __b)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getControllerName()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getControllerNumber()
	{
		throw new todo.TODO();
	}
	
	public int getTimerNumber()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int serialize(OutputStream __a)
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}

Changes to modules/dio-watchdog/src/main/java/jdk/dio/watchdog/WindowedWatchdogTimer.java.

15
16
17
18
19
20
21

22
23
24
25
26
27
28
29

public interface WindowedWatchdogTimer
	extends WatchdogTimer
{
	long getClosedWindowTimeout()
		throws IOException, ClosedDeviceException;
	

	void start(long __a)
		throws IOException, ClosedDeviceException;
	
	void start(long __a, long __b)
		throws IOException, ClosedDeviceException;
}









>








15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

public interface WindowedWatchdogTimer
	extends WatchdogTimer
{
	long getClosedWindowTimeout()
		throws IOException, ClosedDeviceException;
	
	@Override
	void start(long __a)
		throws IOException, ClosedDeviceException;
	
	void start(long __a, long __b)
		throws IOException, ClosedDeviceException;
}


Changes to modules/dio/src/main/java/jdk/dio/Device.java.

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	
	int LITTLE_ENDIAN =
		0;
	
	int MIXED_ENDIAN =
		2;
	
	void close()
		throws IOException;
	
	ByteOrder getByteOrder()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	<U extends P> DeviceDescriptor<U> getDescriptor();
	
	boolean isOpen();
	
	void tryLock(int __a)
		throws UnavailableDeviceException, ClosedDeviceException, 
			IOException;
	
	void unlock()
		throws IOException;
}









<
<
<






<
<









22
23
24
25
26
27
28



29
30
31
32
33
34


35
36
37
38
39
40
41
42
43
	
	int LITTLE_ENDIAN =
		0;
	
	int MIXED_ENDIAN =
		2;
	



	ByteOrder getByteOrder()
		throws IOException, UnavailableDeviceException, 
			ClosedDeviceException;
	
	<U extends P> DeviceDescriptor<U> getDescriptor();
	


	void tryLock(int __a)
		throws UnavailableDeviceException, ClosedDeviceException, 
			IOException;
	
	void unlock()
		throws IOException;
}


Changes to modules/dio/src/main/java/jdk/dio/DeviceMgmtPermission.java.

27
28
29
30
31
32
33

34
35
36
37
38

39
40
41
42
43

44
45
46
47
48

49
50
51
52
53

54
55
56
57
58
59
60
	
	public DeviceMgmtPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	

	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
}









>





>





>





>





>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	public DeviceMgmtPermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
}


Changes to modules/dio/src/main/java/jdk/dio/DevicePermission.java.

30
31
32
33
34
35
36

37
38
39
40
41

42
43
44
45
46

47
48
49
50
51

52
53
54
55
56

57
58
59
60
61
62
63
64
65
66
67
68
69
	
	public DevicePermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	

	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	

	public String getActions()
	{
		throw new todo.TODO();
	}
	

	public int hashCode()
	{
		throw new todo.TODO();
	}
	

	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	

	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String toString()
	{
		throw new todo.TODO();
	}
}









>





>





>





>





>













30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	
	public DevicePermission(String __a, String __b)
	{
		super((String)null);
		throw new todo.TODO();
	}
	
	@Override
	public boolean equals(Object __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getActions()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int hashCode()
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean implies(Permission __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public PermissionCollection newPermissionCollection()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String toString()
	{
		throw new todo.TODO();
	}
}


Changes to modules/dio/src/main/java/jdk/dio/spi/AbstractDevice.java.

20
21
22
23
24
25
26

27
28
29
30
31

32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
	implements Device<P>
{
	public AbstractDevice()
	{
		throw new todo.TODO();
	}
	

	public final <U extends P> DeviceDescriptor<U> getDescriptor()
	{
		throw new todo.TODO();
	}
	

	public void tryLock(int __a)
		throws UnavailableDeviceException, ClosedDeviceException, 
			IOException
	{
		if (false)
			throw new UnavailableDeviceException();
		if (false)
			throw new ClosedDeviceException();
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}
	

	public void unlock()
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}
}









>





>













>










20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	implements Device<P>
{
	public AbstractDevice()
	{
		throw new todo.TODO();
	}
	
	@Override
	public final <U extends P> DeviceDescriptor<U> getDescriptor()
	{
		throw new todo.TODO();
	}
	
	@Override
	public void tryLock(int __a)
		throws UnavailableDeviceException, ClosedDeviceException, 
			IOException
	{
		if (false)
			throw new UnavailableDeviceException();
		if (false)
			throw new ClosedDeviceException();
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}
	
	@Override
	public void unlock()
		throws IOException
	{
		if (false)
			throw new IOException();
		throw new todo.TODO();
	}
}


Changes to modules/gcf/src/main/java/cc/squirreljme/runtime/gcf/HTTPClientConnection.java.

398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
	 * Attempts to obtain the request.
	 *
	 * @return The request information.
	 * @throws IOException If the connection was closed or is in connected
	 * state.
	 * @since 2019/05/13
	 */
	private final HTTPRequestBuilder __request()
		throws IOException
	{
		// {@squirreljme.error EC03 Cannot access the request
		if (this.tracker._state != HTTPState.SETUP)
		{
			// Clear before it is thrown
			this._request = null;







|







398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
	 * Attempts to obtain the request.
	 *
	 * @return The request information.
	 * @throws IOException If the connection was closed or is in connected
	 * state.
	 * @since 2019/05/13
	 */
	private HTTPRequestBuilder __request()
		throws IOException
	{
		// {@squirreljme.error EC03 Cannot access the request
		if (this.tracker._state != HTTPState.SETUP)
		{
			// Clear before it is thrown
			this._request = null;

Changes to modules/gcf/src/main/java/cc/squirreljme/runtime/gcf/HTTPState.java.

21
22
23
24
25
26
27
28
29
30
31
	
	/** Connected to remote HTTP server. */
	CONNECTED,
	
	/** Connection is closed. */
	CLOSED,
	
	/** End. */
	;
}








|



21
22
23
24
25
26
27
28
29
30
31
	
	/** Connected to remote HTTP server. */
	CONNECTED,
	
	/** Connection is closed. */
	CLOSED,
	
	/* End. */
	;
}

Changes to modules/gcf/src/main/java/cc/squirreljme/runtime/gcf/IPAddress.java.

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	/** The string reference. */
	private Reference<String> _string;
	
	/**
	 * Initializes the address.
	 *
	 * @param __h The hostname, may be {@code null}.
	 * @param __p The port, may be {@link ASSIGNED_PORT}.
	 * @throws IllegalArgumentException If the hostname or port is not valid.
	 * @since 2019/05/06
	 */
	public IPAddress(String __h, int __p)
		throws IllegalArgumentException
	{
		// {@squirreljme.error EC0c IP port out of range. (The port)}







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	/** The string reference. */
	private Reference<String> _string;
	
	/**
	 * Initializes the address.
	 *
	 * @param __h The hostname, may be {@code null}.
	 * @param __p The port, may be {@link #ASSIGNED_PORT}.
	 * @throws IllegalArgumentException If the hostname or port is not valid.
	 * @since 2019/05/06
	 */
	public IPAddress(String __h, int __p)
		throws IllegalArgumentException
	{
		// {@squirreljme.error EC0c IP port out of range. (The port)}

Changes to modules/gcf/src/main/java/javax/microedition/io/HttpsConnection.java.

11
12
13
14
15
16
17
18
19
20
21
22
23
24
package javax.microedition.io;

import java.io.IOException;

public interface HttpsConnection
	extends HttpConnection
{
	int getPort();
	
	SecurityInfo getSecurityInfo()
		throws IOException;
}









<






11
12
13
14
15
16
17

18
19
20
21
22
23
package javax.microedition.io;

import java.io.IOException;

public interface HttpsConnection
	extends HttpConnection
{

	
	SecurityInfo getSecurityInfo()
		throws IOException;
}


Changes to modules/gcf/src/main/java/javax/microedition/io/UDPMulticastConnection.java.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	void join(String __a)
		throws IOException;
	
	void leave(String __a)
		throws IOException;
	
	void receive(Datagram __a)
		throws IOException;
	
	void send(Datagram __a)
		throws IOException;
	
	void setDisableLoopback(boolean __a)
		throws IOException;
	
	void setTimeToLive(int __a)
		throws IOException;
}









<
<
<
<
<
<








25
26
27
28
29
30
31






32
33
34
35
36
37
38
39
	
	void join(String __a)
		throws IOException;
	
	void leave(String __a)
		throws IOException;
	






	void setDisableLoopback(boolean __a)
		throws IOException;
	
	void setTimeToLive(int __a)
		throws IOException;
}


Changes to modules/gcf/src/main/java/javax/microedition/io/file/FileConnection.java.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package javax.microedition.io.file;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.microedition.io.StreamConnection;

public interface FileConnection
	extends StreamConnection
{
................................................................................
	
	Enumeration list(String __a, boolean __b)
		throws IOException;
	
	void mkdir()
		throws IOException;
	
	DataInputStream openDataInputStream()
		throws IOException;
	
	DataOutputStream openDataOutputStream()
		throws IOException;
	
	InputStream openInputStream()
		throws IOException;
	
	OutputStream openOutputStream()
		throws IOException;
	
	OutputStream openOutputStream(long __a)
		throws IOException;
	
	void rename(String __a)
		throws IOException;
	
	void setFileConnection(String __a)







<
<

<







 







<
<
<
<
<
<
<
<
<
<
<
<







6
7
8
9
10
11
12


13

14
15
16
17
18
19
20
..
57
58
59
60
61
62
63












64
65
66
67
68
69
70
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package javax.microedition.io.file;



import java.io.IOException;

import java.io.OutputStream;
import java.util.Enumeration;
import javax.microedition.io.StreamConnection;

public interface FileConnection
	extends StreamConnection
{
................................................................................
	
	Enumeration list(String __a, boolean __b)
		throws IOException;
	
	void mkdir()
		throws IOException;
	












	OutputStream openOutputStream(long __a)
		throws IOException;
	
	void rename(String __a)
		throws IOException;
	
	void setFileConnection(String __a)

Changes to modules/io/src/main/java/net/multiphasicapps/io/Base64Alphabet.java.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	/** The URL alphabet. */
	URL('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
		'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', '='),
	
	/** End. */
	;
	
	/** The alphabet for the characters. */
	final char[] _alphabet;
	
	/**
	 * Initializes the alphabet.







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	/** The URL alphabet. */
	URL('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
		'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', '='),
	
	/* End. */
	;
	
	/** The alphabet for the characters. */
	final char[] _alphabet;
	
	/**
	 * Initializes the alphabet.

Changes to modules/io/src/main/java/net/multiphasicapps/io/ByteDeque.java.

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
....
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
	
	/** The relative position of the head in relation to the first block. */
	private volatile int _head;
	
	/** The relative position of the tail in relation to the last block. */
	private volatile int _tail;
	
	/**
	 * Sets the default block size.
	 *
	 * @since 2016/05/01
	 */
	static
	{
		// {@squirreljme.error BD21 The block size of the data deque is not
		// a power of two. (The specified block size)}
		if (Integer.bitCount(ByteDeque._BLOCK_SIZE) != 1)
			throw new RuntimeException(String.format("BD21 %d",
................................................................................
	 * @param __o The output offset into the array.
	 * @param __l The number of bytes to read or write.
	 * @param __set If {@code true} then bytes will be read from the input
	 * array for writing.
	 * @return The number of bytes read.
	 * @since 2016/08/04
	 */
	private final int __getOrSetVia(boolean __last, int __a, byte[] __b,
		int __o, int __l, boolean __set)
	{
		// Get some things
		int total = this._total;
		LinkedList<byte[]> blocks = this._blocks;
		int nb = blocks.size();
		int head = this._head, tail = this._tail;







|
|
|
|







 







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
....
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
	
	/** The relative position of the head in relation to the first block. */
	private volatile int _head;
	
	/** The relative position of the tail in relation to the last block. */
	private volatile int _tail;
	
	/*
	  Sets the default block size.
	 
	  @since 2016/05/01
	 */
	static
	{
		// {@squirreljme.error BD21 The block size of the data deque is not
		// a power of two. (The specified block size)}
		if (Integer.bitCount(ByteDeque._BLOCK_SIZE) != 1)
			throw new RuntimeException(String.format("BD21 %d",
................................................................................
	 * @param __o The output offset into the array.
	 * @param __l The number of bytes to read or write.
	 * @param __set If {@code true} then bytes will be read from the input
	 * array for writing.
	 * @return The number of bytes read.
	 * @since 2016/08/04
	 */
	private int __getOrSetVia(boolean __last, int __a, byte[] __b,
		int __o, int __l, boolean __set)
	{
		// Get some things
		int total = this._total;
		LinkedList<byte[]> blocks = this._blocks;
		int nb = blocks.size();
		int head = this._head, tail = this._tail;

Changes to modules/io/src/main/java/net/multiphasicapps/io/CompressionLevel.java.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	
	/** Slower compression. */
	SLOWER,
	
	/** Slowest compression. */
	SLOWEST,
	
	/** End. */
	;
	
	/** The default compression level. */
	public static final CompressionLevel DEFAULT = CompressionLevel.SLOW;
	
	/** The best compression level. */
	public static final CompressionLevel BEST = CompressionLevel.SLOWEST;







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	
	/** Slower compression. */
	SLOWER,
	
	/** Slowest compression. */
	SLOWEST,
	
	/* End. */
	;
	
	/** The default compression level. */
	public static final CompressionLevel DEFAULT = CompressionLevel.SLOW;
	
	/** The best compression level. */
	public static final CompressionLevel BEST = CompressionLevel.SLOWEST;

Changes to modules/io/src/main/java/net/multiphasicapps/io/DataEndianess.java.

20
21
22
23
24
25
26
27
28
29
30
{
	/** Big endian. */
	BIG,
	
	/** Little endian. */
	LITTLE,
	
	/** End. */
	;
}








|



20
21
22
23
24
25
26
27
28
29
30
{
	/** Big endian. */
	BIG,
	
	/** Little endian. */
	LITTLE,
	
	/* End. */
	;
}

Changes to modules/io/src/main/java/net/multiphasicapps/io/ExtendedDataInputStream.java.

295
296
297
298
299
300
301

302
303
304
305
306
307
308
	 * Reading stops in either case.
	 *
	 * @return The read line or {@code null} if the end of file was reached
	 * before any bytes were read.
	 * @throws IOException On read errors.
	 * @since 2016/09/18
	 */

	public String readLine()
		throws IOException
	{
		throw new todo.TODO();
	}
	
	/**







>







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
	 * Reading stops in either case.
	 *
	 * @return The read line or {@code null} if the end of file was reached
	 * before any bytes were read.
	 * @throws IOException On read errors.
	 * @since 2016/09/18
	 */
	@SuppressWarnings({"override", "RedundantThrows"})
	public String readLine()
		throws IOException
	{
		throw new todo.TODO();
	}
	
	/**

Changes to modules/io/src/main/java/net/multiphasicapps/io/InflaterInputStream.java.

1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
				return 80 + this.__readBits(6, true);
		else
			if (this.__readBits(1, true) != 0)
				return 16 + this.__readBits(6, true);
			else
				if (this.__readBits(1, true) != 0)
					if (this.__readBits(1, true) != 0)
						return 0 + this.__readBits(4, true);
					else
						return 272 + this.__readBits(3, true);
				else
					return 256 + this.__readBits(4, true);
	}
	
	/**







|







1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
				return 80 + this.__readBits(6, true);
		else
			if (this.__readBits(1, true) != 0)
				return 16 + this.__readBits(6, true);
			else
				if (this.__readBits(1, true) != 0)
					if (this.__readBits(1, true) != 0)
						return this.__readBits(4, true);
					else
						return 272 + this.__readBits(3, true);
				else
					return 256 + this.__readBits(4, true);
	}
	
	/**

Changes to modules/io/src/main/java/net/multiphasicapps/io/MIMEFileDecoder.java.

324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
		
		/**
		 * Reads the header information.
		 *
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private final void __readHeader()
			throws IOException
		{
			BufferedReader in = this.in;
			
			// {@squirreljme.error BD1k Unexpected end of file while trying
			// to read MIME header.}
			String ln = in.readLine();
................................................................................
		/**
		 * Reads the next line into the character.
		 *
		 * @return If a line was read.
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private final boolean __readNext()
			throws IOException
		{
			// {@squirreljme.error BD1m Unexpected EOF while read the MIME
			// file data.}
			String ln = this.in.readLine();
			if (ln == null)
				throw new IOException("BD1m");







|







 







|







324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
		
		/**
		 * Reads the header information.
		 *
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private void __readHeader()
			throws IOException
		{
			BufferedReader in = this.in;
			
			// {@squirreljme.error BD1k Unexpected end of file while trying
			// to read MIME header.}
			String ln = in.readLine();
................................................................................
		/**
		 * Reads the next line into the character.
		 *
		 * @return If a line was read.
		 * @throws IOException On read errors.
		 * @since 2018/11/25
		 */
		private boolean __readNext()
			throws IOException
		{
			// {@squirreljme.error BD1m Unexpected EOF while read the MIME
			// file data.}
			String ln = this.in.readLine();
			if (ln == null)
				throw new IOException("BD1m");

Changes to modules/io/src/main/java/net/multiphasicapps/io/PrintStreamWriter.java.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// For more information see license.mkd.
// ---------------------------------------------------------------------------

package net.multiphasicapps.io;

import java.io.Closeable;
import java.io.IOException;
import java.io.PrintStream;
import java.io.Writer;

/**
 * This is a class which takes input characters and writes to the given
 * print stream.
................................................................................
 *
 * This class is thread safe.
 *
 * @since 2016/08/12
 */
public class PrintStreamWriter
	extends Writer
	implements Closeable
{
	/** The stream to write to. */
	protected final PrintStream output;
	
	/**
	 * Initializes the wrapped print stream writer.
	 *







<







 







<







6
7
8
9
10
11
12

13
14
15
16
17
18
19
..
20
21
22
23
24
25
26

27
28
29
30
31
32
33
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// For more information see license.mkd.
// ---------------------------------------------------------------------------

package net.multiphasicapps.io;


import java.io.IOException;
import java.io.PrintStream;
import java.io.Writer;

/**
 * This is a class which takes input characters and writes to the given
 * print stream.
................................................................................
 *
 * This class is thread safe.
 *
 * @since 2016/08/12
 */
public class PrintStreamWriter
	extends Writer

{
	/** The stream to write to. */
	protected final PrintStream output;
	
	/**
	 * Initializes the wrapped print stream writer.
	 *

Changes to modules/io/src/main/java/net/multiphasicapps/io/TableSectionOutputStream.java.

336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
	}
	
	/**
	 * Undirties and calculations all the section layout and information.
	 *
	 * @since 2019/08/25
	 */
	private final void __undirty()
	{
		// There is no need to calculate if this is not dirty at all
		__Dirty__ dirty = this._dirty;
		if (!dirty._dirty)
			return;
		
		// Our current file size







|







336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
	}
	
	/**
	 * Undirties and calculations all the section layout and information.
	 *
	 * @since 2019/08/25
	 */
	private void __undirty()
	{
		// There is no need to calculate if this is not dirty at all
		__Dirty__ dirty = this._dirty;
		if (!dirty._dirty)
			return;
		
		// Our current file size

Changes to modules/io/src/main/java/net/multiphasicapps/io/__RewriteType__.java.

18
19
20
21
22
23
24
25
26
27
28
{
	/** Short. */
	SHORT,
	
	/** Integer. */
	INTEGER,
	
	/** End. */
	;
}








|



18
19
20
21
22
23
24
25
26
27
28
{
	/** Short. */
	SHORT,
	
	/** Integer. */
	INTEGER,
	
	/* End. */
	;
}

Changes to modules/io/src/main/java/net/multiphasicapps/io/__RewriteValue__.java.

18
19
20
21
22
23
24
25
26
27
28
{
	/** Address. */
	ADDRESS,
	
	/** Size. */
	SIZE,
	
	/** End. */
	;
}








|



18
19
20
21
22
23
24
25
26
27
28
{
	/** Address. */
	ADDRESS,
	
	/** Size. */
	SIZE,
	
	/* End. */
	;
}

Changes to modules/jblend-api/src/main/java/com/jblend/io/j2me/events/JoclEventDispatcher.java.

10
11
12
13
14
15
16

17
18
19
20
21
22
23
package com.jblend.io.j2me.events;

@SuppressWarnings("NewMethodNamingConvention")
public class JoclEventDispatcher
	implements EventDispatcherInterface
{
	

	public void dispatch(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    public static void setPhraseEventDispatcherInterface(JoclEventDispatcherInterface var0)
	{







>







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.jblend.io.j2me.events;

@SuppressWarnings("NewMethodNamingConvention")
public class JoclEventDispatcher
	implements EventDispatcherInterface
{
	
	@Override
	public void dispatch(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    public static void setPhraseEventDispatcherInterface(JoclEventDispatcherInterface var0)
	{

Changes to modules/jblend-api/src/main/java/com/jblend/media/audio/AudioData.java.

29
30
31
32
33
34
35

36
37
38
39
40

41
42
43
44
45
	}

    public AudioData(byte[] var1)
	{
		throw new todo.TODO();
	}


    public String getMediaType()
	{
		throw new todo.TODO();
	}


    public void setData(byte[] var1)
	{
		throw new todo.TODO();
	}
}







>
|




>
|




29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
	}

    public AudioData(byte[] var1)
	{
		throw new todo.TODO();
	}

    @Override
	public String getMediaType()
	{
		throw new todo.TODO();
	}

    @Override
	public void setData(byte[] var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/media/audio/AudioPlayer.java.

37
38
39
40
41
42
43

44
45
46
47
48
49
50
51
..
57
58
59
60
61
62
63

64
























65
66
67
68

69
70
71
72
73
74

75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
	}

    public void setData(AudioData var1)
	{
		throw new todo.TODO();
	}


    public void setData(MediaData var1)
	{
		throw new todo.TODO();
	}

    public int getCurrent()
	{
		throw new todo.TODO();
................................................................................
	}

    public void setVolume(int var1)
	{
		throw new todo.TODO();
	}


    public void play()
























	{
		throw new todo.TODO();
	}


    public void play(boolean var1)
	{
		throw new todo.TODO();
	}

    public void play(int var1)

	{
		throw new todo.TODO();
	}

    public void stop()
	{
		throw new todo.TODO();
	}

    public void pause()

	{
		throw new todo.TODO();
	}

    public void resume()
	{
		throw new todo.TODO();
	}

    public int getState()
	{
		throw new todo.TODO();
	}

    public void addMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}

    public void removeMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}
}







>
|







 







>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




>
|




|
>




|
<
<
<
<
<
>




|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|




37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
..
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107





108
109
110
111
112
113














114
115
116
117
118
	}

    public void setData(AudioData var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void setData(MediaData var1)
	{
		throw new todo.TODO();
	}

    public int getCurrent()
	{
		throw new todo.TODO();
................................................................................
	}

    public void setVolume(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void play()
	{
		throw new todo.TODO();
	}

    @Override
	public void play(boolean var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void play(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void stop()
	{
		throw new todo.TODO();
	}

    @Override
	public void pause()
	{
		throw new todo.TODO();
	}

    @Override
	public void resume()
	{
		throw new todo.TODO();
	}

    @Override
	public int getState()
	{
		throw new todo.TODO();
	}

    @Override





	public void addMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}

    @Override














	public void removeMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/media/video/VideoData.java.

30
31
32
33
34
35
36

37
38
39
40
41

42
43
44
45
46
	}

    public int getHeight()
	{
		throw new todo.TODO();
	}


    public String getMediaType()
	{
		throw new todo.TODO();
	}


    public void setData(byte[] var1)
	{
		throw new todo.TODO();
	}
}







>
|




>
|




30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
	}

    public int getHeight()
	{
		throw new todo.TODO();
	}

    @Override
	public String getMediaType()
	{
		throw new todo.TODO();
	}

    @Override
	public void setData(byte[] var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/media/video/VideoPlayer.java.

38
39
40
41
42
43
44

45
46
47
48
49

50
51
52
53
54

55
56
57
58
59

60
61
62
63
64

65
66
67
68
69

70
71
72
73
74

75
76
77
78
79

80
81
82
83
84

85
86
87
88
89

90
91
92
93
94

95
96
97
98
99
100
101
102
103
104

105
























106
107
108
109

110
111
112
113
114
115

116
117
118
119
120
121
122
123
124
125

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
	}

    public void setData(VideoData var1)
	{
		throw new todo.TODO();
	}


    public void setData(MediaData var1)
	{
		throw new todo.TODO();
	}


    public int getX()
	{
		throw new todo.TODO();
	}


    public int getY()
	{
		throw new todo.TODO();
	}


    public int getWidth()
	{
		throw new todo.TODO();
	}


    public int getHeight()
	{
		throw new todo.TODO();
	}


    public void setBounds(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}


    public int getOriginX()
	{
		throw new todo.TODO();
	}


    public int getOriginY()
	{
		throw new todo.TODO();
	}


    public void setOrigin(int var1, int var2)
	{
		throw new todo.TODO();
	}


    public int getMediaWidth()
	{
		throw new todo.TODO();
	}


    public int getMediaHeight()
	{
		throw new todo.TODO();
	}

    public void repaintCurrent()
	{
		throw new todo.TODO();
	}


    public void play()
























	{
		throw new todo.TODO();
	}


    public void play(boolean var1)
	{
		throw new todo.TODO();
	}

    public void play(int var1)

	{
		throw new todo.TODO();
	}

    public void stop()
	{
		throw new todo.TODO();
	}

    public void pause()

	{
		throw new todo.TODO();
	}

    public void resume()
	{
		throw new todo.TODO();
	}

    public int getState()
	{
		throw new todo.TODO();
	}

    public void addMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}

    public void removeMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}
}








>
|




>
|




>
|




>
|




>
|




>
|




>
|




>
|




>
|




>
|




>
|









>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




>
|




|
>




|
<
<
<
<
<
>




|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|





38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158





159
160
161
162
163
164














165
166
167
168
169
170
	}

    public void setData(VideoData var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void setData(MediaData var1)
	{
		throw new todo.TODO();
	}

    @Override
	public int getX()
	{
		throw new todo.TODO();
	}

    @Override
	public int getY()
	{
		throw new todo.TODO();
	}

    @Override
	public int getWidth()
	{
		throw new todo.TODO();
	}

    @Override
	public int getHeight()
	{
		throw new todo.TODO();
	}

    @Override
	public void setBounds(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    @Override
	public int getOriginX()
	{
		throw new todo.TODO();
	}

    @Override
	public int getOriginY()
	{
		throw new todo.TODO();
	}

    @Override
	public void setOrigin(int var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override
	public int getMediaWidth()
	{
		throw new todo.TODO();
	}

    @Override
	public int getMediaHeight()
	{
		throw new todo.TODO();
	}

    public void repaintCurrent()
	{
		throw new todo.TODO();
	}

    @Override
	public void play()
	{
		throw new todo.TODO();
	}

    @Override
	public void play(boolean var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void play(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public void stop()
	{
		throw new todo.TODO();
	}

    @Override
	public void pause()
	{
		throw new todo.TODO();
	}

    @Override
	public void resume()
	{
		throw new todo.TODO();
	}

    @Override
	public int getState()
	{
		throw new todo.TODO();
	}

    @Override





	public void addMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}

    @Override














	public void removeMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/micro/lcdui/CalendarImpl.java.

9
10
11
12
13
14
15

16
17
18
19
20

21
22
23
24
25

26
27
28
29
30

31
32
33
34
35

package com.jblend.micro.lcdui;

import javax.microedition.lcdui.Graphics;

public class CalendarImpl implements CalendarInterface {
	

	public void initCalendarValues(int var1, int var2)
	{
		throw new todo.TODO();
	}


    public void paint(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7)
	{
		throw new todo.TODO();
	}


    public String getBackCommand()
	{
		throw new todo.TODO();
	}


    public String getSaveCommand()
	{
		throw new todo.TODO();
	}
}







>





>
|




>
|




>
|




9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

package com.jblend.micro.lcdui;

import javax.microedition.lcdui.Graphics;

public class CalendarImpl implements CalendarInterface {
	
	@Override
	public void initCalendarValues(int var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override
	public void paint(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7)
	{
		throw new todo.TODO();
	}

    @Override
	public String getBackCommand()
	{
		throw new todo.TODO();
	}

    @Override
	public String getSaveCommand()
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/micro/lcdui/GaugeImpl.java.

9
10
11
12
13
14
15

16
17
18
19
20

21
























22
23
24
25
26

27
28
29
30
31
32
33
34
35
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

package com.jblend.micro.lcdui;

import javax.microedition.lcdui.Graphics;

public class GaugeImpl implements GaugeInterface {
	

	public void init(boolean var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}


    public void setValue(int var1)
























	{
		throw new todo.TODO();
	}

    public int getValue()

	{
		throw new todo.TODO();
	}

    public void setMaxValue(int var1)
	{
		throw new todo.TODO();
	}

    public int getMaxValue()

	{
		throw new todo.TODO();
	}

    public void paint(boolean var1, Graphics var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    public int processEvent(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    public synchronized int getWidth()
	{
		throw new todo.TODO();
	}

    public synchronized int getHeight()
	{
		throw new todo.TODO();
	}
}







>





>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




|
>




|
<
<
<
<
<
>




|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|




9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58





59
60
61
62
63
64














65
66
67
68
69

package com.jblend.micro.lcdui;

import javax.microedition.lcdui.Graphics;

public class GaugeImpl implements GaugeInterface {
	
	@Override
	public void init(boolean var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    @Override
	public void setValue(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public int getValue()
	{
		throw new todo.TODO();
	}

    @Override
	public void setMaxValue(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public int getMaxValue()
	{
		throw new todo.TODO();
	}

    @Override
	public void paint(boolean var1, Graphics var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    @Override
	public int processEvent(int var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    @Override





	public synchronized int getWidth()
	{
		throw new todo.TODO();
	}

    @Override














	public synchronized int getHeight()
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/micro/lcdui/WatchImpl.java.

15
16
17
18
19
20
21

22






23
24
25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	implements WatchInterface
{
    public WatchImpl()
	{
		throw new todo.TODO();
	}


    public void initWatchValues(int var1, int var2)






	{
		throw new todo.TODO();
	}

    public void paint(Graphics var1, int var2, int var3, int var4)

	{
		throw new todo.TODO();
	}

    public String getBackCommand()
	{
		throw new todo.TODO();
	}

    public String getSaveCommand()
	{
		throw new todo.TODO();
	}
}








>
|
>
>
>
>
>
>




|
>




|
<
<
<
<
|





15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40




41
42
43
44
45
46
	implements WatchInterface
{
    public WatchImpl()
	{
		throw new todo.TODO();
	}

    @Override
	public void initWatchValues(int var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override
	public void paint(Graphics var1, int var2, int var3, int var4)
	{
		throw new todo.TODO();
	}

    @Override
	public String getBackCommand()
	{
		throw new todo.TODO();
	}

    @Override




	public String getSaveCommand()
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/util/Hashtable.java.

26
27
28
29
30
31
32

33
34
35
36
37

38
39
40
41
42

    public Hashtable(int var1) {
        super(0, 0.0F);
        
        throw new todo.TODO();
    }


    public void writeObject(SimpleObjectOutputStream var1) throws IOException
	{
		throw new todo.TODO();
	}


    public void readObject(SimpleObjectInputStream var1) throws IOException
	{
		throw new todo.TODO();
	}
}







>
|




>
|




26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

    public Hashtable(int var1) {
        super(0, 0.0F);
        
        throw new todo.TODO();
    }

    @Override
	public void writeObject(SimpleObjectOutputStream var1) throws IOException
	{
		throw new todo.TODO();
	}

    @Override
	public void readObject(SimpleObjectInputStream var1) throws IOException
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/util/Log.java.

33
34
35
36
37
38
39

40
41
42
43
44
45
46

    public static final void err(String var0)
	{
		throw new todo.TODO();
	}

    private static final class PrivateOutputStream extends OutputStream {

        public void write(int var1) throws IOException
		{
			throw new todo.TODO();
		}
    }
}








>
|






33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

    public static final void err(String var0)
	{
		throw new todo.TODO();
	}

    private static final class PrivateOutputStream extends OutputStream {
        @Override
		public void write(int var1) throws IOException
		{
			throw new todo.TODO();
		}
    }
}

Changes to modules/jblend-api/src/main/java/com/jblend/util/NativeThreadMonitor.java.

13
14
15
16
17
18
19

20
21
22
23
24
25
	extends Thread
{
    public static void reset()
	{
		throw new todo.TODO();
	}


    public void run()
	{
		throw new todo.TODO();
	}
}








>
|





13
14
15
16
17
18
19
20
21
22
23
24
25
26
	extends Thread
{
    public static void reset()
	{
		throw new todo.TODO();
	}

    @Override
	public void run()
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/util/SimpleStack.java.

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
		throw new todo.TODO();
	}

    public Enumeration elements()
	{
		throw new todo.TODO();
	}

    final class SimpleStackEnumerator implements Enumeration {
        public boolean hasMoreElements()
		{
			throw new todo.TODO();
		}

        public Object nextElement()
		{
			throw new todo.TODO();
		}
    }
}







|
<
<
<
<
<
<
<
<
<
<
<
<
51
52
53
54
55
56
57
58












		throw new todo.TODO();
	}

    public Enumeration elements()
	{
		throw new todo.TODO();
	}
}












Changes to modules/jblend-api/src/main/java/com/jblend/util/SimpleVector.java.

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
		throw new todo.TODO();
	}

    public Enumeration elements()
	{
		throw new todo.TODO();
	}

    final class SimpleVectorEnumerator implements Enumeration {
        public boolean hasMoreElements()
		{
			throw new todo.TODO();
		}

        public Object nextElement()
		{
			throw new todo.TODO();
		}
    }
}








|
<
<
|
<
<
<
<
<
<
<
<
<
<
76
77
78
79
80
81
82
83


84










		throw new todo.TODO();
	}

    public Enumeration elements()
	{
		throw new todo.TODO();
	}
}













Changes to modules/jblend-api/src/main/java/com/jblend/util/StringKeyHashtable.java.

32
33
34
35
36
37
38

39
40
41
42
43

44
45
46
47
48
	}

    public final boolean containsKey(String var1)
	{
		throw new todo.TODO();
	}


    public final Object put(Object var1, Object var2)
	{
		throw new todo.TODO();
	}


    protected final void rehash()
	{
		throw new todo.TODO();
	}
}







>
|




>
|




32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
	}

    public final boolean containsKey(String var1)
	{
		throw new todo.TODO();
	}

    @Override
	public final Object put(Object var1, Object var2)
	{
		throw new todo.TODO();
	}

    @Override
	protected final void rehash()
	{
		throw new todo.TODO();
	}
}

Changes to modules/jblend-api/src/main/java/com/jblend/util/Vector.java.

26
27
28
29
30
31
32

33
34
35
36
37

38
39
40
41
42
43

    public Vector(int var1) {
        super(0, 0);
        
        throw new todo.TODO();
    }


    public void writeObject(SimpleObjectOutputStream var1) throws IOException
	{
		throw new todo.TODO();
	}


    public void readObject(SimpleObjectInputStream var1) throws IOException
	{
		throw new todo.TODO();
	}
}








>
|




>
|





26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

    public Vector(int var1) {
        super(0, 0);
        
        throw new todo.TODO();
    }

    @Override
	public void writeObject(SimpleObjectOutputStream var1) throws IOException
	{
		throw new todo.TODO();
	}

    @Override
	public void readObject(SimpleObjectInputStream var1) throws IOException
	{
		throw new todo.TODO();
	}
}

Changes to modules/launcher/src/main/java/cc/squirreljme/runtime/launcher/ui/MidletMain.java.

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
246
247
248
249
250
251
252

253
254
255
256
257
258
259
	
	/** The programs which are mapped to the list. */
	private volatile __Program__[] _programs;
	
	/** Automatic launch program. */
	private volatile String _autolaunch;
	
	/**
	 * Initializes the launcher.
	 *
	 * @since 2019/04/14
	 */
	{
		// Do not crash if we cannot read properties
		String al = null;
		try
		{
			al = System.getProperty(MidletMain.AUTOLAUNCH_PROPERTY);
................................................................................
		// Refresh the list in another thread
		Thread refresher = new Thread("LauncherRefresh")
			{
				/**
				 * {@inheritDoc}
				 * @since 2019/05/19
				 */

				public final void run()
				{
					MidletMain.this.refresh();
				}
			};
		refresher.start();
		







|
|
|
|







 







>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
	
	/** The programs which are mapped to the list. */
	private volatile __Program__[] _programs;
	
	/** Automatic launch program. */
	private volatile String _autolaunch;
	
	/*
	  Initializes the launcher.
	 
	  @since 2019/04/14
	 */
	{
		// Do not crash if we cannot read properties
		String al = null;
		try
		{
			al = System.getProperty(MidletMain.AUTOLAUNCH_PROPERTY);
................................................................................
		// Refresh the list in another thread
		Thread refresher = new Thread("LauncherRefresh")
			{
				/**
				 * {@inheritDoc}
				 * @since 2019/05/19
				 */
				@Override
				public final void run()
				{
					MidletMain.this.refresh();
				}
			};
		refresher.start();
		

Changes to modules/launcher/src/main/java/cc/squirreljme/runtime/launcher/ui/SplashScreen.java.

143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
	 * Draws the copyright text onto the given graphics.
	 *
	 * @param __g The graphics to draw onto.
	 * @param __swip Should "SquirrelJME Loading..." be drawn?
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/29
	 */
	private static final void __copyright(Graphics __g, boolean __swip)
		throws NullPointerException
	{
		if (__g == null)
			throw new NullPointerException("NARG");
		
		// Draw version number
		__g.setFont(Font.getFont("sansserif", 0, 16));







|







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
	 * Draws the copyright text onto the given graphics.
	 *
	 * @param __g The graphics to draw onto.
	 * @param __swip Should "SquirrelJME Loading..." be drawn?
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/29
	 */
	private static void __copyright(Graphics __g, boolean __swip)
		throws NullPointerException
	{
		if (__g == null)
			throw new NullPointerException("NARG");
		
		// Draw version number
		__g.setFont(Font.getFont("sansserif", 0, 16));

Changes to modules/lcdui-demo/src/main/java/net/multiphasicapps/lcduidemo/Events.java.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
...
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
		
		/** The last key event. */
		volatile int _keycode;
		
		/** The last key done. */
		volatile KeyboardType _keyboardtype;
		
		/**
		 * Initializes the canvas.
		 *
		 * @since 2018/12/01
		 */
		{
			// Setup title
			this.setTitle("Events");
			
			// Draw as opaque, so we do not need to update everything
			this.setPaintMode(false);
................................................................................
	}
	
	/**
	 * The type of keyboard event which happened.
	 *
	 * @since 2018/12/01
	 */
	public static enum KeyboardType
	{
		/** Pressed. */
		PRESSED,
		
		/** Released. */
		RELEASED,
		
		/** Repeated. */
		REPEATED,
		
		/** End. */
		;
	}
	
	/**
	 * The type of pointer event which happened.
	 *
	 * @since 2018/12/01
	 */
	public static enum PointerType
	{
		/** Pressed. */
		PRESSED,
		
		/** Released. */
		RELEASED,
		
		/** Dragged. */
		DRAGGED,
		
		/** End. */
		;
	}
}








|
|
|
|







 







|










|








|










|




110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
...
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
		
		/** The last key event. */
		volatile int _keycode;
		
		/** The last key done. */
		volatile KeyboardType _keyboardtype;
		
		/*
		  Initializes the canvas.
		 
		  @since 2018/12/01
		 */
		{
			// Setup title
			this.setTitle("Events");
			
			// Draw as opaque, so we do not need to update everything
			this.setPaintMode(false);
................................................................................
	}
	
	/**
	 * The type of keyboard event which happened.
	 *
	 * @since 2018/12/01
	 */
	public enum KeyboardType
	{
		/** Pressed. */
		PRESSED,
		
		/** Released. */
		RELEASED,
		
		/** Repeated. */
		REPEATED,
		
		/* End. */
		;
	}
	
	/**
	 * The type of pointer event which happened.
	 *
	 * @since 2018/12/01
	 */
	public enum PointerType
	{
		/** Pressed. */
		PRESSED,
		
		/** Released. */
		RELEASED,
		
		/** Dragged. */
		DRAGGED,
		
		/* End. */
		;
	}
}

Changes to modules/lcdui-demo/src/main/java/net/multiphasicapps/lcduidemo/Fonts.java.

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
	 */
	public static final class DemoCanvas
		extends Canvas
	{
		/** Fonts to use. */
		private final Font[] _fonts;
		
		/**
		 * Initializes the canvas.
		 *
		 * @since 2018/11/23
		 */
		{
			this.setTitle("Font Demo");
			
			// Draw as transparent
			this.setPaintMode(false);
			







|
|
|
|







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
	 */
	public static final class DemoCanvas
		extends Canvas
	{
		/** Fonts to use. */
		private final Font[] _fonts;
		
		/*
		  Initializes the canvas.
		 
		  @since 2018/11/23
		 */
		{
			this.setTitle("Font Demo");
			
			// Draw as transparent
			this.setPaintMode(false);
			

Changes to modules/lcdui-demo/src/main/java/net/multiphasicapps/lcduidemo/Mystify.java.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
		/** Update lock to prevent multiple threads updating at once. */
		private volatile boolean _lockflag;
		
		/** The last time an update happened. */
		private volatile long _nextnano =
			Long.MIN_VALUE;
		
		/**
		 * Initializes the canvas state.
		 *
		 * @since 2018/11/22
		 */
		{
			// Setup title
			this.setTitle("Mystify Your Squirrels");
			
			// Draw as transparent
			this.setPaintMode(false);







|
|
|
|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
		/** Update lock to prevent multiple threads updating at once. */
		private volatile boolean _lockflag;
		
		/** The last time an update happened. */
		private volatile long _nextnano =
			Long.MIN_VALUE;
		
		/*
		  Initializes the canvas state.
		 
		  @since 2018/11/22
		 */
		{
			// Setup title
			this.setTitle("Mystify Your Squirrels");
			
			// Draw as transparent
			this.setPaintMode(false);

Changes to modules/markdown-writer/src/main/java/net/multiphasicapps/markdownwriter/MarkdownTextStyle.java.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** Strong Emphasis. */
	STRONG_EMPHASIS(true),
	
	/** Source code. */
	CODE(false),
	
	/** End. */
	;
	
	/** Is this a normal text style? */
	protected final boolean normal;
	
	/**
	 * Initializes the style information.







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** Strong Emphasis. */
	STRONG_EMPHASIS(true),
	
	/** Source code. */
	CODE(false),
	
	/* End. */
	;
	
	/** Is this a normal text style? */
	protected final boolean normal;
	
	/**
	 * Initializes the style information.

Changes to modules/markdown-writer/src/main/java/net/multiphasicapps/markdownwriter/__SectionHeader__.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 */
class __SectionHeader__
	extends __Section__
{
	/**
	 * Initializes the section header.
	 *
	 * @param __mkd The owning writer.
	 * @param __abs Absolutely set the specified level if {@code true},
	 * otherwise level adjustment will be relative.
	 * @param __level The level to set to if absolute or relative from a
	 * previous level.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 */
class __SectionHeader__
	extends __Section__
{
	/**
	 * Initializes the section header.
	 *
	 * @param __mdw The owning writer.
	 * @param __abs Absolutely set the specified level if {@code true},
	 * otherwise level adjustment will be relative.
	 * @param __level The level to set to if absolute or relative from a
	 * previous level.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */

Changes to modules/markdown-writer/src/main/java/net/multiphasicapps/markdownwriter/__SectionList__.java.

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
	/** Create new item entry? */
	volatile boolean _newitem =
		true;
	
	/**
	 * Initializes the base for lists.
	 *
	 * @param __mkd The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionList__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
	/** Create new item entry? */
	volatile boolean _newitem =
		true;
	
	/**
	 * Initializes the base for lists.
	 *
	 * @param __mdw The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionList__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);

Changes to modules/markdown-writer/src/main/java/net/multiphasicapps/markdownwriter/__SectionParagraph__.java.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	/** Just started the paragraph? */
	volatile boolean _juststarted =
		true;
	
	/**
	 * Initializes the paragraph.
	 *
	 * @param __mkd The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionParagraph__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	/** Just started the paragraph? */
	volatile boolean _juststarted =
		true;
	
	/**
	 * Initializes the paragraph.
	 *
	 * @param __mdw The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionParagraph__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);

Changes to modules/markdown-writer/src/main/java/net/multiphasicapps/markdownwriter/__SectionUnorderedList__.java.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 */
class __SectionUnorderedList__
	extends __SectionList__
{
	/**
	 * Initializes the unordered list section.
	 *
	 * @param __mkd The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionUnorderedList__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 */
class __SectionUnorderedList__
	extends __SectionList__
{
	/**
	 * Initializes the unordered list section.
	 *
	 * @param __mdw The owning writer.
	 * @throws IOException On read/write errors.
	 * @since 2016/10/02
	 */
	__SectionUnorderedList__(MarkdownWriter __mdw)
		throws IOException
	{
		super(__mdw);

Changes to modules/media-api/src/main/java/cc/squirreljme/runtime/media/NullPlayer.java.

328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
	/**
	 * Sends an event to all listeners.
	 *
	 * @param __key The key used.
	 * @param __val The value used.
	 * @since 2019/06/28
	 */
	private final void __event(String __key, Object __val)
	{
		PlayerListener[] poke;
		
		// Get listeners to poke
		List<PlayerListener> listeners = this._listeners;
		synchronized (listeners)
		{







|







328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
	/**
	 * Sends an event to all listeners.
	 *
	 * @param __key The key used.
	 * @param __val The value used.
	 * @since 2019/06/28
	 */
	private void __event(String __key, Object __val)
	{
		PlayerListener[] poke;
		
		// Get listeners to poke
		List<PlayerListener> listeners = this._listeners;
		synchronized (listeners)
		{

Changes to modules/media-api/src/main/java/javax/microedition/media/control/VideoControl.java.

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	byte[] getSnapshot(String __a)
		throws MediaException;
	
	int getSourceHeight();
	
	int getSourceWidth();
	
	Object initDisplayMode(int __a, Object __b);
	
	void setDisplayFullScreen(boolean __a)
		throws MediaException;
	
	void setDisplayLocation(int __a, int __b);
	
	void setDisplaySize(int __a, int __b)
		throws MediaException;
	
	void setVisible(boolean __a);
}









<
<












29
30
31
32
33
34
35


36
37
38
39
40
41
42
43
44
45
46
47
	byte[] getSnapshot(String __a)
		throws MediaException;
	
	int getSourceHeight();
	
	int getSourceWidth();
	


	void setDisplayFullScreen(boolean __a)
		throws MediaException;
	
	void setDisplayLocation(int __a, int __b);
	
	void setDisplaySize(int __a, int __b)
		throws MediaException;
	
	void setVisible(boolean __a);
}


Changes to modules/media-api/src/main/java/javax/microedition/media/protocol/DataSource.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package javax.microedition.media.protocol;

import java.io.IOException;
import javax.microedition.media.Control;
import javax.microedition.media.Controllable;

public abstract class DataSource
	implements Controllable
{
	public DataSource(String __a)
	{
................................................................................
	public abstract void connect()
		throws IOException;
	
	public abstract void disconnect();
	
	public abstract String getContentType();
	
	public abstract Control getControl(String __a);
	
	public abstract Control[] getControls();
	
	public abstract SourceStream[] getStreams();
	
	public abstract void start()
		throws IOException;
	
	public abstract void stop()
		throws IOException;







<







 







<
<
<
<







7
8
9
10
11
12
13

14
15
16
17
18
19
20
..
24
25
26
27
28
29
30




31
32
33
34
35
36
37
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package javax.microedition.media.protocol;

import java.io.IOException;

import javax.microedition.media.Controllable;

public abstract class DataSource
	implements Controllable
{
	public DataSource(String __a)
	{
................................................................................
	public abstract void connect()
		throws IOException;
	
	public abstract void disconnect();
	
	public abstract String getContentType();
	




	public abstract SourceStream[] getStreams();
	
	public abstract void start()
		throws IOException;
	
	public abstract void stop()
		throws IOException;

Changes to modules/meep-lui/src/main/java/javax/microedition/lui/DisplayCapability.java.

34
35
36
37
38
39
40
41
42
43
44
	
	/** Supports text colors. */
	SUPPORTS_TEXT_COLORS,
	
	/** Supports vertical scrolling. */
	SUPPORTS_VERTICAL_SCROLLING,
	
	/** End. */
	;
}








|



34
35
36
37
38
39
40
41
42
43
44
	
	/** Supports text colors. */
	SUPPORTS_TEXT_COLORS,
	
	/** Supports vertical scrolling. */
	SUPPORTS_VERTICAL_SCROLLING,
	
	/* End. */
	;
}

Changes to modules/meep-midlet/src/main/java/javax/microedition/midlet/AutoStartPermission.java.

18
19
20
21
22
23
24

25
26
27
28
29
{
	public AutoStartPermission()
	{
		super(null);
		throw new todo.TODO();
	}


	public boolean implies(Permission __p)
	{
		throw new todo.TODO();
	}
}







>





18
19
20
21
22
23
24
25
26
27
28
29
30
{
	public AutoStartPermission()
	{
		super(null);
		throw new todo.TODO();
	}

	@Override
	public boolean implies(Permission __p)
	{
		throw new todo.TODO();
	}
}

Changes to modules/meep-midlet/src/main/java/javax/microedition/midlet/MIDlet.java.

44
45
46
47
48
49
50

51
52
53








54
55
56
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
...
194
195
196
197
198
199
200

201
202
203
204
205
206
207
208
209
210
211
212

213
214
215
216
217
218
219

220
221
222
223
224
225
226
...
235
236
237
238
239
240
241

242
243
244
245
246
247
248
249
250
251
252
	/**
	 * Signals that the MIDlet is in the destruction state.
	 *
	 * @param __uc Is is unconditional?
	 * @throws MIDletStateChangeException If the destruction might stop.
	 * @since 2020/02/29
	 */

	protected abstract void destroyApp(boolean __uc)
		throws MIDletStateChangeException;
	








	protected abstract void startApp()
		throws MIDletStateChangeException;
	
	/**
	 * Checks if the given permission is valid.
	 *
	 * Do not use this to check permissions.
	 *
	 * @param __p The permission to check.
	 * @return {@code 0} if permission is denied, {@code 1} if permitted,
	 * and {@code -1} if unknown.
	 * @throws IllegalStateException If this is a MIDP 3.0 application.

	 * @since 2019/05/05
	 */
	@Deprecated
	public final int checkPermission(String __p)
		throws IllegalStateException
	{
		// Ignore if null
................................................................................
	}
	
	/**
	 * Notifies that the application should be paused now.
	 *
	 * This does nothing on SquirrelJME.
	 *

	 * @since 2017/02/08
	 */
	@Deprecated
	public final void notifyPaused()
	{
	}
	
	/**
	 * This is code which should be called before the application is paused.
	 * 
	 * This does nothing on SquirrelJME.
	 *

	 * @since 2017/02/08
	 */
	@Deprecated
	public void pauseApp()
	{
	}
	

	public final boolean platformRequest(String __url)
		throws Exception
	{
		// Games from Konami require this to return true even though that means
		// the application should terminate after this point. This is handled
		// and does not thrown an exception on bad requests.
		// Returning false here will cause the games to not work.
................................................................................
	
	@Deprecated
	public final void resumeRequest()
	{
		throw new todo.TODO();
	}
	

	public static String getAppProperty(String __name, String __vend,
		String __attrname, String __attrdelim)
		throws NullPointerException
	{
		if (__attrname == null)
			throw new NullPointerException("NARG");
		
		throw new todo.TODO();
	}
}








>



>
>
>
>
>
>
>
>












>







 







>












>







>







 







>











44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
...
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
	/**
	 * Signals that the MIDlet is in the destruction state.
	 *
	 * @param __uc Is is unconditional?
	 * @throws MIDletStateChangeException If the destruction might stop.
	 * @since 2020/02/29
	 */
	@SuppressWarnings("deprecation")
	protected abstract void destroyApp(boolean __uc)
		throws MIDletStateChangeException;
	
	/**
	 * Signals that the application is started and any start logic should be
	 * performed.
	 *
	 * @throws MIDletStateChangeException If the start might stop.
	 * @since 2020/03/26
	 */
	@SuppressWarnings("deprecation")
	protected abstract void startApp()
		throws MIDletStateChangeException;
	
	/**
	 * Checks if the given permission is valid.
	 *
	 * Do not use this to check permissions.
	 *
	 * @param __p The permission to check.
	 * @return {@code 0} if permission is denied, {@code 1} if permitted,
	 * and {@code -1} if unknown.
	 * @throws IllegalStateException If this is a MIDP 3.0 application.
	 * @deprecated Via standard library.
	 * @since 2019/05/05
	 */
	@Deprecated
	public final int checkPermission(String __p)
		throws IllegalStateException
	{
		// Ignore if null
................................................................................
	}
	
	/**
	 * Notifies that the application should be paused now.
	 *
	 * This does nothing on SquirrelJME.
	 *
	 * @deprecated Via standard library.
	 * @since 2017/02/08
	 */
	@Deprecated
	public final void notifyPaused()
	{
	}
	
	/**
	 * This is code which should be called before the application is paused.
	 * 
	 * This does nothing on SquirrelJME.
	 *
	 * @deprecated Via standard library.
	 * @since 2017/02/08
	 */
	@Deprecated
	public void pauseApp()
	{
	}
	
	@SuppressWarnings("RedundantThrows")
	public final boolean platformRequest(String __url)
		throws Exception
	{
		// Games from Konami require this to return true even though that means
		// the application should terminate after this point. This is handled
		// and does not thrown an exception on bad requests.
		// Returning false here will cause the games to not work.
................................................................................
	
	@Deprecated
	public final void resumeRequest()
	{
		throw new todo.TODO();
	}
	
	@SuppressWarnings("unused")
	public static String getAppProperty(String __name, String __vend,
		String __attrname, String __attrdelim)
		throws NullPointerException
	{
		if (__attrname == null)
			throw new NullPointerException("NARG");
		
		throw new todo.TODO();
	}
}

Changes to modules/meep-midlet/src/main/java/javax/microedition/midlet/MIDletStateChangeException.java.

12
13
14
15
16
17
18

19
20
21
22
23
24
25

/**
 * This must be thrown if the state change in a MIDlet has failed, however
 * it is deprecated and no longer should be used.
 *
 * @since 2019/09/25
 */

@Deprecated
public class MIDletStateChangeException
	extends Exception
{
	/**
	 * Initializes the exception with no message,
	 *







>







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This must be thrown if the state change in a MIDlet has failed, however
 * it is deprecated and no longer should be used.
 *
 * @since 2019/09/25
 */
@SuppressWarnings("DeprecatedIsStillUsed")
@Deprecated
public class MIDletStateChangeException
	extends Exception
{
	/**
	 * Initializes the exception with no message,
	 *

Changes to modules/meep-rms/src/main/java/javax/microedition/rms/RecordStore.java.

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
...
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
...
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
....
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
....
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
	
	/** Write to this? */
	private final boolean _write;
	
	/** How many times has this been opened? */
	private volatile int _opens;
	
	/**
	 * Initializes the record store manager.
	 *
	 * @since 2017/02/27
	 */
	static
	{
		// See if there is a service, this will fall back to an implementation
		// that is not shared and will only exist as long as the current
		// program is running
		VinylRecord vr;
................................................................................
	
	/**
	 * Checks that this record store is open.
	 *
	 * @throws RecordStoreNotOpenException If it is not open.
	 * @since 2019/04/15
	 */
	private final void __checkOpen()
		throws RecordStoreNotOpenException
	{
		// {@squirreljme.error DC07 This record store is not open.
		if (this._opens <= 0)
			throw new RecordStoreNotOpenException("DC07");
	}
	
................................................................................
	
	/**
	 * Returns all of the listeners for this record store.
	 *
	 * @return The listeners.
	 * @since 2019/04/15
	 */
	private final RecordListener[] __listeners()
	{
		Set<RecordListener> listeners = this._listeners;
		return listeners.<RecordListener>toArray(
			new RecordListener[listeners.size()]);
	}
	
	/**
................................................................................
	/**
	 * Checks for an error and throws an exception potentially.
	 *
	 * @param __id The ID to check, negative indicates error.
	 * @throws RecordStoreException If there is an error.
	 * @since 2019/05/01
	 */
	private static final void __checkError(int __id)
		throws RecordStoreException
	{
		// Error was detected
		if (__id < 0)
		{
			// {@squirreljme.error DC09 Could not add the record, there might
			// not be enough free space available.}
................................................................................
	 *
	 * If a password is specified then the record store will be encrypted to
	 * prevent tampering.
	 *
	 * If the record store has already been opened then it will return a
	 * previously opened record store.
	 *
	 * @param __n The name of the record store, must consist of 1 to 32
	 * Unicode characters.
	 * @param __create If {@code true} then if the record store does not
	 * exist it will be created.
	 * @param __auth The authorization mode of the record which may permit
	 * other applications to access this record. If the record already exists
	 * then this argument will be ignored.
	 * @param __write If {@code true} then the record store may be written to







|
|
|
|







 







|







 







|







 







|







 







|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
...
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
...
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
....
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
....
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
	
	/** Write to this? */
	private final boolean _write;
	
	/** How many times has this been opened? */
	private volatile int _opens;
	
	/*
	  Initializes the record store manager.
	 
	  @since 2017/02/27
	 */
	static
	{
		// See if there is a service, this will fall back to an implementation
		// that is not shared and will only exist as long as the current
		// program is running
		VinylRecord vr;
................................................................................
	
	/**
	 * Checks that this record store is open.
	 *
	 * @throws RecordStoreNotOpenException If it is not open.
	 * @since 2019/04/15
	 */
	private void __checkOpen()
		throws RecordStoreNotOpenException
	{
		// {@squirreljme.error DC07 This record store is not open.
		if (this._opens <= 0)
			throw new RecordStoreNotOpenException("DC07");
	}
	
................................................................................
	
	/**
	 * Returns all of the listeners for this record store.
	 *
	 * @return The listeners.
	 * @since 2019/04/15
	 */
	private RecordListener[] __listeners()
	{
		Set<RecordListener> listeners = this._listeners;
		return listeners.<RecordListener>toArray(
			new RecordListener[listeners.size()]);
	}
	
	/**
................................................................................
	/**
	 * Checks for an error and throws an exception potentially.
	 *
	 * @param __id The ID to check, negative indicates error.
	 * @throws RecordStoreException If there is an error.
	 * @since 2019/05/01
	 */
	private static void __checkError(int __id)
		throws RecordStoreException
	{
		// Error was detected
		if (__id < 0)
		{
			// {@squirreljme.error DC09 Could not add the record, there might
			// not be enough free space available.}
................................................................................
	 *
	 * If a password is specified then the record store will be encrypted to
	 * prevent tampering.
	 *
	 * If the record store has already been opened then it will return a
	 * previously opened record store.
	 *
	 * @param __name The name of the record store, must consist of 1 to 32
	 * Unicode characters.
	 * @param __create If {@code true} then if the record store does not
	 * exist it will be created.
	 * @param __auth The authorization mode of the record which may permit
	 * other applications to access this record. If the record already exists
	 * then this argument will be ignored.
	 * @param __write If {@code true} then the record store may be written to

Changes to modules/meep-rms/src/main/java/javax/microedition/rms/__VolumeEnumeration__.java.

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
...
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
...
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
	 * {@code null}.
	 * @param __c An optional comparator used to modify the sort order, may
	 * be {@code null}.
	 * @param __ku If {@code true} then the enumeration is kept up to date.
	 * @param __tags The tags to use for basic filtering, if this is empty then
	 * an empty enumeration will be returned, if this is {@code null} then all
	 * tags will be selected.
	 * @return The enumeration over the records.
	 * @throws RecordStoreNotOpenException If this record store is not open.
	 * @throws NullPointerException If no backing store was used.
	 * @since 2019/05/13
	 */
	__VolumeEnumeration__(RecordStore __store, RecordFilter __f,
		RecordComparator __c, boolean __ku, int[] __tags)
		throws NullPointerException
	{
................................................................................
	
	/**
	 * Checks if this has been destroyed.
	 *
	 * @throws IllegalStateException If this was destroyed.
	 * @since 2019/05/13
	 */
	private final void __checkDestroy()
		throws IllegalStateException
	{
		// {@squirreljme.error DC0h Record store enumeration has been
		// destoryed.}
		if (this._destroyed)
			throw new IllegalStateException("DC0h");
	}
................................................................................
	
	/**
	 * Check if a rebuild needs to be done.
	 *
	 * @throws IllegalStateException If the update check could not be made.
	 * @since 2019/05/13
	 */
	private final void __checkRebuild()
		throws IllegalStateException
	{
		// Could fail
		try
		{
			if (this._pages == null || (this._keepupdated &&
				this.store.getVersion() != this._lastmod))







<
<







 







|







 







|







53
54
55
56
57
58
59


60
61
62
63
64
65
66
...
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
...
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
	 * {@code null}.
	 * @param __c An optional comparator used to modify the sort order, may
	 * be {@code null}.
	 * @param __ku If {@code true} then the enumeration is kept up to date.
	 * @param __tags The tags to use for basic filtering, if this is empty then
	 * an empty enumeration will be returned, if this is {@code null} then all
	 * tags will be selected.


	 * @throws NullPointerException If no backing store was used.
	 * @since 2019/05/13
	 */
	__VolumeEnumeration__(RecordStore __store, RecordFilter __f,
		RecordComparator __c, boolean __ku, int[] __tags)
		throws NullPointerException
	{
................................................................................
	
	/**
	 * Checks if this has been destroyed.
	 *
	 * @throws IllegalStateException If this was destroyed.
	 * @since 2019/05/13
	 */
	private void __checkDestroy()
		throws IllegalStateException
	{
		// {@squirreljme.error DC0h Record store enumeration has been
		// destoryed.}
		if (this._destroyed)
			throw new IllegalStateException("DC0h");
	}
................................................................................
	
	/**
	 * Check if a rebuild needs to be done.
	 *
	 * @throws IllegalStateException If the update check could not be made.
	 * @since 2019/05/13
	 */
	private void __checkRebuild()
		throws IllegalStateException
	{
		// Could fail
		try
		{
			if (this._pages == null || (this._keepupdated &&
				this.store.getVersion() != this._lastmod))

Changes to modules/meep-swm/src/main/java/cc/squirreljme/runtime/swm/SuiteDependency.java.

513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
	 * @param __level The level of the dependency.
	 * @param __name The name.
	 * @param __vendor The vendor.
	 * @param __version The version.
	 * @throws InvalidSuiteException If the input parameters are not valid.
	 * @since 2017/11/26
	 */
	private static final void __check(SuiteDependencyType __type,
		SuiteDependencyLevel __level, SuiteName __name,
		SuiteVendor __vendor, SuiteVersionRange __version)
		throws InvalidSuiteException
	{
		// {@squirreljme.error DG09 Dependencies on LIBlets must have the
		// name, vendor, and version set. (The type; The level; The name;
		// The vendor; The version)}







|







513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
	 * @param __level The level of the dependency.
	 * @param __name The name.
	 * @param __vendor The vendor.
	 * @param __version The version.
	 * @throws InvalidSuiteException If the input parameters are not valid.
	 * @since 2017/11/26
	 */
	private static void __check(SuiteDependencyType __type,
		SuiteDependencyLevel __level, SuiteName __name,
		SuiteVendor __vendor, SuiteVersionRange __version)
		throws InvalidSuiteException
	{
		// {@squirreljme.error DG09 Dependencies on LIBlets must have the
		// name, vendor, and version set. (The type; The level; The name;
		// The vendor; The version)}

Changes to modules/meep-swm/src/main/java/cc/squirreljme/runtime/swm/SuiteDependencyLevel.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Required. */
	REQUIRED,
	
	/** Optional. */
	OPTIONAL,
	
	/** End. */
	;
	
	/**
	 * Is this an optional dependency level?
	 *
	 * @return {@code true} if this is an optional dependency level.
	 * @since 2017/11/22







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Required. */
	REQUIRED,
	
	/** Optional. */
	OPTIONAL,
	
	/* End. */
	;
	
	/**
	 * Is this an optional dependency level?
	 *
	 * @return {@code true} if this is an optional dependency level.
	 * @since 2017/11/22

Changes to modules/meep-swm/src/main/java/cc/squirreljme/runtime/swm/SuiteDependencyType.java.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	
	/** Service. */
	SERVICE,
	
	/** Proprietary. */
	PROPRIETARY,
	
	/** End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/02/22
	 */
	@Override







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	
	/** Service. */
	SERVICE,
	
	/** Proprietary. */
	PROPRIETARY,
	
	/* End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/02/22
	 */
	@Override

Changes to modules/meep-swm/src/main/java/cc/squirreljme/runtime/swm/SuiteType.java.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** LIBlet. */
	LIBLET("LIBlet"),
	
	/** An API. */
	SQUIRRELJME_API("X-SquirrelJME-API"),
	
	/** End. */
	;
	
	/** The used prefix. */
	protected final String prefix;
	
	/** Manifest description key. */
	private Reference<JavaManifestKey> _description;







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** LIBlet. */
	LIBLET("LIBlet"),
	
	/** An API. */
	SQUIRRELJME_API("X-SquirrelJME-API"),
	
	/* End. */
	;
	
	/** The used prefix. */
	protected final String prefix;
	
	/** Manifest description key. */
	private Reference<JavaManifestKey> _description;

Changes to modules/meep-swm/src/main/java/cc/squirreljme/runtime/swm/SuiteVersion.java.

282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
	 *
	 * @param __v The input string.
	 * @return The version tuplet.
	 * @throws InvalidSuiteException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/10/12
	 */
	private static final int[] __decodeVersion(String __v)
		throws InvalidSuiteException, NullPointerException
	{
		// Check
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Trim whitespace







|







282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
	 *
	 * @param __v The input string.
	 * @return The version tuplet.
	 * @throws InvalidSuiteException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/10/12
	 */
	private static int[] __decodeVersion(String __v)
		throws InvalidSuiteException, NullPointerException
	{
		// Check
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Trim whitespace

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/InstallErrorCodes.java.

248
249
250
251
252
253
254
255
256
257
258
259
	UNTRUSTED_PAYMENT_SUITE,

	/** Vendor mismatched. */
	VENDOR_MISMATCH,

	/** Version mismatched. */
	VERSION_MISMATCH,

	/** End. */
	;
}








|
|



248
249
250
251
252
253
254
255
256
257
258
259
	UNTRUSTED_PAYMENT_SUITE,

	/** Vendor mismatched. */
	VENDOR_MISMATCH,

	/** Version mismatched. */
	VERSION_MISMATCH,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/SuiteInstallStage.java.

31
32
33
34
35
36
37
38
39
40
41
	
	/** Storing suite data. */
	STORING,
	
	/** Verifying the download. */
	VERIFYING,
	
	/** End. */
	;
}








|



31
32
33
34
35
36
37
38
39
40
41
	
	/** Storing suite data. */
	STORING,
	
	/** Verifying the download. */
	VERIFYING,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/SuiteState.java.

25
26
27
28
29
30
31
32
33
34
35
	
	/** Currently being installed. */
	INSTALLING,
	
	/** Removed. */
	REMOVED,
	
	/** End. */
	;
}








|



25
26
27
28
29
30
31
32
33
34
35
	
	/** Currently being installed. */
	INSTALLING,
	
	/** Removed. */
	REMOVED,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/SuiteStateFlag.java.

31
32
33
34
35
36
37
38
39
40
41
	
	/** A suite provided by the system. */
	SYSTEM,
	
	/** The suite cannot be updated. */
	UPDATE_DENIED,
	
	/** End. */
	;
}








|



31
32
33
34
35
36
37
38
39
40
41
	
	/** A suite provided by the system. */
	SYSTEM,
	
	/** The suite cannot be updated. */
	UPDATE_DENIED,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/SuiteType.java.

25
26
27
28
29
30
31
32
33
34
35
	
	/** A library (LIBlet). */
	LIBRARY,
	
	/** A system suite. */
	SYSTEM,
	
	/** End. */
	;
}








|



25
26
27
28
29
30
31
32
33
34
35
	
	/** A library (LIBlet). */
	LIBRARY,
	
	/** A system suite. */
	SYSTEM,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/TaskPriority.java.

22
23
24
25
26
27
28
29
30
31
32
	
	/** Minimum priority. */
	MIN,
	
	/** Normal priority. */
	NORM,
	
	/** End. */
	;
}








|



22
23
24
25
26
27
28
29
30
31
32
	
	/** Minimum priority. */
	MIN,
	
	/** Normal priority. */
	NORM,
	
	/* End. */
	;
}

Changes to modules/meep-swm/src/main/java/javax/microedition/swm/TaskStatus.java.

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** Failed to start. */
	START_FAILED,
	
	/** Starting. */
	STARTING,
	
	/** End. */
	;
	
	/**
	 * Maps ordinal back into task status.
	 *
	 * @param __i Index to get.
	 * @return The task status.







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** Failed to start. */
	START_FAILED,
	
	/** Starting. */
	STARTING,
	
	/* End. */
	;
	
	/**
	 * Maps ordinal back into task status.
	 *
	 * @param __i Index to get.
	 * @return The task status.

Changes to modules/midp-lcdui/build.gradle.

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
..
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
			// Or that happens to be here too
			File maybeExe = Paths.get(segment, "fontforge.exe").toFile()
			if (maybeExe.exists())
				return maybeExe
		}

		// Does not exist!
		return null;
	}

	/** Performs the task of compiling the fonts. */
	@TaskAction
	void performFontsCompilation() {
		project.exec {ExecSpec __spec ->
				// Execute this program
................................................................................
				// Use Python scripting engine to generate code
				__spec.args("-c",
					"fontforge.open(sys.argv[1]).generate(sys.argv[2])",
					project.rootProject.file("assets/font/monospace.sfdir").
						toString(),
					"build//monospace-*.pcf")

				throw new Error("TODO");
			}
	}
}

tasks.register("compileFonts", CompileFonts) {
	group = "squirreljme"
	description = "Compiles FontForge fonts into SQFs for SquirrelJME."

	// Only able to perform this task if FontForge actually exists!
	onlyIf {
		return fontForgeExePath() != null
	}
}







|







 







|













59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
..
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
			// Or that happens to be here too
			File maybeExe = Paths.get(segment, "fontforge.exe").toFile()
			if (maybeExe.exists())
				return maybeExe
		}

		// Does not exist!
		return null
	}

	/** Performs the task of compiling the fonts. */
	@TaskAction
	void performFontsCompilation() {
		project.exec {ExecSpec __spec ->
				// Execute this program
................................................................................
				// Use Python scripting engine to generate code
				__spec.args("-c",
					"fontforge.open(sys.argv[1]).generate(sys.argv[2])",
					project.rootProject.file("assets/font/monospace.sfdir").
						toString(),
					"build//monospace-*.pcf")

				throw new Error("TODO")
			}
	}
}

tasks.register("compileFonts", CompileFonts) {
	group = "squirreljme"
	description = "Compiles FontForge fonts into SQFs for SquirrelJME."

	// Only able to perform this task if FontForge actually exists!
	onlyIf {
		return fontForgeExePath() != null
	}
}

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/DisplayHardwareState.java.

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	
	/** Disabled. */
	DISABLED,
	
	/** Removed. */
	ABSENT,
	
	/** End. */
	;
	
	/**
	 * Is this forced to be disabled?
	 *
	 * @return If this is forced to be disabled.
	 * @since 2017/10/01







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	
	/** Disabled. */
	DISABLED,
	
	/** Removed. */
	ABSENT,
	
	/* End. */
	;
	
	/**
	 * Is this forced to be disabled?
	 *
	 * @return If this is forced to be disabled.
	 * @since 2017/10/01

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/DisplayOrientation.java.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	
	/** Portrait. */
	PORTRAIT,
	
	/** Portrait, rotated 180 degrees. */
	PORTRAIT_180,
	
	/** End. */
	;
	
	/**
	 * Returns the value used in the LCDUI code.
	 *
	 * @return The LCDUI value.
	 * @since 2017/10/27







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	
	/** Portrait. */
	PORTRAIT,
	
	/** Portrait, rotated 180 degrees. */
	PORTRAIT_180,
	
	/* End. */
	;
	
	/**
	 * Returns the value used in the LCDUI code.
	 *
	 * @return The LCDUI value.
	 * @since 2017/10/27

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/DisplayState.java.

19
20
21
22
23
24
25
26
27
28
29
{
	/** The background state. */
	BACKGROUND,
	
	/** The foregound state. */
	FOREGROUND,
	
	/** End. */
	;
}








|



19
20
21
22
23
24
25
26
27
28
29
{
	/** The background state. */
	BACKGROUND,
	
	/** The foregound state. */
	FOREGROUND,
	
	/* End. */
	;
}

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/gfx/AdvancedFunction.java.

24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40
41
42

43
44
45
46
47
48
49
..
63
64
65
66
67
68
69

70
71
72
73
74
75
76
...
103
104
105
106
107
108
109

110
111
112
113
114
115
116
...
165
166
167
168
169
170
171

172
173
174
175
176
177
178
...
179
180
181
182
183
184
185

186
187
188
189
190
191
192
...
237
238
239
240
241
242
243

244
245
246
247
248
249
250
...
298
299
300
301
302
303
304

305
306
307
308
309
310
311
...
338
339
340
341
342
343
344

345
346
347
348
349
350
351
...
378
379
380
381
382
383
384

385
386
387
388
389
390
391
...
411
412
413
414
415
416
417

418
419
420
421
422
423
424
...
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460

461
462
463
464
465
466
467
...
499
500
501
502
503
504
505

506
507
508
509
510
511
512
...
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
	/** Do nothing. */
	NOP
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
		}
	},
	
	/** Fill rectangle, no blending. */
	FILLRECT_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int pac = __ag.paintcolorhigh;
			int[] buffer = __ag.buffer;
			int pitch = __ag.pitch,
				offset = __ag.offset,
				__x = __vi[0],
................................................................................
	/** Fill rectangle, with blending. */
	FILLRECT_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int pac = __ag.paintalphacolor;
			int[] buffer = __ag.buffer;
			int pitch = __ag.pitch,
				offset = __ag.offset,
				__x = __vi[0],
................................................................................
	/** Character bitmap, no blending. */
	CHARBITMAP_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __color = __vi[0] | 0xFF_000000,
				__dsx = __vi[1],
				__dsy = __vi[2],
				__bytesperscan = __vi[3],
				__scanoff = __vi[4],
................................................................................
	/** Character bitmap, with blending. */
	CHARBITMAP_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			AdvancedFunction.CHARBITMAP_NOBLEND.function(__ag, __vi, __va);
		}
	},
	
................................................................................
	/** Draw line, no blend or dots. */
	LINE_NOBLEND_NODOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __x1 = __vi[0],
				__y1 = __vi[1],
				__x2 = __vi[2],
				__y2 = __vi[3];
			
................................................................................
	/** Draw line, no blend with dots. */
	LINE_NOBLEND_DOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __x1 = __vi[0],
				__y1 = __vi[1],
				__x2 = __vi[2],
				__y2 = __vi[3];
			
................................................................................
	/** Draw line, blend with no dots. */
	LINE_BLEND_NODOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			if (true)
			{
				AdvancedFunction.LINE_NOBLEND_NODOT.function(__ag, __vi, __va);
				return;
................................................................................
	/** Draw line, blend with dots. */
	LINE_BLEND_DOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			if (true)
			{
				AdvancedFunction.LINE_NOBLEND_DOT.function(__ag, __vi, __va);
				return;
................................................................................
	/** RGB Tile, no blending. */
	RGBTILE_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
	/** RGB Tile, blending. */
	RGBTILE_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
				for (int spend = src + __w, dp = dest; src < spend;
					dp++, src++)
				{
					int pac = __b[src] | 0xFF_000000,
						srb = ((pac & 0xFF00FF) * 0xFF),
						sgg = (((pac >>> 8) & 0xFF) * 0xFF),
						dcc = data[dp],
						xrb = (srb + ((dcc & 0xFF00FF) * 0x00)) >>> 8,
						xgg = (((sgg +
							(((dcc >>> 8) & 0xFF) * 0x00)) + 1) * 257) >>> 16;
					
					data[dp] = ((xrb & 0xFF00FF) | ((xgg & 0xFF) << 8));
				}
		}
	},
	
	/** ARGB Tile, no blending. */
	ARGBTILE_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
	/** ARGB Tile, blending. */
	ARGBTILE_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */

		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
							>>> 16;
					
					data[dp] = ((xrb & 0xFF00FF) | ((xgg & 0xFF) << 8));
				}
		}
	},
	
	/** End. */
	;
	
	/**
	 * Executes the graphics function.
	 *
	 * @param __ag The advanced graphics state.
	 * @param __vi Integer arguments.







>












>







 







>







 







>







 







>







 







>







 







>







 







>







 







>







 







>







 







>







 







|
|
<













>







 







>







 







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
..
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
...
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
...
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
...
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
...
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
...
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
...
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
...
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
...
449
450
451
452
453
454
455
456
457

458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
...
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
...
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
	/** Do nothing. */
	NOP
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
		}
	},
	
	/** Fill rectangle, no blending. */
	FILLRECT_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int pac = __ag.paintcolorhigh;
			int[] buffer = __ag.buffer;
			int pitch = __ag.pitch,
				offset = __ag.offset,
				__x = __vi[0],
................................................................................
	/** Fill rectangle, with blending. */
	FILLRECT_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int pac = __ag.paintalphacolor;
			int[] buffer = __ag.buffer;
			int pitch = __ag.pitch,
				offset = __ag.offset,
				__x = __vi[0],
................................................................................
	/** Character bitmap, no blending. */
	CHARBITMAP_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __color = __vi[0] | 0xFF_000000,
				__dsx = __vi[1],
				__dsy = __vi[2],
				__bytesperscan = __vi[3],
				__scanoff = __vi[4],
................................................................................
	/** Character bitmap, with blending. */
	CHARBITMAP_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			AdvancedFunction.CHARBITMAP_NOBLEND.function(__ag, __vi, __va);
		}
	},
	
................................................................................
	/** Draw line, no blend or dots. */
	LINE_NOBLEND_NODOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __x1 = __vi[0],
				__y1 = __vi[1],
				__x2 = __vi[2],
				__y2 = __vi[3];
			
................................................................................
	/** Draw line, no blend with dots. */
	LINE_NOBLEND_DOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __x1 = __vi[0],
				__y1 = __vi[1],
				__x2 = __vi[2],
				__y2 = __vi[3];
			
................................................................................
	/** Draw line, blend with no dots. */
	LINE_BLEND_NODOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			if (true)
			{
				AdvancedFunction.LINE_NOBLEND_NODOT.function(__ag, __vi, __va);
				return;
................................................................................
	/** Draw line, blend with dots. */
	LINE_BLEND_DOT
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			// Not implemented, use basic function
			if (true)
			{
				AdvancedFunction.LINE_NOBLEND_DOT.function(__ag, __vi, __va);
				return;
................................................................................
	/** RGB Tile, no blending. */
	RGBTILE_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
	/** RGB Tile, blending. */
	RGBTILE_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
				for (int spend = src + __w, dp = dest; src < spend;
					dp++, src++)
				{
					int pac = __b[src] | 0xFF_000000,
						srb = ((pac & 0xFF00FF) * 0xFF),
						sgg = (((pac >>> 8) & 0xFF) * 0xFF),
						dcc = data[dp],
						xrb = (srb) >>> 8,
						xgg = (((sgg) + 1) * 257) >>> 16;

					
					data[dp] = ((xrb & 0xFF00FF) | ((xgg & 0xFF) << 8));
				}
		}
	},
	
	/** ARGB Tile, no blending. */
	ARGBTILE_NOBLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
	/** ARGB Tile, blending. */
	ARGBTILE_BLEND
	{
		/**
		 * {@inheritDoc}
		 * @since 2019/03/24
		 */
		@Override
		public void function(AdvancedGraphics __ag, int[] __vi, Object[] __va)
		{
			int __o = __vi[0],
				__l = __vi[1],
				__x = __vi[2],
				__y = __vi[3],
				__w = __vi[4],
................................................................................
							>>> 16;
					
					data[dp] = ((xrb & 0xFF00FF) | ((xgg & 0xFF) << 8));
				}
		}
	},
	
	/* End. */
	;
	
	/**
	 * Executes the graphics function.
	 *
	 * @param __ag The advanced graphics state.
	 * @param __vi Integer arguments.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/gfx/AdvancedGraphics.java.

1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
....
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
....
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
....
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
....
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
....
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
	 * Builds and returns a text object for usage.
	 *
	 * @param __s The string used.
	 * @return A new text object.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/29
	 */
	private final Text __buildText(String __s)
		throws NullPointerException
	{
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// Get the font, or fallback to the default if it was not set
		Font font = this.getFont();
................................................................................
	 * @param __wdest W destination.
	 * @param __hdest H destination.
	 * @param __dswap Swap destinations on rotate?
	 * @throws IllegalArgumentException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/18
	 */
	private final void __drawRegion(Image __src, int __xsrc, int __ysrc,
		int __wsrc, int __hsrc, int __trans, int __xdest, int __ydest,
		int __anch, int __wdest, int __hdest, boolean __dswap)
		throws IllegalArgumentException, NullPointerException
	{
		if (__src == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Draw a string which just says not implemented.
	 *
	 * @param __x X Coordinate.
	 * @param __y Y Coordinate.
	 * @param __txt The message text.
	 * @since 2019/03/25
	 */
	private final void __unimplemented(int __x, int __y, String __txt)
		throws NullPointerException
	{
		if (__txt == null)
			throw new NullPointerException("NARG");
		
		// Just draw crosshair and a string
		this.drawLine(__x - 5, __y, __x + 5, __y);
................................................................................
	}
	
	/**
	 * Updates the graphics drawing functions to what is needed.
	 *
	 * @since 2019/03/24
	 */
	private final void __updateFunctions()
	{
		boolean doblending = this.doblending,
			dotstroke = this.dotstroke;
		int blendmode = this.blendmode;
		
		// Blending
		if (doblending)
................................................................................
	 * @param __csx Clipping box starting X.
	 * @param __csy Clipping box starting Y.
	 * @param __cex Clipping box ending X.
	 * @param __cey Clipping box ending Y.
	 * @return The clipping bit flags.
	 * @since 2017/09/10
	 */
	private static final int __csOut(int __x, int __y, int __csx, int __csy,
		int __cex, int __cey)
	{
		int rv = 0;
		
		// Clips above or below?
		if (__y > __cey)
			rv |= AdvancedGraphics._CLIP_ABOVE;
................................................................................
	 * @param __dimout Output dimensions.
	 * @param __dswap Swap destinations?
	 * @return The resulting data is translated, this may be the same as
	 * {@code __data}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private static final int[] __transform(int __trans, int[] __data,
		int __wsrc, int __hsrc, int[] __dimout, boolean __dswap)
		throws NullPointerException
	{
		if (__data == null || __dimout == null)
			throw new NullPointerException("NARG");
		
		// Destination width and height







|







 







|







 







|







 







|







 







|







 







|







1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
....
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
....
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
....
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
....
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
....
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
	 * Builds and returns a text object for usage.
	 *
	 * @param __s The string used.
	 * @return A new text object.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/29
	 */
	private Text __buildText(String __s)
		throws NullPointerException
	{
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// Get the font, or fallback to the default if it was not set
		Font font = this.getFont();
................................................................................
	 * @param __wdest W destination.
	 * @param __hdest H destination.
	 * @param __dswap Swap destinations on rotate?
	 * @throws IllegalArgumentException If the input is not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/18
	 */
	private void __drawRegion(Image __src, int __xsrc, int __ysrc,
		int __wsrc, int __hsrc, int __trans, int __xdest, int __ydest,
		int __anch, int __wdest, int __hdest, boolean __dswap)
		throws IllegalArgumentException, NullPointerException
	{
		if (__src == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Draw a string which just says not implemented.
	 *
	 * @param __x X Coordinate.
	 * @param __y Y Coordinate.
	 * @param __txt The message text.
	 * @since 2019/03/25
	 */
	private void __unimplemented(int __x, int __y, String __txt)
		throws NullPointerException
	{
		if (__txt == null)
			throw new NullPointerException("NARG");
		
		// Just draw crosshair and a string
		this.drawLine(__x - 5, __y, __x + 5, __y);
................................................................................
	}
	
	/**
	 * Updates the graphics drawing functions to what is needed.
	 *
	 * @since 2019/03/24
	 */
	private void __updateFunctions()
	{
		boolean doblending = this.doblending,
			dotstroke = this.dotstroke;
		int blendmode = this.blendmode;
		
		// Blending
		if (doblending)
................................................................................
	 * @param __csx Clipping box starting X.
	 * @param __csy Clipping box starting Y.
	 * @param __cex Clipping box ending X.
	 * @param __cey Clipping box ending Y.
	 * @return The clipping bit flags.
	 * @since 2017/09/10
	 */
	private static int __csOut(int __x, int __y, int __csx, int __csy,
		int __cex, int __cey)
	{
		int rv = 0;
		
		// Clips above or below?
		if (__y > __cey)
			rv |= AdvancedGraphics._CLIP_ABOVE;
................................................................................
	 * @param __dimout Output dimensions.
	 * @param __dswap Swap destinations?
	 * @return The resulting data is translated, this may be the same as
	 * {@code __data}.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private static int[] __transform(int __trans, int[] __data,
		int __wsrc, int __hsrc, int[] __dimout, boolean __dswap)
		throws NullPointerException
	{
		if (__data == null || __dimout == null)
			throw new NullPointerException("NARG");
		
		// Destination width and height

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/gfx/GraphicsFunction.java.

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
	
	/** Set blending mode. */
	SET_BLENDING_MODE,
	
	/** Draw region. */
	DRAW_REGION,
	
	/** End. */
	;
	
	/**
	 * Returns the graphics function for the given ID.
	 *
	 * @param __id The ID to translate.
	 * @return The function for the ID.







|







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
	
	/** Set blending mode. */
	SET_BLENDING_MODE,
	
	/** Draw region. */
	DRAW_REGION,
	
	/* End. */
	;
	
	/**
	 * Returns the graphics function for the given ID.
	 *
	 * @param __id The ID to translate.
	 * @return The function for the ID.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/gfx/PixelFormat.java.

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
	
	/** Integer ARGB8888. */
	INTEGER_ARGB8888,
	
	/** Integer RGB888. */
	INTEGER_RGB888,
	
	/** End. */
	;
	
	/**
	 * Creates an array buffer which is capable of containing an image of
	 * the specified size.
	 *
	 * @param __p The buffer pitch.







|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
	
	/** Integer ARGB8888. */
	INTEGER_ARGB8888,
	
	/** Integer RGB888. */
	INTEGER_RGB888,
	
	/* End. */
	;
	
	/**
	 * Creates an array buffer which is capable of containing an image of
	 * the specified size.
	 *
	 * @param __p The buffer pitch.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/gfx/SerializedGraphics.java.

725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
	
	/**
	 * Returns the raw clipping X of the target.
	 *
	 * @return The target clipping.
	 * @since 2020/01/10
	 */
	private final int __getClipX()
	{
		return (Integer)this.serialize(GraphicsFunction.GET_CLIP_X);
	}
	
	/**
	 * Returns the raw clipping Y of the target.
	 *
	 * @return The target clipping.
	 * @since 2020/01/10
	 */
	private final int __getClipY()
	{
		return (Integer)this.serialize(GraphicsFunction.GET_CLIP_Y);
	}
	
	/**
	 * Deserializes the input operation arguments and performs the call on
	 * the destination graphics.







|










|







725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
	
	/**
	 * Returns the raw clipping X of the target.
	 *
	 * @return The target clipping.
	 * @since 2020/01/10
	 */
	private int __getClipX()
	{
		return (Integer)this.serialize(GraphicsFunction.GET_CLIP_X);
	}
	
	/**
	 * Returns the raw clipping Y of the target.
	 *
	 * @return The target clipping.
	 * @since 2020/01/10
	 */
	private int __getClipY()
	{
		return (Integer)this.serialize(GraphicsFunction.GET_CLIP_Y);
	}
	
	/**
	 * Deserializes the input operation arguments and performs the call on
	 * the destination graphics.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/image/PNGReader.java.

497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
...
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
...
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
...
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
...
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
	 *
	 * @param __dis Input Stream.
	 * @param __idx Indexed colors instead of just grayscale?
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private final void __pixelIndexed(InputStream __dis, boolean __idx)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
			
		int[] argb = this._argb;
		int[] palette = this._palette;
................................................................................
	 *
	 * @param __dis Input Stream.
	 * @param __alpha RGBA is used?
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private final void __pixelsRGB(InputStream __dis, boolean __alpha)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Get output
		int[] argb = this._argb;
................................................................................
	 * Decodes image data.
	 *
	 * @param __dis Input Stream.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private final void __pixelsYA(InputStream __dis)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Get output
		int[] argb = this._argb;
................................................................................
	 *
	 * @param __in The stream to read from.
	 * @return The unfiltered data.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private final byte[] __unfilter(InputStream __in)
		throws IOException, NullPointerException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		
		// Need these
		int scanlen = this._scanlen,
................................................................................
	 *
	 * @param __dis The stream to read from.
	 * @return The read data.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/14
	 */
	private static final byte[] __chunkLater(InputStream __dis)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Read into this byte array
		try (ByteArrayOutputStream baos = new ByteArrayOutputStream(512))







|







 







|







 







|







 







|







 







|







497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
...
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
...
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
...
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
...
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
	 *
	 * @param __dis Input Stream.
	 * @param __idx Indexed colors instead of just grayscale?
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private void __pixelIndexed(InputStream __dis, boolean __idx)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
			
		int[] argb = this._argb;
		int[] palette = this._palette;
................................................................................
	 *
	 * @param __dis Input Stream.
	 * @param __alpha RGBA is used?
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private void __pixelsRGB(InputStream __dis, boolean __alpha)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Get output
		int[] argb = this._argb;
................................................................................
	 * Decodes image data.
	 *
	 * @param __dis Input Stream.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private void __pixelsYA(InputStream __dis)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Get output
		int[] argb = this._argb;
................................................................................
	 *
	 * @param __in The stream to read from.
	 * @return The unfiltered data.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/15
	 */
	private byte[] __unfilter(InputStream __in)
		throws IOException, NullPointerException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		
		// Need these
		int scanlen = this._scanlen,
................................................................................
	 *
	 * @param __dis The stream to read from.
	 * @return The read data.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/14
	 */
	private static byte[] __chunkLater(InputStream __dis)
		throws IOException, NullPointerException
	{
		if (__dis == null)
			throw new NullPointerException("NARG");
		
		// Read into this byte array
		try (ByteArrayOutputStream baos = new ByteArrayOutputStream(512))

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/image/XPMReader.java.

262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
	}
	
	/**
	 * Reads the XPM image heder.
	 *
	 * @param __r The source characters.
	 * @return The header values.
	 * @throws On read errors.
	 * @since 2016/05/22
	 */
	private int[] __readHeader(Reader __r)
		throws IOException
	{
		// Read XPM header
		int[] header = new int[7];







|







262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
	}
	
	/**
	 * Reads the XPM image heder.
	 *
	 * @param __r The source characters.
	 * @return The header values.
	 * @throws IOException On read errors.
	 * @since 2016/05/22
	 */
	private int[] __readHeader(Reader __r)
		throws IOException
	{
		// Read XPM header
		int[] header = new int[7];

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/phoneui/ActionMethod.java.

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
	},
	
	/** Text Box. */
	TEXT_BOX
	{
	},
	
	/** End. */
	;
	
	
	/**
	 * Executes the numbered command on the given display.
	 *
	 * @param __d The displayable.







|







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
	},
	
	/** Text Box. */
	TEXT_BOX
	{
	},
	
	/* End. */
	;
	
	
	/**
	 * Executes the numbered command on the given display.
	 *
	 * @param __d The displayable.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/phoneui/DrawingItemMethod.java.

154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
		@Override
		public void paint(Displayable __d, Item __i, State __s, Graphics __g,
			int __x, int __y, int __w, int __h, boolean __enb, boolean __sel)
		{
			__g.drawString("Text Field", __x, __y, Graphics.TOP);
		}
	},

	/** End. */
	;
	
	/**
	 * Paints the method.
	 *
	 * @param __d The displayable to be drawn.
	 * @param __i The item to draw.







|
|







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
		@Override
		public void paint(Displayable __d, Item __i, State __s, Graphics __g,
			int __x, int __y, int __w, int __h, boolean __enb, boolean __sel)
		{
			__g.drawString("Text Field", __x, __y, Graphics.TOP);
		}
	},
	
	/* End. */
	;
	
	/**
	 * Paints the method.
	 *
	 * @param __d The displayable to be drawn.
	 * @param __i The item to draw.

Changes to modules/midp-lcdui/src/main/java/cc/squirreljme/runtime/lcdui/phoneui/DrawingMethod.java.

260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
		public final void paint(Displayable __d, State __s, Graphics __g,
			int __w, int __h)
		{
			__g.drawString("TEXT_BOX", 0, 0, 0);
		}
	},
	
	/** End. */
	;
	
	/**
	 * Paints the method.
	 *
	 * @param __d The displayable to be drawn.
	 * @param __s The draw state.







|







260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
		public final void paint(Displayable __d, State __s, Graphics __g,
			int __w, int __h)
		{
			__g.drawString("TEXT_BOX", 0, 0, 0);
		}
	},
	
	/* End. */
	;
	
	/**
	 * Paints the method.
	 *
	 * @param __d The displayable to be drawn.
	 * @param __s The draw state.

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/Canvas.java.

178
179
180
181
182
183
184

185
186
187
188
189
190
191
...
301
302
303
304
305
306
307

308
309
310
311
312
313
314
...
349
350
351
352
353
354
355

356
357
358
359
360
361
362
363
364
365
366
367

368
369
370
371
372
373
374
375
376
377
378
379

380
381
382
383
384
385
386
...
390
391
392
393
394
395
396

397
398
399
400
401
402
403
...
406
407
408
409
410
411
412

413
414
415
416
417
418
419
...
422
423
424
425
426
427
428

429
430
431
432
433
434
435
...
567
568
569
570
571
572
573

574
575
576
577
578
579
580
	 * If this is transparent then the background will automatically be filled
	 * appropriately with a color or image, otherwise in opaque mode it is
	 * assumed that pixels in the clipping region will be drawn on.
	 *
	 * @param __g The graphics to draw into.
	 * @since 2018/03/28
	 */

	@SerializedEvent
	protected abstract void paint(Graphics __g);
	
	/**
	 * Returns the action which is associated with the given key.
	 *
	 * @param __kc The key code to get the action for.
................................................................................
	/**
	 * This method is called after this has been hidden from the display,
	 * whether it was removed or concealed. This can be used to stop timers
	 * for example since they might not be needed when this is not visible.
	 *
	 * @since 2018/03/28
	 */

	@SerializedEvent
	protected void hideNotify()
	{
		// Implemented by sub-classes
	}
	
	/**
................................................................................
	
	/**
	 * This is called when a key has been pressed.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void keyPressed(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
	 * This is called when a key has been released.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void keyReleased(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
	 * This is called when a key has been repeated.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void keyRepeated(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
................................................................................
	 * This requires that motion events are supported which can be known by
	 * calling {@link #hasPointerMotionEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void pointerDragged(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	 * This requires that pointer events are supported which can be known by
	 * calling {@link #hasPointerEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void pointerPressed(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	 * This requires that pointer events are supported which can be known by
	 * calling {@link #hasPointerEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */

	@SerializedEvent
	protected void pointerReleased(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	}
	
	/**
	 * This is called when the canvas has been shown.
	 *
	 * @since 2018/12/02.
	 */

	@SerializedEvent
	protected void showNotify()
	{
		// Implemented by sub-classes
	}
	
	/**







>







 







>







 







>












>












>







 







>







 







>







 







>







 







>







178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
...
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
...
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
...
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
...
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
...
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
...
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
	 * If this is transparent then the background will automatically be filled
	 * appropriately with a color or image, otherwise in opaque mode it is
	 * assumed that pixels in the clipping region will be drawn on.
	 *
	 * @param __g The graphics to draw into.
	 * @since 2018/03/28
	 */
	@Override
	@SerializedEvent
	protected abstract void paint(Graphics __g);
	
	/**
	 * Returns the action which is associated with the given key.
	 *
	 * @param __kc The key code to get the action for.
................................................................................
	/**
	 * This method is called after this has been hidden from the display,
	 * whether it was removed or concealed. This can be used to stop timers
	 * for example since they might not be needed when this is not visible.
	 *
	 * @since 2018/03/28
	 */
	@Override
	@SerializedEvent
	protected void hideNotify()
	{
		// Implemented by sub-classes
	}
	
	/**
................................................................................
	
	/**
	 * This is called when a key has been pressed.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void keyPressed(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
	 * This is called when a key has been released.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void keyReleased(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
	 * This is called when a key has been repeated.
	 *
	 * @param __code The key code, the character is not modified by modifiers.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void keyRepeated(int __code)
	{
		// Does nothing, implemented by sub-classes
	}
	
	/**
................................................................................
	 * This requires that motion events are supported which can be known by
	 * calling {@link #hasPointerMotionEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void pointerDragged(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	 * This requires that pointer events are supported which can be known by
	 * calling {@link #hasPointerEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void pointerPressed(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	 * This requires that pointer events are supported which can be known by
	 * calling {@link #hasPointerEvents()}.
	 *
	 * @param __x The X coordinate of the pointer, on the canvas origin.
	 * @param __y The Y coordinate of the pointer, on the canvas origin.
	 * @since 2017/02/12
	 */
	@Override
	@SerializedEvent
	protected void pointerReleased(int __x, int __y)
	{
		// Does nothing by default
	}
	
	/**
................................................................................
	}
	
	/**
	 * This is called when the canvas has been shown.
	 *
	 * @since 2018/12/02.
	 */
	@Override
	@SerializedEvent
	protected void showNotify()
	{
		// Implemented by sub-classes
	}
	
	/**

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/ChoiceGroup.java.

111
112
113
114
115
116
117

118
119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134

135
136
137
138
139

140
141
142
143
144

145
146
147
148
149

150
151
152
153
154

155
156
157
158
159

160
161
162
163
164

165
166
167
168
169
170
171
...
177
178
179
180
181
182
183

184
185
186
187
188
189
190
...
195
196
197
198
199
200
201

202
203
204
205
206

207
208
209
210
211

212
213
214
215
216

217
218
219
220
221

222
223
224
225
226

227
228
229
230
231

232
233
234
235
236

237
238
239
240
241
242
243
244
245
246
247

248
249
250
251
252
253
254
	 *
	 * @param __s The string to display.
	 * @param __i The image to display, may be {@code null}.
	 * @return The index the element was added at.
	 * @throws NullPointerException If no string was specified.
	 * @since 2017/08/20
	 */

	public int append(String __s, Image __i)
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// Just insert at the end
		int rv;
		this.insert((rv = this.size()), __s, __i);
		return rv;
	}
	

	public void delete(int __a)
	{
		throw new todo.TODO();
	}
	

	public void deleteAll()
	{
		throw new todo.TODO();
	}
	

	public int getFitPolicy()
	{
		throw new todo.TODO();
	}
	

	public Font getFont(int __a)
	{
		throw new todo.TODO();
	}
	

	public Image getImage(int __a)
	{
		throw new todo.TODO();
	}
	

	public int getSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	

	public int getSelectedIndex()
	{
		throw new todo.TODO();
	}
	

	public String getString(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * This inserts the specified choice at the given index.
................................................................................
	 * @param __v The index to insert the choice at.
	 * @param __s The string to display.
	 * @param __i The image to display, may be {@code null}.
	 * @throws IndexOutOfBoundsException If the index exceeds the bounds.
	 * @throws NullPointerException If no string was specified.
	 * @since 2017/08/21
	 */

	public void insert(int __v, String __s, Image __i)
		throws IndexOutOfBoundsException, NullPointerException
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
................................................................................
			throw new IndexOutOfBoundsException(String.format("EB1e %d",
				__v));
		
		// Insert
		entries.add(__v, new __ChoiceEntry__(__s, __i));
	}
	

	public boolean isEnabled(int __i)
	{
		throw new todo.TODO();
	}
	

	public boolean isSelected(int __a)
	{
		throw new todo.TODO();
	}
	

	public void set(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	

	public void setEnabled(int __i, boolean __e)
	{
		throw new todo.TODO();
	}
	

	public void setFitPolicy(int __a)
	{
		throw new todo.TODO();
	}
	

	public void setFont(int __a, Font __b)
	{
		throw new todo.TODO();
	}
	

	public void setSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	

	public void setSelectedIndex(int __a, boolean __b)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Returns the number of choices which are in this group.
	 *
	 * @return The number of choices in this group.
	 * @since 2017/08/20
	 */

	public int size()
	{
		return this._entries.size();
	}
}









>












>





>





>





>





>





>





>





>







 







>







 







>





>





>





>





>





>





>





>











>







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
...
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
...
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
	 *
	 * @param __s The string to display.
	 * @param __i The image to display, may be {@code null}.
	 * @return The index the element was added at.
	 * @throws NullPointerException If no string was specified.
	 * @since 2017/08/20
	 */
	@Override
	public int append(String __s, Image __i)
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
		// Just insert at the end
		int rv;
		this.insert((rv = this.size()), __s, __i);
		return rv;
	}
	
	@Override
	public void delete(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void deleteAll()
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getFitPolicy()
	{
		throw new todo.TODO();
	}
	
	@Override
	public Font getFont(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public Image getImage(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public int getSelectedIndex()
	{
		throw new todo.TODO();
	}
	
	@Override
	public String getString(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * This inserts the specified choice at the given index.
................................................................................
	 * @param __v The index to insert the choice at.
	 * @param __s The string to display.
	 * @param __i The image to display, may be {@code null}.
	 * @throws IndexOutOfBoundsException If the index exceeds the bounds.
	 * @throws NullPointerException If no string was specified.
	 * @since 2017/08/21
	 */
	@Override
	public void insert(int __v, String __s, Image __i)
		throws IndexOutOfBoundsException, NullPointerException
	{
		// Check
		if (__s == null)
			throw new NullPointerException("NARG");
		
................................................................................
			throw new IndexOutOfBoundsException(String.format("EB1e %d",
				__v));
		
		// Insert
		entries.add(__v, new __ChoiceEntry__(__s, __i));
	}
	
	@Override
	public boolean isEnabled(int __i)
	{
		throw new todo.TODO();
	}
	
	@Override
	public boolean isSelected(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void set(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setEnabled(int __i, boolean __e)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setFitPolicy(int __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setFont(int __a, Font __b)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setSelectedIndex(int __a, boolean __b)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Returns the number of choices which are in this group.
	 *
	 * @return The number of choices in this group.
	 * @since 2017/08/20
	 */
	@Override
	public int size()
	{
		return this._entries.size();
	}
}


Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/Displayable.java.

134
135
136
137
138
139
140

141
142
143
144
145
146
147
...
165
166
167
168
169
170
171

172
173
174
175
176
177
178
...
351
352
353
354
355
356
357

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
	
	/**
	 * Gets the commands which are available to use.
	 *
	 * @return The available commands.
	 * @since 2019/05/17
	 */

	public Command[] getCommands()
	{
		List<Command> rv = new ArrayList<>();
		for (__Action__ a : this._actions)
			if (a instanceof Command)
				rv.add((Command)a);
		return rv.<Command>toArray(new Command[rv.size()]);
................................................................................
	
	/**
	 * Gets the ticker which is being shown on this displayable.
	 *
	 * @return The ticker being shown or {@code null} if there is none.
	 * @since 2018/03/26
	 */

	public Ticker getTicker()
	{
		return this._ticker;
	}
	
	/**
	 * Returns the title of this displayable.
................................................................................
	/**
	 * This is called when the size of the displayable has changed.
	 *
	 * @param __w The new width of the displayable.
	 * @param __h The new heigh of the displayable.
	 * @since 2016/10/10
	 */

	@SerializedEvent
	protected void sizeChanged(int __w, int __h)
	{
		// Implemented by sub-classes
	}
	
	/**
	 * Returns a default title to use for the application.
	 *
	 * @return Application default title.
	 * @since 2019/05/16
	 */
	private static final String __defaultTitle()
	{
		// Try getting a sensible name from a system property
		MIDlet amid = ActiveMidlet.optional();
		if (amid != null)
		{
			// MIDlet Name
			String midname = amid.getAppProperty("midlet-name");







>







 







>







 







>












|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
...
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
...
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
	
	/**
	 * Gets the commands which are available to use.
	 *
	 * @return The available commands.
	 * @since 2019/05/17
	 */
	@Override
	public Command[] getCommands()
	{
		List<Command> rv = new ArrayList<>();
		for (__Action__ a : this._actions)
			if (a instanceof Command)
				rv.add((Command)a);
		return rv.<Command>toArray(new Command[rv.size()]);
................................................................................
	
	/**
	 * Gets the ticker which is being shown on this displayable.
	 *
	 * @return The ticker being shown or {@code null} if there is none.
	 * @since 2018/03/26
	 */
	@Override
	public Ticker getTicker()
	{
		return this._ticker;
	}
	
	/**
	 * Returns the title of this displayable.
................................................................................
	/**
	 * This is called when the size of the displayable has changed.
	 *
	 * @param __w The new width of the displayable.
	 * @param __h The new heigh of the displayable.
	 * @since 2016/10/10
	 */
	@Override
	@SerializedEvent
	protected void sizeChanged(int __w, int __h)
	{
		// Implemented by sub-classes
	}
	
	/**
	 * Returns a default title to use for the application.
	 *
	 * @return Application default title.
	 * @since 2019/05/16
	 */
	private static String __defaultTitle()
	{
		// Try getting a sensible name from a system property
		MIDlet amid = ActiveMidlet.optional();
		if (amid != null)
		{
			// MIDlet Name
			String midname = amid.getAppProperty("midlet-name");

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/List.java.

112
113
114
115
116
117
118

119
120
121
122
123
124
125
126
127
128

129
130
131
132
133

134
135
136
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
...
164
165
166
167
168
169
170

171
172
173
174
175
176
177
...
182
183
184
185
186
187
188

189
190
191
192
193
194
195
...
219
220
221
222
223
224
225

226
227
228
229
230
231
232
...
247
248
249
250
251
252
253

254
255
256
257
258
259
260
...
280
281
282
283
284
285
286

287
288
289
290
291
292
293
...
301
302
303
304
305
306
307

308
309
310
311
312
313
314
315
316
317
318
319
320

321
322
323
324
325
326
327
...
330
331
332
333
334
335
336

337
338
339
340
341
342
343
		Display d = this._display;
		if (d != null)
			UIState.getInstance().repaint();
		
		return rv;
	}
	

	public void delete(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Deletes all of the items in the list.
	 *
	 * @since 2018/11/17
	 */

	public void deleteAll()
	{
		this._items.clear();
	}
	

	public int getFitPolicy()
	{
		throw new todo.TODO();
	}
	
	/**
	 * Gets the font for the given index.
	 *
	 * @param __i The index to get.
	 * @return The font of the index.
	 * @throws IndexOutOfBoundsException On null arguments.
	 * @since 2019/05/18
	 */

	public Font getFont(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._font;
	}
	
	/**
................................................................................
	 * Returns the image of the given index.
	 *
	 * @param __i The index to get.
	 * @return The image for this index.
	 * @throws IndexOutOfBoundsException If the index is not valid.
	 * @since 2019/05/18
	 */

	public Image getImage(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._image;
	}
	
	/**
................................................................................
	 */
	@ImplementationNote("This is a SquirrelJME specific method.")
	public Command getSelectCommand()
	{
		return this._selcommand;
	}
	

	public int getSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	 * Returns the string at the given index.
	 *
	 * @param __i The string to get.
	 * @return The string.
	 * @throws IndexOutOfBoundsException If the index is out of bounds.
	 * @since 2019/05/18
	 */

	public String getString(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._string;
	}
	
	/**
................................................................................
	 */
	@Override
	public int getWidth()
	{
		return Displayable.__getWidth(this, false);
	}
	

	public void insert(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	
	@Override
	public void removeCommand(Command __a)
	{
		throw new todo.TODO();
	}
	

	public void set(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
		
		// Update display
		Display d = this._display;
		if (d != null)
			UIState.getInstance().repaint();
	}
	

	public void setFitPolicy(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Sets the font of the given item.
	 *
	 * @param __i The item to set.
	 * @param __f The font to use, {@code null} clears it and uses the default.
	 * @throws IndexOutOfBoundsException If the item is not within bounds.
	 * @since 2019/05/20
	 */

	public void setFont(int __i, Font __f)
		throws IndexOutOfBoundsException
	{
		this._items.get(__i)._font = __f;
		
		// Update display
		Display d = this._display;
................................................................................
	}
	
	public void setSelectCommand(Command __a)
	{
		throw new todo.TODO();
	}
	

	public void setSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}







>










>





>













>







 







>







 







>







 







>







 







>







 







>







 







>













>







 







>







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
...
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
...
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
...
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
...
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
...
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
...
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
...
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
		Display d = this._display;
		if (d != null)
			UIState.getInstance().repaint();
		
		return rv;
	}
	
	@Override
	public void delete(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Deletes all of the items in the list.
	 *
	 * @since 2018/11/17
	 */
	@Override
	public void deleteAll()
	{
		this._items.clear();
	}
	
	@Override
	public int getFitPolicy()
	{
		throw new todo.TODO();
	}
	
	/**
	 * Gets the font for the given index.
	 *
	 * @param __i The index to get.
	 * @return The font of the index.
	 * @throws IndexOutOfBoundsException On null arguments.
	 * @since 2019/05/18
	 */
	@Override
	public Font getFont(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._font;
	}
	
	/**
................................................................................
	 * Returns the image of the given index.
	 *
	 * @param __i The index to get.
	 * @return The image for this index.
	 * @throws IndexOutOfBoundsException If the index is not valid.
	 * @since 2019/05/18
	 */
	@Override
	public Image getImage(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._image;
	}
	
	/**
................................................................................
	 */
	@ImplementationNote("This is a SquirrelJME specific method.")
	public Command getSelectCommand()
	{
		return this._selcommand;
	}
	
	@Override
	public int getSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	 * Returns the string at the given index.
	 *
	 * @param __i The string to get.
	 * @return The string.
	 * @throws IndexOutOfBoundsException If the index is out of bounds.
	 * @since 2019/05/18
	 */
	@Override
	public String getString(int __i)
		throws IndexOutOfBoundsException
	{
		return this._items.get(__i)._string;
	}
	
	/**
................................................................................
	 */
	@Override
	public int getWidth()
	{
		return Displayable.__getWidth(this, false);
	}
	
	@Override
	public void insert(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
	
	@Override
	public void removeCommand(Command __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void set(int __a, String __b, Image __c)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}
................................................................................
		
		// Update display
		Display d = this._display;
		if (d != null)
			UIState.getInstance().repaint();
	}
	
	@Override
	public void setFitPolicy(int __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * Sets the font of the given item.
	 *
	 * @param __i The item to set.
	 * @param __f The font to use, {@code null} clears it and uses the default.
	 * @throws IndexOutOfBoundsException If the item is not within bounds.
	 * @since 2019/05/20
	 */
	@Override
	public void setFont(int __i, Font __f)
		throws IndexOutOfBoundsException
	{
		this._items.get(__i)._font = __f;
		
		// Update display
		Display d = this._display;
................................................................................
	}
	
	public void setSelectCommand(Command __a)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setSelectedFlags(boolean[] __a)
	{
		throw new todo.TODO();
	}
	
	/**
	 * {@inheritDoc}

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/Text.java.

874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
	
	/**
	 * Undirties the text within and calculates all of the needed bounds and
	 * metrics for each character.
	 *
	 * @since 2018/12/01
	 */
	private final void __undirty()
	{
		if (!this._dirty)
			return;
		
		// Using this gobal stuff
		Font defaultfont = this._defaultfont;
		int width = this._width;







|







874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
	
	/**
	 * Undirties the text within and calculates all of the needed bounds and
	 * metrics for each character.
	 *
	 * @since 2018/12/01
	 */
	private void __undirty()
	{
		if (!this._dirty)
			return;
		
		// Using this gobal stuff
		Font defaultfont = this._defaultfont;
		int width = this._width;

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/TextEditor.java.

160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
	}
	
	public void setTextEditorListener(TextEditorChangeListener __cl)
	{
		throw new todo.TODO();
	}
	

	public void setVisible(boolean __v)
	{
		throw new todo.TODO();
	}
	
	public int size()
	{
		throw new todo.TODO();
	}
}








>











160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
	}
	
	public void setTextEditorListener(TextEditorChangeListener __cl)
	{
		throw new todo.TODO();
	}
	
	@Override
	public void setVisible(boolean __v)
	{
		throw new todo.TODO();
	}
	
	public int size()
	{
		throw new todo.TODO();
	}
}

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/__VolatileList__.java.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
	/**
	 * Removes the specified item from the list.
	 *
	 * @param __v The item to remove.
	 * @return {@code true} if it was removed.
	 * @since 2019/04/15
	 */
	@SuppressWarnings({"unchecked"})
	public final boolean remove(T __v)
	{
		Object[] values = this._values;
		
		// Check if we have this item first
		int dx = 0, n = values.length;
		for (; dx < n; dx++)







<







123
124
125
126
127
128
129

130
131
132
133
134
135
136
	/**
	 * Removes the specified item from the list.
	 *
	 * @param __v The item to remove.
	 * @return {@code true} if it was removed.
	 * @since 2019/04/15
	 */

	public final boolean remove(T __v)
	{
		Object[] values = this._values;
		
		// Check if we have this item first
		int dx = 0, n = values.length;
		for (; dx < n; dx++)

Changes to modules/midp-lcdui/src/main/java/javax/microedition/lcdui/game/GameCanvas.java.

208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
		int pw = buf._width;
		__g.drawRGB(buf._pixels, 0, pw, 0, 0, pw, buf._height, false);
	}
	
	/**
	 * Performs the graphics flip.
	 *
	 * @return The flipped graphics.
	 * @since 2019/06/30
	 */
	private final void __flip()
	{
		// Get both buffers
		__Buffer__ bufa = this._bufa,
			bufb = this._bufb;
		
		// If never drawn onto, ignore
		if (bufb == null)







<


|







208
209
210
211
212
213
214

215
216
217
218
219
220
221
222
223
224
		int pw = buf._width;
		__g.drawRGB(buf._pixels, 0, pw, 0, 0, pw, buf._height, false);
	}
	
	/**
	 * Performs the graphics flip.
	 *

	 * @since 2019/06/30
	 */
	private void __flip()
	{
		// Get both buffers
		__Buffer__ bufa = this._bufa,
			bufb = this._bufb;
		
		// If never drawn onto, ignore
		if (bufb == null)

Changes to modules/squirrel-quarrel/src/main/java/dev/shadowtail/squirrelquarrel/CommandHandler.java.

48
49
50
51
52
53
54

55
56
57
58
59
60
61
..
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
	
	/**
	 * Executes the given command.
	 *
	 * @param __c The command to execute.
	 * @since 2019/12/25
	 */

	public void commandAction(Command __c, Displayable __d)
	{
		// Exit the game?
		if (__c == CommandHandler.EXIT_COMMAND)
			System.exit(0);
		
		// The in-game menu was requested
................................................................................
	/**
	 * Makes and returns the status menu.
	 *
	 * @param __gi The game interface.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/25
	 */
	private final Displayable __makeStatusMenu(GameInterface __gi)
		throws NullPointerException
	{
		if (__gi == null)
			throw new NullPointerException("NARG");
		
		// Make a list to show status items
		List items = new List("Status", Choice.IMPLICIT);







>







 







|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
..
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
	
	/**
	 * Executes the given command.
	 *
	 * @param __c The command to execute.
	 * @since 2019/12/25
	 */
	@Override
	public void commandAction(Command __c, Displayable __d)
	{
		// Exit the game?
		if (__c == CommandHandler.EXIT_COMMAND)
			System.exit(0);
		
		// The in-game menu was requested
................................................................................
	/**
	 * Makes and returns the status menu.
	 *
	 * @param __gi The game interface.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/25
	 */
	private Displayable __makeStatusMenu(GameInterface __gi)
		throws NullPointerException
	{
		if (__gi == null)
			throw new NullPointerException("NARG");
		
		// Make a list to show status items
		List items = new List("Status", Choice.IMPLICIT);

Changes to modules/squirrel-quarrel/src/main/java/dev/shadowtail/squirrelquarrel/GameInterface.java.

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
...
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
	 * @param __g The graphics to draw to.
	 * @param __cw The canvas width.
	 * @param __ch The canvas height.
	 * @param __tilemap The raw tile data.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/07/02
	 */
	private final void __drawTiles(Graphics __g, int __cw, int __ch,
		TileMap __tilemap)
		throws NullPointerException
	{
		if (__g == null || __tilemap == null)
			throw new NullPointerException("NARG");
		
		// Size of the map in tiles
................................................................................
	
	/**
	 * Handles the specified key.
	 *
	 * @param __kc The key code to handle.
	 * @since 2019/07/02
	 */
	private final void __inputKey(int __kc)
	{
		// Prefer pure game actions, if those are not available fallback to
		// the dial pad. Match traditional SquirrelJME game layout.
		int ga = this.getGameAction(__kc);
		if (ga == 0)
			switch (__kc)
			{







|







 







|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
...
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
	 * @param __g The graphics to draw to.
	 * @param __cw The canvas width.
	 * @param __ch The canvas height.
	 * @param __tilemap The raw tile data.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/07/02
	 */
	private void __drawTiles(Graphics __g, int __cw, int __ch,
		TileMap __tilemap)
		throws NullPointerException
	{
		if (__g == null || __tilemap == null)
			throw new NullPointerException("NARG");
		
		// Size of the map in tiles
................................................................................
	
	/**
	 * Handles the specified key.
	 *
	 * @param __kc The key code to handle.
	 * @since 2019/07/02
	 */
	private void __inputKey(int __kc)
	{
		// Prefer pure game actions, if those are not available fallback to
		// the dial pad. Match traditional SquirrelJME game layout.
		int ga = this.getGameAction(__kc);
		if (ga == 0)
			switch (__kc)
			{

Changes to modules/squirrel-quarrel/src/main/java/dev/shadowtail/squirrelquarrel/MapSize.java.

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
	
	/** Large. */
	LARGE(40, 40),
	
	/** Ridiculous. */
	RIDICULOUSLY_LARGE(80, 80),
	
	/** End. */
	;
	
	/** The default map size to use. */
	public static final MapSize DEFAULT = MapSize.TINY;
	
	/** The map width. */
	public final int width;







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
	
	/** Large. */
	LARGE(40, 40),
	
	/** Ridiculous. */
	RIDICULOUSLY_LARGE(80, 80),
	
	/* End. */
	;
	
	/** The default map size to use. */
	public static final MapSize DEFAULT = MapSize.TINY;
	
	/** The map width. */
	public final int width;

Changes to modules/squirrel-quarrel/src/main/java/dev/shadowtail/squirrelquarrel/PlayerIndex.java.

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	
	/** Yellow. */
	YELLOW("Yellow", 0xFFB937),
	
	/** Gray. */
	GRAY("Gray", 0x5A7D8B),
	
	/** End. */
	;
	
	/** The maximum number of players that can play at once. */
	public static final int MAX_PLAYERS =
		4;
	
	/** The number of player colors. */







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	
	/** Yellow. */
	YELLOW("Yellow", 0xFFB937),
	
	/** Gray. */
	GRAY("Gray", 0x5A7D8B),
	
	/* End. */
	;
	
	/** The maximum number of players that can play at once. */
	public static final int MAX_PLAYERS =
		4;
	
	/** The number of player colors. */

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/game/Game.java.

143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
	}
	
	/**
	 * Boots the game spawning everything as needed.
	 *
	 * @since 2019/03/24
	 */
	private final void __boot()
	{
		Units units = this.units;
		Players players = this.players;
		
		// Create initial game units for players who are playing
		for (int i = 0, n = PlayerColor.NUM_COLORS; i < n; i++)
		{







|







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
	}
	
	/**
	 * Boots the game spawning everything as needed.
	 *
	 * @since 2019/03/24
	 */
	private void __boot()
	{
		Units units = this.units;
		Players players = this.players;
		
		// Create initial game units for players who are playing
		for (int i = 0, n = PlayerColor.NUM_COLORS; i < n; i++)
		{

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/game/GameSpeed.java.

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	/** Fast. */
	FAST(56),
	
	/** Faster. */
	FASTER(48),
	
	/** Fastest. */
	FASTEST(42),	
	
	/** End. */
	;
	
	/** The speed of normal. */
	private static final int _NORMAL_SPEED =
		67;
	
	/** Milliseconds between frames. */







|

|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	/** Fast. */
	FAST(56),
	
	/** Faster. */
	FASTER(48),
	
	/** Fastest. */
	FASTEST(42),
	
	/* End. */
	;
	
	/** The speed of normal. */
	private static final int _NORMAL_SPEED =
		67;
	
	/** Milliseconds between frames. */

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/game/InitialSettingsBuilder.java.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	volatile int _players =
		2;
	
	/** The seed to use. */
	volatile long _seed =
		System.currentTimeMillis();
	
	/**
	 * Initializes some more complex settings.
	 *
	 * @since 2018/03/19
	 */
	{
		// Start off all players on their own team (FFA)
		int[] teams = this._teams;
		for (int i = 0, n = teams.length; i < n; i++)
			teams[i] = i;
	}







|
|
|
|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	volatile int _players =
		2;
	
	/** The seed to use. */
	volatile long _seed =
		System.currentTimeMillis();
	
	/*
	  Initializes some more complex settings.
	 
	  @since 2018/03/19
	 */
	{
		// Start off all players on their own team (FFA)
		int[] teams = this._teams;
		for (int i = 0, n = teams.length; i < n; i++)
			teams[i] = i;
	}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/game/ResumeMode.java.

19
20
21
22
23
24
25
26
27
28
29
{
	/** Treat it as a saved game. */
	SAVED_GAME,
	
	/** Treat it as a replay. */
	REPLAY,
	
	/** End. */
	;
}








|



19
20
21
22
23
24
25
26
27
28
29
{
	/** Treat it as a saved game. */
	SAVED_GAME,
	
	/** Treat it as a replay. */
	REPLAY,
	
	/* End. */
	;
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/lcdui/GameInterface.java.

72
73
74
75
76
77
78

79
80
81
82
83
84
85
			__g.setEventSource(controller);
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/03/19
	 */

	public final void frameRepaintRequest(int __framenum)
	{
		// Just have it get repainted
		this.repaint();
	}
	
	/**







>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
			__g.setEventSource(controller);
	}
	
	/**
	 * {@inheritDoc}
	 * @since 2018/03/19
	 */
	@Override
	public final void frameRepaintRequest(int __framenum)
	{
		// Just have it get repainted
		this.repaint();
	}
	
	/**

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/lcdui/MegaTileCacher.java.

137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	 * Caches the specified tile.
	 *
	 * @param __t The terrain to get the image for.
	 * @return The image for the given terrain.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/02/10
	 */
	private static final Image __cacheTile(TerrainType __t)
		throws NullPointerException
	{
		// Check
		if (__t == null)
			throw new NullPointerException("NARG");
		
		// Get ref







|







137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	 * Caches the specified tile.
	 *
	 * @param __t The terrain to get the image for.
	 * @return The image for the given terrain.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/02/10
	 */
	private static Image __cacheTile(TerrainType __t)
		throws NullPointerException
	{
		// Check
		if (__t == null)
			throw new NullPointerException("NARG");
		
		// Get ref

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/player/PlayerColor.java.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
	
	/** Purple. */
	PURPLE("Purple", 0x533364),
	
	/** Gray. */
	GRAY("Gray", 0x5A7D8B),
	
	/** End. */
	;
	
	/** The maximum number of players that can play at once. */
	public static final int MAX_PLAYERS =
		4;
	
	/** The number of player colors. */







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
	
	/** Purple. */
	PURPLE("Purple", 0x533364),
	
	/** Gray. */
	GRAY("Gray", 0x5A7D8B),
	
	/* End. */
	;
	
	/** The maximum number of players that can play at once. */
	public static final int MAX_PLAYERS =
		4;
	
	/** The number of player colors. */

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/player/Species.java.

19
20
21
22
23
24
25
26
27
28
29
{
	/** Not a major species. */
	NONE,
	
	/** Chlorophids, plant based species. */
	CHLOROPHID,
	
	/** End. */
	;
}








|



19
20
21
22
23
24
25
26
27
28
29
{
	/** Not a major species. */
	NONE,
	
	/** Chlorophids, plant based species. */
	CHLOROPHID,
	
	/* End. */
	;
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/units/AbilityType.java.

16
17
18
19
20
21
22
23
24
25
26
 * @since 2019/03/24
 */
public enum AbilityType
{
	/** Regenerates HP. */
	REGENERATES_HP,
	
	/** End. */
	;
}








|



16
17
18
19
20
21
22
23
24
25
26
 * @since 2019/03/24
 */
public enum AbilityType
{
	/** Regenerates HP. */
	REGENERATES_HP,
	
	/* End. */
	;
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/units/SpawnPlacementType.java.

22
23
24
25
26
27
28
29
30
31
32
	
	/** Unit should follow building spawn rules, aligned to grid. */
	BUILDING,
	
	/** Normal best fit unit spawning, a creator may be used as a factory. */
	NORMAL,
	
	/** End. */
	;
}








|



22
23
24
25
26
27
28
29
30
31
32
	
	/** Unit should follow building spawn rules, aligned to grid. */
	BUILDING,
	
	/** Normal best fit unit spawning, a creator may be used as a factory. */
	NORMAL,
	
	/* End. */
	;
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/units/UnitSize.java.

22
23
24
25
26
27
28
29
30
31
32
	
	/** Medium. */
	MEDIUM,
	
	/** Large. */
	LARGE,
	
	/** End. */
	;
}








|



22
23
24
25
26
27
28
29
30
31
32
	
	/** Medium. */
	MEDIUM,
	
	/** Large. */
	LARGE,
	
	/* End. */
	;
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/units/UnitType.java.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
	/** Starting location. */
	START_LOCATION,
	
	/** Chlorophid: Garden. */
	CHLOROPHID_GARDEN,
	
	/** End. */
	;
	
	/** Base unit information and its properties. */
	private BaseUnitInfo _info;
	
	/**
	 * Returns the information which is associated with the given unit.







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
	/** Starting location. */
	START_LOCATION,
	
	/** Chlorophid: Garden. */
	CHLOROPHID_GARDEN,
	
	/* End. */
	;
	
	/** Base unit information and its properties. */
	private BaseUnitInfo _info;
	
	/**
	 * Returns the information which is associated with the given unit.

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/util/ConstantFixedPoint.java.

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This represents a constant fixed point number.
 *
 * @since 2018/03/18
 */
public final class ConstantFixedPoint
	implements Comparable<FixedPoint>, FixedPoint
{
	/** Bit shift. */
	public static final int SHIFT =
		16;
	
	/** Mask. */
	public static final int MASK =







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This represents a constant fixed point number.
 *
 * @since 2018/03/18
 */
public final class ConstantFixedPoint
	implements FixedPoint
{
	/** Bit shift. */
	public static final int SHIFT =
		16;
	
	/** Mask. */
	public static final int MASK =

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/util/MutableFixedPoint.java.

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This represents a mutable fixed point number.
 *
 * @since 2018/03/18
 */
public final class MutableFixedPoint
	implements Comparable<FixedPoint>, FixedPoint
{
	/**
	 * Initializes the fixed point value with the given whole number.
	 *
	 * @param __whole The whole number, only the lowest 16-bits are used.
	 * @since 2018/03/18
	 */







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/**
 * This represents a mutable fixed point number.
 *
 * @since 2018/03/18
 */
public final class MutableFixedPoint
	implements FixedPoint
{
	/**
	 * Initializes the fixed point value with the given whole number.
	 *
	 * @param __whole The whole number, only the lowest 16-bits are used.
	 * @since 2018/03/18
	 */

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/util/ReplayInputStream.java.

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
	public final long readLong()
		throws ReplayIOException
	{
		try
		{
			long rv = this.in.readInt();
			rv <<= 32;
			rv |= (this.in.readInt() & 0xFFFFFFFF);
			return rv;
		}
		
		// {@squirreljme.error BE0k Could not read long from the input.}
		catch (IOException e)
		{
			throw new ReplayIOException("BE0k", e);
		}
	}
}








|











96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
	public final long readLong()
		throws ReplayIOException
	{
		try
		{
			long rv = this.in.readInt();
			rv <<= 32;
			rv |= (this.in.readInt() & 0xFFFFFFFFL);
			return rv;
		}
		
		// {@squirreljme.error BE0k Could not read long from the input.}
		catch (IOException e)
		{
			throw new ReplayIOException("BE0k", e);
		}
	}
}

Changes to modules/squirrel-quarrel/src/main/java/net/multiphasicapps/squirrelquarrel/world/TerrainType.java.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
	/** Grass. */
	GRASS(0x007F00),
	
	/** Dirt. */
	DIRT(0x6E370B),
	
	/** End. */
	;
	
	/** Cache of terrain types. */
	private static final TerrainType[] _VALUES = TerrainType.values();
	
	/** The terrain color. */
	protected final int color;







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
	/** Grass. */
	GRASS(0x007F00),
	
	/** Dirt. */
	DIRT(0x6E370B),
	
	/* End. */
	;
	
	/** Cache of terrain types. */
	private static final TerrainType[] _VALUES = TerrainType.values();
	
	/** The terrain color. */
	protected final int color;

Changes to modules/strings/src/main/java/net/multiphasicapps/strings/StringUtils.java.

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
	 *
	 * @param __a The array to check.
	 * @param __c The character to find in the array.
	 * @return The index of the character or {@code -1} if it was not found.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/11/23
	 */
	private static final int __indexOf(char[] __a, char __c)
		throws NullPointerException
	{
		if (__a == null)
			throw new NullPointerException("NARG");
		
		for (int i = 0, n = __a.length; i < n; i++)
			if (__c == __a[i])
				return i;
		return -1;
	}
}








|












349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
	 *
	 * @param __a The array to check.
	 * @param __c The character to find in the array.
	 * @return The index of the character or {@code -1} if it was not found.
	 * @throws NullPointerException On null arguments.
	 * @since 2017/11/23
	 */
	private static int __indexOf(char[] __a, char __c)
		throws NullPointerException
	{
		if (__a == null)
			throw new NullPointerException("NARG");
		
		for (int i = 0, n = __a.length; i < n; i++)
			if (__c == __a[i])
				return i;
		return -1;
	}
}

Changes to modules/tac/src/main/java/net/multiphasicapps/tac/TestStatus.java.

28
29
30
31
32
33
34
35
36
37
38
	
	/** Test was not run yet. */
	NOT_RUN,
	
	/** Untestable. */
	UNTESTABLE,
	
	/** End. */
	;
}








|



28
29
30
31
32
33
34
35
36
37
38
	
	/** Test was not run yet. */
	NOT_RUN,
	
	/** Untestable. */
	UNTESTABLE,
	
	/* End. */
	;
}

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/mini/MinimizedPoolBuilder.java.

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
...
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
...
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
	private final Map<Object, Integer> _pool =
		new LinkedHashMap<>();
	
	/** Parts list. */
	private final List<int[]> _parts =
		new ArrayList<>();
	
	/**
	 * Initializes the base pool.
	 *
	 * @since 2019/04/14
	 */
	{
		// Add null entry to mean nothing
		this._pool.put(null, 0);
		this._parts.add(new int[0]);
	}
	
................................................................................
		
		// Long
		else if (__v instanceof Long)
		{
			long v = (Long)__v;
			return this.__add(__v,
				this.add((int)(v >>> 32)),
				this.add((int)(v & 0xFFFFFFFF)));
		}
		
		// Double
		else if (__v instanceof Double)
		{
			long v = Double.doubleToRawLongBits((Double)__v);
			return this.__add(__v,
				this.add((int)(v >>> 32)),
				this.add((int)(v & 0xFFFFFFFF)));
		}
		
		// Used String
		else if (__v instanceof UsedString)
			return this.__add(__v,
				this.add(__v.toString()));
		
................................................................................
	 *
	 * @param __v The entry to add.
	 * @param __parts Parts which make up the entry.
	 * @return The index the entry is at.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	private final int __add(Object __v, int... __parts)
		throws NullPointerException
	{
		if (__v == null)
			throw new NullPointerException("NARG");
		
		Map<Object, Integer> pool = this._pool;
		







|
|
|
|







 







|








|







 







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
...
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
...
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
	private final Map<Object, Integer> _pool =
		new LinkedHashMap<>();
	
	/** Parts list. */
	private final List<int[]> _parts =
		new ArrayList<>();
	
	/*
	  Initializes the base pool.
	 
	  @since 2019/04/14
	 */
	{
		// Add null entry to mean nothing
		this._pool.put(null, 0);
		this._parts.add(new int[0]);
	}
	
................................................................................
		
		// Long
		else if (__v instanceof Long)
		{
			long v = (Long)__v;
			return this.__add(__v,
				this.add((int)(v >>> 32)),
				this.add((int)(v)));
		}
		
		// Double
		else if (__v instanceof Double)
		{
			long v = Double.doubleToRawLongBits((Double)__v);
			return this.__add(__v,
				this.add((int)(v >>> 32)),
				this.add((int)(v)));
		}
		
		// Used String
		else if (__v instanceof UsedString)
			return this.__add(__v,
				this.add(__v.toString()));
		
................................................................................
	 *
	 * @param __v The entry to add.
	 * @param __parts Parts which make up the entry.
	 * @return The index the entry is at.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	private int __add(Object __v, int... __parts)
		throws NullPointerException
	{
		if (__v == null)
			throw new NullPointerException("NARG");
		
		Map<Object, Integer> pool = this._pool;
		

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/mini/MinimizedPoolEntryType.java.

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	
	/** Class information. */
	CLASS_INFO_POINTER,
	
	/** A string which has been noted for debug purposes. */
	NOTED_STRING,
	
	/** End. */
	;
	
	/**
	 * Can this be in the runtime pool?
	 *
	 * @return If this can be in the runtime pool.
	 * @since 2019/07/20







|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	
	/** Class information. */
	CLASS_INFO_POINTER,
	
	/** A string which has been noted for debug purposes. */
	NOTED_STRING,
	
	/* End. */
	;
	
	/**
	 * Can this be in the runtime pool?
	 *
	 * @return If this can be in the runtime pool.
	 * @since 2019/07/20

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/mini/Minimizer.java.

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
...
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
...
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
...
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
...
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
...
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
	 * Performs the minimization process.
	 *
	 * @param __os The stream to write the result to.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/10
	 */
	private final void __run(OutputStream __os)
		throws IOException, NullPointerException
	{
		if (__os == null)
			throw new NullPointerException("NARG");
			
		// The input class
		ClassFile input = this.input;
................................................................................
	
	/**
	 * Process fields.
	 *
	 * @return The resulting fields, static and instance split into each.
	 * @since 2019/03/11
	 */
	private final __TempFields__[] __doFields()
	{
		DualClassRuntimePoolBuilder localpool = this.localpool;
		
		// Static and instance fields are split because they are stored
		// in different places
		__TempFields__[] rv = new __TempFields__[]{
			new __TempFields__(), new __TempFields__()};
................................................................................
			// by the garbage collector to determine the addresses to scan
			// However, the object class always has no objects in it
			if (!isobject && pt == null)
				temp._objects++;
			
			// Determine the base position and check if any alignment is needed
			// assuming types of a given size are always aligned
			int basep = (temp._bytes + (fsz - 1)) & ~(fsz - 1);
			
			// Constant value may be null, but if it is not then add it
			// to the pool
			ConstantValue cval = f.constantValue();
			
			// Add field properties
			localpool.add(false, f.name().toString());
................................................................................
	
	/**
	 * Processes all methods within the class.
	 *
	 * @return The processed static and instance methods.
	 * @since 2019/03/13
	 */
	private final __TempMethods__[] __doMethods()
	{
		DualClassRuntimePoolBuilder localpool = this.localpool;
		ClassFile input = this.input;
		
		// Split static and instance methods to make them easier to locate
		// accordingly
		__TempMethods__[] rv = new __TempMethods__[]{
................................................................................
		return rv;
	}
	
	/**
	 * Translates code.
	 *
	 * @param __rc The register code used.
	 * @param __dos The stream to write to.
	 * @return The resulting stream.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/23
	 */
	private final byte[] __translateCode(NativeCode __rc)
		throws IOException, NullPointerException
	{
		if (__rc == null)
			throw new NullPointerException("NARG");
		
		// Where stuff gets written to
		ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
................................................................................
	 * @param __bt The byte table.
	 * @return The resulting RLE encoded byte data.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	@Deprecated
	private static final byte[] __compact(short[] __st, byte[] __bt)
		throws IOException, NullPointerException
	{
		if (__st == null && __bt == null)
			throw new NullPointerException("NARG");
		
		// Using shorts or bytes
		boolean shorts = (__st != null);







|







 







|







 







|







 







|







 







<





|







 







|







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
...
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
...
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
...
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
...
423
424
425
426
427
428
429

430
431
432
433
434
435
436
437
438
439
440
441
442
...
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
	 * Performs the minimization process.
	 *
	 * @param __os The stream to write the result to.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/10
	 */
	private void __run(OutputStream __os)
		throws IOException, NullPointerException
	{
		if (__os == null)
			throw new NullPointerException("NARG");
			
		// The input class
		ClassFile input = this.input;
................................................................................
	
	/**
	 * Process fields.
	 *
	 * @return The resulting fields, static and instance split into each.
	 * @since 2019/03/11
	 */
	private __TempFields__[] __doFields()
	{
		DualClassRuntimePoolBuilder localpool = this.localpool;
		
		// Static and instance fields are split because they are stored
		// in different places
		__TempFields__[] rv = new __TempFields__[]{
			new __TempFields__(), new __TempFields__()};
................................................................................
			// by the garbage collector to determine the addresses to scan
			// However, the object class always has no objects in it
			if (!isobject && pt == null)
				temp._objects++;
			
			// Determine the base position and check if any alignment is needed
			// assuming types of a given size are always aligned
			int basep = (temp._bytes + (fsz - 1)) & -fsz;
			
			// Constant value may be null, but if it is not then add it
			// to the pool
			ConstantValue cval = f.constantValue();
			
			// Add field properties
			localpool.add(false, f.name().toString());
................................................................................
	
	/**
	 * Processes all methods within the class.
	 *
	 * @return The processed static and instance methods.
	 * @since 2019/03/13
	 */
	private __TempMethods__[] __doMethods()
	{
		DualClassRuntimePoolBuilder localpool = this.localpool;
		ClassFile input = this.input;
		
		// Split static and instance methods to make them easier to locate
		// accordingly
		__TempMethods__[] rv = new __TempMethods__[]{
................................................................................
		return rv;
	}
	
	/**
	 * Translates code.
	 *
	 * @param __rc The register code used.

	 * @return The resulting stream.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/23
	 */
	private byte[] __translateCode(NativeCode __rc)
		throws IOException, NullPointerException
	{
		if (__rc == null)
			throw new NullPointerException("NARG");
		
		// Where stuff gets written to
		ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
................................................................................
	 * @param __bt The byte table.
	 * @return The resulting RLE encoded byte data.
	 * @throws IOException On write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	@Deprecated
	private static byte[] __compact(short[] __st, byte[] __bt)
		throws IOException, NullPointerException
	{
		if (__st == null && __bt == null)
			throw new NullPointerException("NARG");
		
		// Using shorts or bytes
		boolean shorts = (__st != null);

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/mini/__MinimizerFieldSort__.java.

28
29
30
31
32
33
34

35
36
37
38
39
40
41
	/**
	 * Compares two fields.
	 *
	 * @param __a The first.
	 * @param __b The second.
	 * @since 2019/03/11
	 */

	public int compare(Field __a, Field __b)
	{
		// Make objects always first so we can quickly scan through objects
		// when clearing references out
		PrimitiveType pa = __a.type().primitiveType(),
			pb = __b.type().primitiveType();
		if (pa == null && pb != null)







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	/**
	 * Compares two fields.
	 *
	 * @param __a The first.
	 * @param __b The second.
	 * @since 2019/03/11
	 */
	@Override
	public int compare(Field __a, Field __b)
	{
		// Make objects always first so we can quickly scan through objects
		// when clearing references out
		PrimitiveType pa = __a.type().primitiveType(),
			pb = __b.type().primitiveType();
		if (pa == null && pb != null)

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/nncc/ArgumentFormat.java.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
	
	/** 32-bit float. */
	FLOAT32,
	
	/** 64-bit float. */
	FLOAT64,
	
	/** End. */
	;
	
	/**
	 * Returns an array of all the formats.
	 *
	 * @param __a The input formats.
	 * @return {@code __a}.







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
	
	/** 32-bit float. */
	FLOAT32,
	
	/** 64-bit float. */
	FLOAT64,
	
	/* End. */
	;
	
	/**
	 * Returns an array of all the formats.
	 *
	 * @param __a The input formats.
	 * @return {@code __a}.

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/nncc/NearNativeByteCodeHandler.java.

471
472
473
474
475
476
477

478
479
480
481
482
483
484
....
1507
1508
1509
1510
1511
1512
1513

1514
1515
1516
1517
1518
1519
1520
....
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
....
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
....
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
....
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
....
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
....
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
....
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
....
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
....
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
....
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
....
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
....
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
....
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
....
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
....
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
....
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
....
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
....
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
....
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
....
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
....
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
....
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
....
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
....
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
....
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
....
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
....
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
....
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
....
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
....
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
....
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
....
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
....
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
....
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
	 * Reads a field.
	 *
	 * @param __fr The field reference.
	 * @param __i The instance.
	 * @param __v The output value.
	 * @since 2019/04/12
	 */

	public final void doFieldGet(FieldReference __fr,
		JavaStackResult.Input __i, JavaStackResult.Output __v)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Push references
		this.__refPush();
................................................................................
	}
	
	/**
	 * Sets up before processing the instruction.
	 *
	 * @since 2019/04/07
	 */

	public final void instructionSetup()
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		ByteCodeState state = this.state;
		int addr = state.addr;
		
		// Clear volatiles
................................................................................
	/**
	 * Checks if an array access is within bounds.
	 *
	 * @param __ir The instance register.
	 * @param __dxr The index register.
	 * @since 2019/04/27
	 */
	private final void __basicCheckArrayBound(int __ir, int __dxr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// This label is shared across many conditions
		NativeCodeLabel lab = this.__labelMakeException(
			"java/lang/ArrayIndexOutOfBoundsException");
		
................................................................................
	/**
	 * Checks if the target array can store this value.
	 *
	 * @param __ir The instance register.
	 * @param __vr The value register.
	 * @since 2019/04/27
	 */
	private final void __basicCheckArrayStore(int __ir, int __vr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Call helper class
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS,
			"jvmCanArrayStore", "(II)I", __ir, __vr);
................................................................................
	/**
	 * Basic check if the instance is of the given class.
	 *
	 * @param __ir The register to check.
	 * @param __cl The class to check.
	 * @since 2019/04/22
	 */
	private final void __basicCheckCCE(int __ir, ClassName __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
			
		NativeCodeBuilder codebuilder = this.codebuilder;
		
................................................................................
	
	/**
	 * Checks for divide by zero.
	 *
	 * @param __br The B register.
	 * @since 2019/06/24
	 */
	private final void __basicCheckDBZ(int __br)
	{
		// If the B register is zero, then we throw the exception
		this.codebuilder.addIfZero(__br, this.__labelMakeException(
			"java/lang/ArithmeticException"));
	}
	
	/**
	 * Checks that the given object is an array.
	 *
	 * @param __ir The type to check.
	 * @since 2019/04/27
	 */
	private final void __basicCheckIsArray(int __ir)
	{
		// Call internal helper
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS, "jvmIsArray",
			"(I)I", __ir);
		
		// If this is not an array, throw a class cast exception
................................................................................
	
	/**
	 * Checks if the requested array allocation is negative.
	 *
	 * @param __lr The length register.
	 * @since 2019/06/28
	 */
	private final void __basicCheckNAS(int __lr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Check against less than zero
		codebuilder.addIfICmp(CompareType.LESS_THAN,
			__lr, NativeCode.ZERO_REGISTER, this.__labelRefClearJump(
			this.__labelMakeException(
................................................................................
	
	/**
	 * Basic check if the instance is null.
	 *
	 * @param __ir The register to check.
	 * @since 2019/04/22
	 */
	private final void __basicCheckNPE(int __ir)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Just a plain zero check
		codebuilder.addIfZero(__ir, this.__labelRefClearJump(
			this.__labelMakeException("java/lang/NullPointerException")));
	}
................................................................................
	
	/**
	 * Checks if the given allocation ran out of memory.
	 *
	 * @param __ir The register to check.
	 * @since 2019/06/28
	 */
	private final void __basicCheckOOM(int __ir)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Just a plain zero check
		codebuilder.addIfZero(__ir, this.__labelRefClearJump(
			this.__labelMakeException("java/lang/OutOfMemoryError")));
	}
................................................................................
	 * Makes an EData for the current position and label.
	 *
	 * @param __lab The stored label.
	 * @return The made EData.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/26
	 */
	private final __EData__ __eData(NativeCodeLabel __lab)
		throws NullPointerException
	{
		if (__lab == null)
			throw new NullPointerException("NARG");
		
		ByteCodeState state = this.state;
		return new __EData__(state.addr, state.line,
................................................................................
	 * @param __at The type of access to perform.
	 * @param __fr The reference to the field.
	 * @param __read Is a read being performed?
	 * @return The accessed field.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	private final AccessedField __fieldAccess(FieldAccessType __at,
		FieldReference __fr, boolean __read)
		throws NullPointerException
	{
		if (__at == null || __fr == null)
			throw new NullPointerException("NARG");
		
		// Accessing final fields of another class will always be treated as
................................................................................
	
	/**
	 * Generates or jumps to another return point.
	 *
	 * @return The label to this return point.
	 * @since 2019/04/11
	 */
	private final NativeCodeLabel __generateReturn()
	{
		return this.__generateReturn(this.state.stack.possibleEnqueue());
	}
	
	/**
	 * Generates or jumps to another return point for the given enqueue.
	 *
	 * @param __eq The enqueue to return for.
	 * @return The label to this return point.
	 * @throws NullPointerException On null arguments.
	 * @return
	 */
	private final NativeCodeLabel __generateReturn(JavaStackEnqueueList __eq)
		throws NullPointerException
	{
		if (__eq == null)
			throw new NullPointerException("NARG");
		
		// Will be used to generate safe spots
		VolatileRegisterStack volatiles = this.volatiles;
................................................................................
	 * @param __name The method name.
	 * @param __type The method type.
	 * @param __out The result.
	 * @param __in The input.
	 * @throws NullPointerException If no name or type were specified.
	 * @since 2019/05/24
	 */
	private final void __invokeAssembly(MethodName __name,
		MethodDescriptor __type, JavaStackResult.Output __out,
		JavaStackResult.Input... __in)
		throws NullPointerException
	{
		if (__name == null || __type == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeInstance(InvokeType __it, ClassName __cl,
		String __mn, String __mt, RegisterList __args)
		throws NullPointerException
	{
		this.__invokeInstance(__it, __cl, new MethodName(__mn),
			new MethodDescriptor(__mt), __args);
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeInstance(InvokeType __it, ClassName __cl,
		MethodName __mn, MethodDescriptor __mt, RegisterList __args)
		throws NullPointerException
	{
		if (__it == null || __cl == null || __mn == null || __mt == null ||
			__args == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Allocates a new object.
	 *
	 * @param __cl The class to create.
	 * @param __out The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeNew(ClassName __cl, int __out)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		NativeCodeBuilder codebuilder = this.codebuilder;
		
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeStatic(InvokeType __it, String __cl,
		String __mn, String __mt, int... __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, new ClassName(__cl), new MethodName(__mn),
			new MethodDescriptor(__mt), new RegisterList(__args));
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeStatic(InvokeType __it, String __cl,
		String __mn, String __mt, RegisterList __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, new ClassName(__cl), new MethodName(__mn),
			new MethodDescriptor(__mt), __args);
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeStatic(InvokeType __it, ClassName __cl,
		String __mn, String __mt, int... __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, __cl, new MethodName(__mn),
			new MethodDescriptor(__mt), new RegisterList(__args));
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private final void __invokeStatic(InvokeType __it, ClassName __cl,
		MethodName __mn, MethodDescriptor __mt, RegisterList __args)
		throws NullPointerException
	{
		if (__it == null || __cl == null || __mn == null || __mt == null ||
			__args == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 *
	 * @param __pure Is the system call pure?
	 * @param __long Is this a long system call?
	 * @param __out The return register, may be set.
	 * @param __in The input system call arguments.
	 * @since 2109/05/27
	 */
	private final void __invokeSysCall(boolean __pure, boolean __long,
		JavaStackResult.Output __out, JavaStackResult.Input... __in)
	{
		// Invoked methods can thrown an exception, so do
		// checks! Otherwise the behavior we expect might not
		// happen
		this.state.canexception = true;
		
................................................................................
	
	/**
	 * Creates and stores an exception.
	 *
	 * @return The label to the exception.
	 * @since 2019/04/09
	 */
	private final NativeCodeLabel __labelException()
	{
		// Get both states for when an exception is handled (transition) and
		// for where it is not handled (full cleanup)
		ByteCodeState state = this.state;
		JavaStackResult handled = state.stack.doExceptionHandler(),
			nothandled = state.stack.doDestroy(false);
		
................................................................................
	 * is not poisoned it will be a normal jump.
	 *
	 * @param __jt The jump target.
	 * @return The label of the jump.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/12
	 */
	private final NativeCodeLabel __labelJava(InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		ByteCodeState state = this.state;
		JavaStackState sourcestack = state.stack;
................................................................................
	 *
	 * @param __sops The operation to use.
	 * @param __jt The jump target in the Java address space.
	 * @return The label for this transition.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/13
	 */
	private final NativeCodeLabel __labelJavaTransition(StateOperations __sops,
		InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__sops == null || __jt == null)
			throw new NullPointerException("NARG");
		
		// If no operations were generated then just use a normal jump since
................................................................................
	 * exception.
	 *
	 * @param __cl The class to create.
	 * @return The label for that target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/10
	 */
	private final NativeCodeLabel __labelMakeException(String __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Setup key, the label is the target to jump to after the exception
		// has been generated and a throw is performed
................................................................................
	 *
	 * @param __tl The target label.
	 * @return The transition label for reference clearing or {@code __tl}
	 * if there are no references to clear.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/24
	 */
	private final NativeCodeLabel __labelRefClearJump(NativeCodeLabel __tl)
		throws NullPointerException
	{
		if (__tl == null)
			throw new NullPointerException("NARG");
		
		return this.__labelRefClearJump(this._lastenqueue, __tl);
	}
................................................................................
	 * @param __eql The reference queue label.
	 * @param __tl The target label.
	 * @return The transition label for reference clearing or {@code __tl}
	 * if there are no references to clear.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/24
	 */
	private final NativeCodeLabel __labelRefClearJump(
		JavaStackEnqueueList __eql, NativeCodeLabel __tl)
		throws NullPointerException
	{
		if (__tl == null)
			throw new NullPointerException("NARG");
		
		// If not clearing anything, just return the target label
................................................................................
	 * Loads the class information for a class.
	 *
	 * @param __cl The class to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/01/19
	 */
	private final void __loadClassInfo(String __cl, int __r)
		throws NullPointerException
	{
		this.__loadClassInfo(new ClassName(__cl), __r);
	}
	
	/**
	 * Loads the class information for a class.
	 *
	 * @param __cl The class to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/15
	 */
	private final void __loadClassInfo(ClassName __cl, int __r)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Used for loading code
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Loads the Class object for the given class into the given register.
	 *
	 * @param __cl The class to load.
	 * @param __r The register to place it in.
	 * @since 2019/04/26
	 */
	private final void __loadClassObject(ClassName __cl, int __r)
	{
		VolatileRegisterStack volatiles = this.volatiles;
		
		// Load the class info for the class
		int volcdvt = volatiles.get();
		this.__loadClassInfo(__cl, volcdvt);
		
................................................................................
	 * Loads the constant pool for the given class.
	 *
	 * @param __cl The class pool to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/15
	 */
	private final void __loadClassPool(ClassName __cl, int __r)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Used for loading code
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Enters the monitor.
	 *
	 * @param __enter Is the monitor being entered? 
	 * @param __r The register to enter a monitor for.
	 * @since 2019/04/26
	 */
	private final void __monitor(boolean __enter, int __r)
	{
		// Call helper method
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS,
			(__enter ? "jvmMonitorEnter" : "jvmMonitorExit"), "(I)V", __r);
	}
	
	/**
	 * If anything has been previously pushed then generate code to clear it.
	 *
	 * @since 2019/03/30
	 */
	private final void __refClear()
	{
		// Do nothing if nothing has been enqueued
		JavaStackEnqueueList lastenqueue = this._lastenqueue;
		if (lastenqueue == null)
			return;
		
		// No need to clear anymore
................................................................................
	
	/**
	 * Generates code to reference count the given register.
	 *
	 * @param __r The register to reference to count.
	 * @since 2019/04/25
	 */
	private final void __refCount(int __r)
	{
		// If the object is null then it will not be counted, this is skipped
		NativeCodeLabel ncj = new NativeCodeLabel("refnocount",
			this._refclunk++);
		
		// Do not do any counting if this is zero
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Generates code to enqueue registers, if there are any. This implicitly
	 * uses the registers from the state.
	 *
	 * @return True if the push list was not empty.
	 * @since 2019/04/10
	 */
	private final boolean __refPush()
		throws NullPointerException
	{
		return this.__refPush(this.state.result.enqueue());
	}
	
	/**
	 * Generates code to enqueue registers, if there are any.
	 *
	 * @param __r The registers to push.
	 * @return True if the push list was not empty.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/30
	 */
	private final boolean __refPush(JavaStackEnqueueList __r)
		throws NullPointerException
	{
		if (__r == null)
			throw new NullPointerException("NARG");
		
		// Nothing to enqueue?
		if (__r.isEmpty())
................................................................................
	}
	
	/**
	 * Resets the reference queue so nothing uses it.
	 *
	 * @since 2019/11/24
	 */
	private final void __refReset()
	{
		this._lastenqueue = null;
	}
	
	/**
	 * Generates code to reference uncount the given register.
	 *
	 * @param __r The register to reference to uncount.
	 * @since 2019/04/25
	 */
	private final void __refUncount(int __r)
	{
		// If the object is null then it will not be uncounted, this is skipped
		NativeCodeLabel ncj = new NativeCodeLabel("refnouncount",
			this._refclunk++);
		
		// Need volatiles
		VolatileRegisterStack volatiles = this.volatiles;
................................................................................
	 * Uses the given EData and returns the used label.
	 *
	 * @param __ed The data to use.
	 * @return The label.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/25
	 */
	private final NativeCodeLabel __useEDataAndGetLabel(__EData__ __ed)
		throws NullPointerException
	{
		if (__ed == null)
			throw new NullPointerException("NARG");
		
		// Setup state
		ByteCodeState state = this.state;
................................................................................
	/**
	 * Sets debug point information for edata.
	 *
	 * @param __ed The EData used.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/16
	 */
	private final void __useEDataDebugPoint(__EData__ __ed, int __jop)
		throws NullPointerException
	{
		if (__ed == null)
			throw new NullPointerException("NARG");
		
		// Add debug point (operation becomes debug point 1)
		this.codebuilder.add(NativeInstructionType.DEBUG_POINT,
			__ed.line & 0x7FFF, __jop,
			__ed.jpc & 0x7FFF);
	}
}








>







 







>







 







|







 







|







 







|







 







|












|







 







|







 







|







 







|







 







|







 







|







 







|










|

|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|













|







 







|







 







|







 







|












|







 







|







 







|













|







 







|










|







 







|







 







|












471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
....
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
....
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
....
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
....
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
....
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
....
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
....
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
....
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
....
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
....
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
....
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
....
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
....
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
....
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
....
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
....
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
....
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
....
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
....
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
....
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
....
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
....
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
....
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
....
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
....
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
....
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
....
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
....
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
....
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
....
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
....
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
....
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
....
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
....
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
....
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
	 * Reads a field.
	 *
	 * @param __fr The field reference.
	 * @param __i The instance.
	 * @param __v The output value.
	 * @since 2019/04/12
	 */
	@Override
	public final void doFieldGet(FieldReference __fr,
		JavaStackResult.Input __i, JavaStackResult.Output __v)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Push references
		this.__refPush();
................................................................................
	}
	
	/**
	 * Sets up before processing the instruction.
	 *
	 * @since 2019/04/07
	 */
	@Override
	public final void instructionSetup()
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		ByteCodeState state = this.state;
		int addr = state.addr;
		
		// Clear volatiles
................................................................................
	/**
	 * Checks if an array access is within bounds.
	 *
	 * @param __ir The instance register.
	 * @param __dxr The index register.
	 * @since 2019/04/27
	 */
	private void __basicCheckArrayBound(int __ir, int __dxr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// This label is shared across many conditions
		NativeCodeLabel lab = this.__labelMakeException(
			"java/lang/ArrayIndexOutOfBoundsException");
		
................................................................................
	/**
	 * Checks if the target array can store this value.
	 *
	 * @param __ir The instance register.
	 * @param __vr The value register.
	 * @since 2019/04/27
	 */
	private void __basicCheckArrayStore(int __ir, int __vr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Call helper class
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS,
			"jvmCanArrayStore", "(II)I", __ir, __vr);
................................................................................
	/**
	 * Basic check if the instance is of the given class.
	 *
	 * @param __ir The register to check.
	 * @param __cl The class to check.
	 * @since 2019/04/22
	 */
	private void __basicCheckCCE(int __ir, ClassName __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
			
		NativeCodeBuilder codebuilder = this.codebuilder;
		
................................................................................
	
	/**
	 * Checks for divide by zero.
	 *
	 * @param __br The B register.
	 * @since 2019/06/24
	 */
	private void __basicCheckDBZ(int __br)
	{
		// If the B register is zero, then we throw the exception
		this.codebuilder.addIfZero(__br, this.__labelMakeException(
			"java/lang/ArithmeticException"));
	}
	
	/**
	 * Checks that the given object is an array.
	 *
	 * @param __ir The type to check.
	 * @since 2019/04/27
	 */
	private void __basicCheckIsArray(int __ir)
	{
		// Call internal helper
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS, "jvmIsArray",
			"(I)I", __ir);
		
		// If this is not an array, throw a class cast exception
................................................................................
	
	/**
	 * Checks if the requested array allocation is negative.
	 *
	 * @param __lr The length register.
	 * @since 2019/06/28
	 */
	private void __basicCheckNAS(int __lr)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Check against less than zero
		codebuilder.addIfICmp(CompareType.LESS_THAN,
			__lr, NativeCode.ZERO_REGISTER, this.__labelRefClearJump(
			this.__labelMakeException(
................................................................................
	
	/**
	 * Basic check if the instance is null.
	 *
	 * @param __ir The register to check.
	 * @since 2019/04/22
	 */
	private void __basicCheckNPE(int __ir)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Just a plain zero check
		codebuilder.addIfZero(__ir, this.__labelRefClearJump(
			this.__labelMakeException("java/lang/NullPointerException")));
	}
................................................................................
	
	/**
	 * Checks if the given allocation ran out of memory.
	 *
	 * @param __ir The register to check.
	 * @since 2019/06/28
	 */
	private void __basicCheckOOM(int __ir)
	{
		NativeCodeBuilder codebuilder = this.codebuilder;
		
		// Just a plain zero check
		codebuilder.addIfZero(__ir, this.__labelRefClearJump(
			this.__labelMakeException("java/lang/OutOfMemoryError")));
	}
................................................................................
	 * Makes an EData for the current position and label.
	 *
	 * @param __lab The stored label.
	 * @return The made EData.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/26
	 */
	private __EData__ __eData(NativeCodeLabel __lab)
		throws NullPointerException
	{
		if (__lab == null)
			throw new NullPointerException("NARG");
		
		ByteCodeState state = this.state;
		return new __EData__(state.addr, state.line,
................................................................................
	 * @param __at The type of access to perform.
	 * @param __fr The reference to the field.
	 * @param __read Is a read being performed?
	 * @return The accessed field.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/24
	 */
	private AccessedField __fieldAccess(FieldAccessType __at,
		FieldReference __fr, boolean __read)
		throws NullPointerException
	{
		if (__at == null || __fr == null)
			throw new NullPointerException("NARG");
		
		// Accessing final fields of another class will always be treated as
................................................................................
	
	/**
	 * Generates or jumps to another return point.
	 *
	 * @return The label to this return point.
	 * @since 2019/04/11
	 */
	private NativeCodeLabel __generateReturn()
	{
		return this.__generateReturn(this.state.stack.possibleEnqueue());
	}
	
	/**
	 * Generates or jumps to another return point for the given enqueue.
	 *
	 * @param __eq The enqueue to return for.
	 * @return The label to this return point.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/11
	 */
	private NativeCodeLabel __generateReturn(JavaStackEnqueueList __eq)
		throws NullPointerException
	{
		if (__eq == null)
			throw new NullPointerException("NARG");
		
		// Will be used to generate safe spots
		VolatileRegisterStack volatiles = this.volatiles;
................................................................................
	 * @param __name The method name.
	 * @param __type The method type.
	 * @param __out The result.
	 * @param __in The input.
	 * @throws NullPointerException If no name or type were specified.
	 * @since 2019/05/24
	 */
	private void __invokeAssembly(MethodName __name,
		MethodDescriptor __type, JavaStackResult.Output __out,
		JavaStackResult.Input... __in)
		throws NullPointerException
	{
		if (__name == null || __type == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeInstance(InvokeType __it, ClassName __cl,
		String __mn, String __mt, RegisterList __args)
		throws NullPointerException
	{
		this.__invokeInstance(__it, __cl, new MethodName(__mn),
			new MethodDescriptor(__mt), __args);
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeInstance(InvokeType __it, ClassName __cl,
		MethodName __mn, MethodDescriptor __mt, RegisterList __args)
		throws NullPointerException
	{
		if (__it == null || __cl == null || __mn == null || __mt == null ||
			__args == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 * Allocates a new object.
	 *
	 * @param __cl The class to create.
	 * @param __out The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeNew(ClassName __cl, int __out)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		NativeCodeBuilder codebuilder = this.codebuilder;
		
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeStatic(InvokeType __it, String __cl,
		String __mn, String __mt, int... __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, new ClassName(__cl), new MethodName(__mn),
			new MethodDescriptor(__mt), new RegisterList(__args));
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeStatic(InvokeType __it, String __cl,
		String __mn, String __mt, RegisterList __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, new ClassName(__cl), new MethodName(__mn),
			new MethodDescriptor(__mt), __args);
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeStatic(InvokeType __it, ClassName __cl,
		String __mn, String __mt, int... __args)
		throws NullPointerException
	{
		this.__invokeStatic(__it, __cl, new MethodName(__mn),
			new MethodDescriptor(__mt), new RegisterList(__args));
	}
	
................................................................................
	 * @param __cl The class name.
	 * @param __mn The method name.
	 * @param __mt The method type.
	 * @param __args The arguments to the call.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/24
	 */
	private void __invokeStatic(InvokeType __it, ClassName __cl,
		MethodName __mn, MethodDescriptor __mt, RegisterList __args)
		throws NullPointerException
	{
		if (__it == null || __cl == null || __mn == null || __mt == null ||
			__args == null)
			throw new NullPointerException("NARG");
		
................................................................................
	 *
	 * @param __pure Is the system call pure?
	 * @param __long Is this a long system call?
	 * @param __out The return register, may be set.
	 * @param __in The input system call arguments.
	 * @since 2109/05/27
	 */
	private void __invokeSysCall(boolean __pure, boolean __long,
		JavaStackResult.Output __out, JavaStackResult.Input... __in)
	{
		// Invoked methods can thrown an exception, so do
		// checks! Otherwise the behavior we expect might not
		// happen
		this.state.canexception = true;
		
................................................................................
	
	/**
	 * Creates and stores an exception.
	 *
	 * @return The label to the exception.
	 * @since 2019/04/09
	 */
	private NativeCodeLabel __labelException()
	{
		// Get both states for when an exception is handled (transition) and
		// for where it is not handled (full cleanup)
		ByteCodeState state = this.state;
		JavaStackResult handled = state.stack.doExceptionHandler(),
			nothandled = state.stack.doDestroy(false);
		
................................................................................
	 * is not poisoned it will be a normal jump.
	 *
	 * @param __jt The jump target.
	 * @return The label of the jump.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/12
	 */
	private NativeCodeLabel __labelJava(InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		ByteCodeState state = this.state;
		JavaStackState sourcestack = state.stack;
................................................................................
	 *
	 * @param __sops The operation to use.
	 * @param __jt The jump target in the Java address space.
	 * @return The label for this transition.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/13
	 */
	private NativeCodeLabel __labelJavaTransition(StateOperations __sops,
		InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__sops == null || __jt == null)
			throw new NullPointerException("NARG");
		
		// If no operations were generated then just use a normal jump since
................................................................................
	 * exception.
	 *
	 * @param __cl The class to create.
	 * @return The label for that target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/10
	 */
	private NativeCodeLabel __labelMakeException(String __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Setup key, the label is the target to jump to after the exception
		// has been generated and a throw is performed
................................................................................
	 *
	 * @param __tl The target label.
	 * @return The transition label for reference clearing or {@code __tl}
	 * if there are no references to clear.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/24
	 */
	private NativeCodeLabel __labelRefClearJump(NativeCodeLabel __tl)
		throws NullPointerException
	{
		if (__tl == null)
			throw new NullPointerException("NARG");
		
		return this.__labelRefClearJump(this._lastenqueue, __tl);
	}
................................................................................
	 * @param __eql The reference queue label.
	 * @param __tl The target label.
	 * @return The transition label for reference clearing or {@code __tl}
	 * if there are no references to clear.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/24
	 */
	private NativeCodeLabel __labelRefClearJump(
		JavaStackEnqueueList __eql, NativeCodeLabel __tl)
		throws NullPointerException
	{
		if (__tl == null)
			throw new NullPointerException("NARG");
		
		// If not clearing anything, just return the target label
................................................................................
	 * Loads the class information for a class.
	 *
	 * @param __cl The class to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2020/01/19
	 */
	private void __loadClassInfo(String __cl, int __r)
		throws NullPointerException
	{
		this.__loadClassInfo(new ClassName(__cl), __r);
	}
	
	/**
	 * Loads the class information for a class.
	 *
	 * @param __cl The class to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/15
	 */
	private void __loadClassInfo(ClassName __cl, int __r)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Used for loading code
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Loads the Class object for the given class into the given register.
	 *
	 * @param __cl The class to load.
	 * @param __r The register to place it in.
	 * @since 2019/04/26
	 */
	private void __loadClassObject(ClassName __cl, int __r)
	{
		VolatileRegisterStack volatiles = this.volatiles;
		
		// Load the class info for the class
		int volcdvt = volatiles.get();
		this.__loadClassInfo(__cl, volcdvt);
		
................................................................................
	 * Loads the constant pool for the given class.
	 *
	 * @param __cl The class pool to load.
	 * @param __r The output register.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/12/15
	 */
	private void __loadClassPool(ClassName __cl, int __r)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// Used for loading code
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Enters the monitor.
	 *
	 * @param __enter Is the monitor being entered? 
	 * @param __r The register to enter a monitor for.
	 * @since 2019/04/26
	 */
	private void __monitor(boolean __enter, int __r)
	{
		// Call helper method
		this.__invokeStatic(InvokeType.SYSTEM,
			NearNativeByteCodeHandler.JVMFUNC_CLASS,
			(__enter ? "jvmMonitorEnter" : "jvmMonitorExit"), "(I)V", __r);
	}
	
	/**
	 * If anything has been previously pushed then generate code to clear it.
	 *
	 * @since 2019/03/30
	 */
	private void __refClear()
	{
		// Do nothing if nothing has been enqueued
		JavaStackEnqueueList lastenqueue = this._lastenqueue;
		if (lastenqueue == null)
			return;
		
		// No need to clear anymore
................................................................................
	
	/**
	 * Generates code to reference count the given register.
	 *
	 * @param __r The register to reference to count.
	 * @since 2019/04/25
	 */
	private void __refCount(int __r)
	{
		// If the object is null then it will not be counted, this is skipped
		NativeCodeLabel ncj = new NativeCodeLabel("refnocount",
			this._refclunk++);
		
		// Do not do any counting if this is zero
		NativeCodeBuilder codebuilder = this.codebuilder;
................................................................................
	/**
	 * Generates code to enqueue registers, if there are any. This implicitly
	 * uses the registers from the state.
	 *
	 * @return True if the push list was not empty.
	 * @since 2019/04/10
	 */
	private boolean __refPush()
		throws NullPointerException
	{
		return this.__refPush(this.state.result.enqueue());
	}
	
	/**
	 * Generates code to enqueue registers, if there are any.
	 *
	 * @param __r The registers to push.
	 * @return True if the push list was not empty.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/03/30
	 */
	private boolean __refPush(JavaStackEnqueueList __r)
		throws NullPointerException
	{
		if (__r == null)
			throw new NullPointerException("NARG");
		
		// Nothing to enqueue?
		if (__r.isEmpty())
................................................................................
	}
	
	/**
	 * Resets the reference queue so nothing uses it.
	 *
	 * @since 2019/11/24
	 */
	private void __refReset()
	{
		this._lastenqueue = null;
	}
	
	/**
	 * Generates code to reference uncount the given register.
	 *
	 * @param __r The register to reference to uncount.
	 * @since 2019/04/25
	 */
	private void __refUncount(int __r)
	{
		// If the object is null then it will not be uncounted, this is skipped
		NativeCodeLabel ncj = new NativeCodeLabel("refnouncount",
			this._refclunk++);
		
		// Need volatiles
		VolatileRegisterStack volatiles = this.volatiles;
................................................................................
	 * Uses the given EData and returns the used label.
	 *
	 * @param __ed The data to use.
	 * @return The label.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/25
	 */
	private NativeCodeLabel __useEDataAndGetLabel(__EData__ __ed)
		throws NullPointerException
	{
		if (__ed == null)
			throw new NullPointerException("NARG");
		
		// Setup state
		ByteCodeState state = this.state;
................................................................................
	/**
	 * Sets debug point information for edata.
	 *
	 * @param __ed The EData used.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/16
	 */
	private void __useEDataDebugPoint(__EData__ __ed, int __jop)
		throws NullPointerException
	{
		if (__ed == null)
			throw new NullPointerException("NARG");
		
		// Add debug point (operation becomes debug point 1)
		this.codebuilder.add(NativeInstructionType.DEBUG_POINT,
			__ed.line & 0x7FFF, __jop,
			__ed.jpc & 0x7FFF);
	}
}

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/nncc/__Debug__.java.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 * @since 2019/04/16
 */
final class __Debug__
{
	/** Debug enabled? */
	public static final boolean ENABLED;
	
	/**
	 * Gets the debug flag.
	 *
	 * @since 2019/04/16
	 */
	static
	{
		// Get property
		boolean en = false;
		try
		{







|
|
|
|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 * @since 2019/04/16
 */
final class __Debug__
{
	/** Debug enabled? */
	public static final boolean ENABLED;
	
	/*
	  Gets the debug flag.
	 
	  @since 2019/04/16
	 */
	static
	{
		// Get property
		boolean en = false;
		try
		{

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/pool/BasicPoolBuilder.java.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public final class BasicPoolBuilder
	implements Iterable<BasicPoolEntry>
{
	/** Entries which exist in the constant pool. */
	protected final Map<Object, BasicPoolEntry> entries =
		new LinkedHashMap<>();
	
	/**
	 * Base pool initialization.
	 *
	 * @since 2019/07/15
	 */
	{
		// The first entry of the constant pool is always null!
		this.entries.put(null, new BasicPoolEntry(0, null, new int[0]));
	}
	
	/**







|
|
|
|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public final class BasicPoolBuilder
	implements Iterable<BasicPoolEntry>
{
	/** Entries which exist in the constant pool. */
	protected final Map<Object, BasicPoolEntry> entries =
		new LinkedHashMap<>();
	
	/*
	  Base pool initialization.
	 
	  @since 2019/07/15
	 */
	{
		// The first entry of the constant pool is always null!
		this.entries.put(null, new BasicPoolEntry(0, null, new int[0]));
	}
	
	/**

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/pool/FieldAccessTime.java.

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	
	/** Written by non-constructor. */
	NORMAL,
	
	/** Read access. */
	READ,
	
	/** End. */
	;
	
	/**
	 * Returns the access time for the given ordinal.
	 *
	 * @param __i The ordinal.
	 * @return The access time.







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	
	/** Written by non-constructor. */
	NORMAL,
	
	/** Read access. */
	READ,
	
	/* End. */
	;
	
	/**
	 * Returns the access time for the given ordinal.
	 *
	 * @param __i The ordinal.
	 * @return The access time.

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/pool/FieldAccessType.java.

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Static. */
	STATIC,
	
	/** Instance. */
	INSTANCE,
	
	/** End. */
	;
	
	/**
	 * Is this field access static?
	 *
	 * @return If this is a static field access.
	 * @since 2019/04/22







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
	/** Static. */
	STATIC,
	
	/** Instance. */
	INSTANCE,
	
	/* End. */
	;
	
	/**
	 * Is this field access static?
	 *
	 * @return If this is a static field access.
	 * @since 2019/04/22

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/pool/InvokeType.java.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** Interface. */
	INTERFACE,
	
	/** System invocation type. */
	SYSTEM,
	
	/** End. */
	;
	
	/**
	 * Does this use an instance variable?
	 *
	 * @return If there is an instance variable that is used.
	 * @since 2019/03/20







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	
	/** Interface. */
	INTERFACE,
	
	/** System invocation type. */
	SYSTEM,
	
	/* End. */
	;
	
	/**
	 * Does this use an instance variable?
	 *
	 * @return If there is an instance variable that is used.
	 * @since 2019/03/20

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/ByteCodeProcessor.java.

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
...
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
...
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
...
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
...
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
...
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
...
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
...
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
...
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
...
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
...
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
...
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
...
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
...
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
...
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
....
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
....
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
....
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
....
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
....
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
....
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
....
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
....
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
....
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
....
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
....
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
....
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
....
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
....
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
....
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
	}
	
	/**
	 * Processes the byte code and calls the destination handler.
	 *
	 * @since 2019/04/06
	 */
	private final void __aaaProcess()
	{
		ByteCode bytecode = this.bytecode;
		ByteCodeState state = this.state;
		ByteCodeHandler handler = this.handler;
		StackMapTable stackmaptable = this.stackmaptable;
		Map<Integer, JavaStackState> stacks = state.stacks;
		Map<Integer, StateOperations> stackpoison = state.stackpoison;
................................................................................
	}
	
	/**
	 * Pushes a null constant to the stack.
	 *
	 * @since 2019/04/16
	 */
	private final void __doAConstNull()
	{
		// -> [ref]
		JavaStackResult result = this.state.stack.doStack(0, JavaType.OBJECT);
		this.__update(result);
		
		// Stop pre-processing here
		if (!this._dohandling)
................................................................................
	}
	
	/**
	 * Gets length of array.
	 *
	 * @since 2019/04/06
	 */
	private final void __doArrayLength()
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [array] -> [len]
		JavaStackResult result = this.state.stack.doStack(1, JavaType.INTEGER);
		this.__update(result);
................................................................................
	/**
	 * Loads value from value.
	 *
	 * @param __pt The type to load, {@code null} is considered to be an
	 * object.
	 * @since 2019/04/06
	 */
	private final void __doArrayLoad(PrimitiveType __pt)
	{
		// An exception may be thrown
		this._canexception = true;
		
		// This is easily determined from the primitive type
		JavaType faketype;
		if (__pt != null)
................................................................................
	/**
	 * Stores value into an array.
	 *
	 * @param __pt The type to store, {@code null} is considered to be an
	 * object.
	 * @since 2019/04/06
	 */
	private final void __doArrayStore(PrimitiveType __pt)
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [array, index, value]
		JavaStackResult result = this.state.stack.doStack(3);
		this.__update(result);
................................................................................
	/**
	 * Checks that the object on the stack is of the given type.
	 *
	 * @param __cn The name of the class to check.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doCheckCast(ClassName __cn)
		throws NullPointerException
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [object] -> [object]
		JavaStackResult result = this.state.stack.doCheckCast(
................................................................................
	 * Converts from one Java type to another
	 *
	 * @param __from The source type.
	 * @param __to The destination type.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private final void __doConvert(StackJavaType __from, StackJavaType __to)
		throws NullPointerException
	{
		if (__from == null || __to == null)
			throw new NullPointerException("NARG");
		
		// [from] -> [to]
		JavaStackResult result = this.state.stack.doStack(1, __to.toJavaType());
................................................................................
	/**
	 * Reads a value from a field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doFieldGet(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Puts a value into a field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private final void __doFieldPut(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Goes to another address.
	 *
	 * @param __jt The target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doGoto(InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Do nothing!
		this.__update(this.state.stack.doNothing());
................................................................................
	 *
	 * @param __type The type to work with on the stack.
	 * @param __ct The comparison type.
	 * @param __ijt The instruction jump target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/05
	 */
	private final void __doIf(DataType __type, CompareType __ct,
		InstructionJumpTarget __ijt)
		throws NullPointerException
	{
		if (__type == null || __ct == null || __ijt == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC19 Cannot compare float or double.}
................................................................................
	 *
	 * @param __type The type to work with on the stack.
	 * @param __ct The comparison type.
	 * @param __ijt The instruction jump target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doIfCmp(DataType __type, CompareType __ct,
		InstructionJumpTarget __ijt)
		throws NullPointerException
	{
		if (__type == null || __ct == null || __ijt == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC1a Cannot compare float or double.}
................................................................................
	/**
	 * Increments local variable.
	 *
	 * @param __l The local to increment.
	 * @param __v The value to increment by.
	 * @since 2019/04/06
	 */
	private final void __doIInc(int __l, int __v)
	{
		// Just write an integer to the integer so its state is known
		JavaStackResult result = this.state.stack.
			doLocalSet(JavaType.INTEGER, __l);
		this.__update(result);
		
		// Stop pre-processing here
................................................................................
	/**
	 * Checks that the class is the given instance.
	 *
	 * @param __cl The class to check.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private final void __doInstanceOf(ClassName __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// [object] -> [int]
		JavaStackResult result = this.state.stack.doStack(1, JavaType.INTEGER);
................................................................................
	 * Handles invocation of other methods.
	 *
	 * @param __t The type of invocation to perform.
	 * @param __r The method to invoke.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private final void __doInvoke(InvokeType __t, MethodReference __r)
		throws NullPointerException
	{
		if (__t == null || __r == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Loads constant value onto the stack.
	 *
	 * @param __v The value to push.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private final void __doLdc(ConstantValue __v)
		throws NullPointerException
	{
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Get push properties
		JavaType jt = __v.type().javaType();
................................................................................
	 * Loads from a local and puts to the stack.
	 *
	 * @param __jt The type to push.
	 * @param __from The source local.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private final void __doLoad(DataType __jt, int __from)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Load from local variable
		JavaStackResult result = this.state.stack.doLocalLoad(__from);
................................................................................
	/**
	 * Handles lookup switch.
	 *
	 * @param __ls The switch.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private final void __doLookupSwitch(LookupSwitch __ls)
		throws NullPointerException
	{
		if (__ls == null)
			throw new NullPointerException("NARG");
		
		// [key] ->
		JavaStackResult result = this.state.stack.doStack(1);
................................................................................
	 * Performs math operation.
	 *
	 * @param __pt The primitive type.
	 * @param __mot The math operation type.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doMath(DataType __pt, MathType __mot)
		throws NullPointerException
	{
		if (__pt == null || __mot == null)
			throw new NullPointerException("NARG");
		
		// We may throw an exception here if we divide by zero!
		if (__pt == DataType.INTEGER || __pt == DataType.LONG)
................................................................................
	 *
	 * @param __pt The primitive type.
	 * @param __mot The math operation type.
	 * @param __c The constant.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doMathConst(DataType __pt, MathType __mot, Number __c)
		throws NullPointerException
	{
		if (__pt == null || __mot == null || __c == null)
			throw new NullPointerException("NARG");
		
		// [a, b] -> [result]
		JavaStackResult result = this.state.stack.doStack(1,
................................................................................
	
	/**
	 * Enters or exits the monitor.
	 *
	 * @param __enter If the monitor is to be entered.
	 * @since 2019/04/16
	 */
	private final void __doMonitor(boolean __enter)
	{
		// Can toss exception
		this._canexception = true;
		
		// [object] ->
		JavaStackResult result = this.state.stack.doStack(1);
		this.__update(result);
................................................................................
	 * Allocate multi-dimensional array.
	 *
	 * @param __cl The class to allocate.
	 * @param __dims The number of dimensions to allocate.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/04
	 */
	private final void __doMultiANewArray(ClassName __cl, int __dims)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
			
		// Can toss exception
		this._canexception = true;
................................................................................
	/**
	 * Creates a new instance of the given class.
	 *
	 * @param __cn The class to create.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private final void __doNew(ClassName __cn)
		throws NullPointerException
	{
		if (__cn == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Allocates a new array.
	 *
	 * @param __cn The component type of the array.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/05
	 */
	private final void __doNewArray(ClassName __cn)
		throws NullPointerException
	{
		if (__cn == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	}
	
	/**
	 * Do nothing.
	 *
	 * @since 2019/04/07
	 */
	private final void __doNop()
	{
		// Just do nothing
		this.__update(this.state.stack.doNothing());
	}
	
	/**
	 * Handles returning.
	 *
	 * @param __rt The type to return, {@code null} means nothing is to be
	 * returned.
	 * @since 2019/04/03
	 */
	private final void __doReturn(JavaType __rt)
	{
		ByteCodeState state = this.state;
		
		// Destroy everything and bring destruction to the method!!!
		JavaStackResult result = state.stack.doDestroy(__rt != null);
		this.__update(result);
		
................................................................................
	/**
	 * Performs shuffling of the stack.
	 *
	 * @param __st The type of shuffle to do.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private final void __doStackShuffle(JavaStackShuffleType __st)
		throws NullPointerException
	{
		if (__st == null)
			throw new NullPointerException("NARG");
		
		// Shuffle the stack
		JavaStackResult result = this.state.stack.doStackShuffle(__st);
................................................................................
	/**
	 * Reads a value from a static field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doStaticGet(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Writes to static field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/13
	 */
	private final void __doStaticPut(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	 * Stores an entry on the stack.
	 *
	 * @param __jt The type to pop.
	 * @param __to The destination local.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private final void __doStore(DataType __jt, int __to)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Store onto the stack, locals are never cached
		JavaStackResult result = this.state.stack.doLocalStore(__to);
................................................................................
	}
	
	/**
	 * Performs a throw of an exception on the stack.
	 *
	 * @since 2019/04/05
	 */
	private final void __doThrow()
	{
		// An exception will be thrown
		this._canexception = true;
		
		// Pop item from the stack
		JavaStackResult result = this.state.stack.doStack(1);
		this.__update(result);
................................................................................
	/**
	 * Updates the stack state and result.
	 *
	 * @param __jsr The stack result.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/07
	 */
	private final void __update(JavaStackResult __jsr)
		throws NullPointerException
	{
		if (__jsr == null)
			throw new NullPointerException("NARG");
		
		// The new stack state
		JavaStackState newstack = __jsr.after();







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|












|







 







|







 







|







 







|







 







|







 







|







 







|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
...
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
...
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
...
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
...
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
...
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
...
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
...
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
...
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
...
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
...
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
...
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
...
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
...
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
...
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
....
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
....
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
....
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
....
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
....
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
....
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
....
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
....
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
....
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
....
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
....
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
....
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
....
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
....
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
....
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
	}
	
	/**
	 * Processes the byte code and calls the destination handler.
	 *
	 * @since 2019/04/06
	 */
	private void __aaaProcess()
	{
		ByteCode bytecode = this.bytecode;
		ByteCodeState state = this.state;
		ByteCodeHandler handler = this.handler;
		StackMapTable stackmaptable = this.stackmaptable;
		Map<Integer, JavaStackState> stacks = state.stacks;
		Map<Integer, StateOperations> stackpoison = state.stackpoison;
................................................................................
	}
	
	/**
	 * Pushes a null constant to the stack.
	 *
	 * @since 2019/04/16
	 */
	private void __doAConstNull()
	{
		// -> [ref]
		JavaStackResult result = this.state.stack.doStack(0, JavaType.OBJECT);
		this.__update(result);
		
		// Stop pre-processing here
		if (!this._dohandling)
................................................................................
	}
	
	/**
	 * Gets length of array.
	 *
	 * @since 2019/04/06
	 */
	private void __doArrayLength()
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [array] -> [len]
		JavaStackResult result = this.state.stack.doStack(1, JavaType.INTEGER);
		this.__update(result);
................................................................................
	/**
	 * Loads value from value.
	 *
	 * @param __pt The type to load, {@code null} is considered to be an
	 * object.
	 * @since 2019/04/06
	 */
	private void __doArrayLoad(PrimitiveType __pt)
	{
		// An exception may be thrown
		this._canexception = true;
		
		// This is easily determined from the primitive type
		JavaType faketype;
		if (__pt != null)
................................................................................
	/**
	 * Stores value into an array.
	 *
	 * @param __pt The type to store, {@code null} is considered to be an
	 * object.
	 * @since 2019/04/06
	 */
	private void __doArrayStore(PrimitiveType __pt)
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [array, index, value]
		JavaStackResult result = this.state.stack.doStack(3);
		this.__update(result);
................................................................................
	/**
	 * Checks that the object on the stack is of the given type.
	 *
	 * @param __cn The name of the class to check.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doCheckCast(ClassName __cn)
		throws NullPointerException
	{
		// An exception may be thrown
		this._canexception = true;
		
		// [object] -> [object]
		JavaStackResult result = this.state.stack.doCheckCast(
................................................................................
	 * Converts from one Java type to another
	 *
	 * @param __from The source type.
	 * @param __to The destination type.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private void __doConvert(StackJavaType __from, StackJavaType __to)
		throws NullPointerException
	{
		if (__from == null || __to == null)
			throw new NullPointerException("NARG");
		
		// [from] -> [to]
		JavaStackResult result = this.state.stack.doStack(1, __to.toJavaType());
................................................................................
	/**
	 * Reads a value from a field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doFieldGet(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Puts a value into a field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private void __doFieldPut(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Goes to another address.
	 *
	 * @param __jt The target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doGoto(InstructionJumpTarget __jt)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Do nothing!
		this.__update(this.state.stack.doNothing());
................................................................................
	 *
	 * @param __type The type to work with on the stack.
	 * @param __ct The comparison type.
	 * @param __ijt The instruction jump target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/05
	 */
	private void __doIf(DataType __type, CompareType __ct,
		InstructionJumpTarget __ijt)
		throws NullPointerException
	{
		if (__type == null || __ct == null || __ijt == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC19 Cannot compare float or double.}
................................................................................
	 *
	 * @param __type The type to work with on the stack.
	 * @param __ct The comparison type.
	 * @param __ijt The instruction jump target.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doIfCmp(DataType __type, CompareType __ct,
		InstructionJumpTarget __ijt)
		throws NullPointerException
	{
		if (__type == null || __ct == null || __ijt == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC1a Cannot compare float or double.}
................................................................................
	/**
	 * Increments local variable.
	 *
	 * @param __l The local to increment.
	 * @param __v The value to increment by.
	 * @since 2019/04/06
	 */
	private void __doIInc(int __l, int __v)
	{
		// Just write an integer to the integer so its state is known
		JavaStackResult result = this.state.stack.
			doLocalSet(JavaType.INTEGER, __l);
		this.__update(result);
		
		// Stop pre-processing here
................................................................................
	/**
	 * Checks that the class is the given instance.
	 *
	 * @param __cl The class to check.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private void __doInstanceOf(ClassName __cl)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
		
		// [object] -> [int]
		JavaStackResult result = this.state.stack.doStack(1, JavaType.INTEGER);
................................................................................
	 * Handles invocation of other methods.
	 *
	 * @param __t The type of invocation to perform.
	 * @param __r The method to invoke.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private void __doInvoke(InvokeType __t, MethodReference __r)
		throws NullPointerException
	{
		if (__t == null || __r == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Loads constant value onto the stack.
	 *
	 * @param __v The value to push.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private void __doLdc(ConstantValue __v)
		throws NullPointerException
	{
		if (__v == null)
			throw new NullPointerException("NARG");
		
		// Get push properties
		JavaType jt = __v.type().javaType();
................................................................................
	 * Loads from a local and puts to the stack.
	 *
	 * @param __jt The type to push.
	 * @param __from The source local.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/03
	 */
	private void __doLoad(DataType __jt, int __from)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Load from local variable
		JavaStackResult result = this.state.stack.doLocalLoad(__from);
................................................................................
	/**
	 * Handles lookup switch.
	 *
	 * @param __ls The switch.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/16
	 */
	private void __doLookupSwitch(LookupSwitch __ls)
		throws NullPointerException
	{
		if (__ls == null)
			throw new NullPointerException("NARG");
		
		// [key] ->
		JavaStackResult result = this.state.stack.doStack(1);
................................................................................
	 * Performs math operation.
	 *
	 * @param __pt The primitive type.
	 * @param __mot The math operation type.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doMath(DataType __pt, MathType __mot)
		throws NullPointerException
	{
		if (__pt == null || __mot == null)
			throw new NullPointerException("NARG");
		
		// We may throw an exception here if we divide by zero!
		if (__pt == DataType.INTEGER || __pt == DataType.LONG)
................................................................................
	 *
	 * @param __pt The primitive type.
	 * @param __mot The math operation type.
	 * @param __c The constant.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doMathConst(DataType __pt, MathType __mot, Number __c)
		throws NullPointerException
	{
		if (__pt == null || __mot == null || __c == null)
			throw new NullPointerException("NARG");
		
		// [a, b] -> [result]
		JavaStackResult result = this.state.stack.doStack(1,
................................................................................
	
	/**
	 * Enters or exits the monitor.
	 *
	 * @param __enter If the monitor is to be entered.
	 * @since 2019/04/16
	 */
	private void __doMonitor(boolean __enter)
	{
		// Can toss exception
		this._canexception = true;
		
		// [object] ->
		JavaStackResult result = this.state.stack.doStack(1);
		this.__update(result);
................................................................................
	 * Allocate multi-dimensional array.
	 *
	 * @param __cl The class to allocate.
	 * @param __dims The number of dimensions to allocate.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/05/04
	 */
	private void __doMultiANewArray(ClassName __cl, int __dims)
		throws NullPointerException
	{
		if (__cl == null)
			throw new NullPointerException("NARG");
			
		// Can toss exception
		this._canexception = true;
................................................................................
	/**
	 * Creates a new instance of the given class.
	 *
	 * @param __cn The class to create.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private void __doNew(ClassName __cn)
		throws NullPointerException
	{
		if (__cn == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Allocates a new array.
	 *
	 * @param __cn The component type of the array.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/05
	 */
	private void __doNewArray(ClassName __cn)
		throws NullPointerException
	{
		if (__cn == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	}
	
	/**
	 * Do nothing.
	 *
	 * @since 2019/04/07
	 */
	private void __doNop()
	{
		// Just do nothing
		this.__update(this.state.stack.doNothing());
	}
	
	/**
	 * Handles returning.
	 *
	 * @param __rt The type to return, {@code null} means nothing is to be
	 * returned.
	 * @since 2019/04/03
	 */
	private void __doReturn(JavaType __rt)
	{
		ByteCodeState state = this.state;
		
		// Destroy everything and bring destruction to the method!!!
		JavaStackResult result = state.stack.doDestroy(__rt != null);
		this.__update(result);
		
................................................................................
	/**
	 * Performs shuffling of the stack.
	 *
	 * @param __st The type of shuffle to do.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/04
	 */
	private void __doStackShuffle(JavaStackShuffleType __st)
		throws NullPointerException
	{
		if (__st == null)
			throw new NullPointerException("NARG");
		
		// Shuffle the stack
		JavaStackResult result = this.state.stack.doStackShuffle(__st);
................................................................................
	/**
	 * Reads a value from a static field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doStaticGet(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	/**
	 * Writes to static field.
	 *
	 * @param __fr The field reference.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/13
	 */
	private void __doStaticPut(FieldReference __fr)
		throws NullPointerException
	{
		if (__fr == null)
			throw new NullPointerException("NARG");
		
		// An exception may be thrown
		this._canexception = true;
................................................................................
	 * Stores an entry on the stack.
	 *
	 * @param __jt The type to pop.
	 * @param __to The destination local.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/06
	 */
	private void __doStore(DataType __jt, int __to)
		throws NullPointerException
	{
		if (__jt == null)
			throw new NullPointerException("NARG");
		
		// Store onto the stack, locals are never cached
		JavaStackResult result = this.state.stack.doLocalStore(__to);
................................................................................
	}
	
	/**
	 * Performs a throw of an exception on the stack.
	 *
	 * @since 2019/04/05
	 */
	private void __doThrow()
	{
		// An exception will be thrown
		this._canexception = true;
		
		// Pop item from the stack
		JavaStackResult result = this.state.stack.doStack(1);
		this.__update(result);
................................................................................
	/**
	 * Updates the stack state and result.
	 *
	 * @param __jsr The stack result.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/07
	 */
	private void __update(JavaStackResult __jsr)
		throws NullPointerException
	{
		if (__jsr == null)
			throw new NullPointerException("NARG");
		
		// The new stack state
		JavaStackState newstack = __jsr.after();

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/CompareType.java.

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
	
	/** Always true. */
	TRUE,
	
	/** Always false. */
	FALSE,
	
	/** End. */
	;
	
	/**
	 * Returns the compare type for the given index.
	 *
	 * @param __i The index.
	 * @return The resulting compare type.







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
	
	/** Always true. */
	TRUE,
	
	/** Always false. */
	FALSE,
	
	/* End. */
	;
	
	/**
	 * Returns the compare type for the given index.
	 *
	 * @param __i The index.
	 * @return The resulting compare type.

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/DataType.java.

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	
	/** Long. */
	LONG,
	
	/** Double. */
	DOUBLE,
	
	/** End. */
	;
	
	/**
	 * Is this a wide data type?
	 *
	 * @return If this is wide.
	 * @since 2019/04/20







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	
	/** Long. */
	LONG,
	
	/** Double. */
	DOUBLE,
	
	/* End. */
	;
	
	/**
	 * Is this a wide data type?
	 *
	 * @return If this is wide.
	 * @since 2019/04/20

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/JavaStackEnqueueType.java.

18
19
20
21
22
23
24
25
26
27
28
{
	/** Normal state. */
	NORMAL,
	
	/** Cached state. */
	CACHED,
	
	/** End. */
	;
}








|



18
19
20
21
22
23
24
25
26
27
28
{
	/** Normal state. */
	NORMAL,
	
	/** Cached state. */
	CACHED,
	
	/* End. */
	;
}

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/JavaStackShuffleType.java.

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	/** pop2. */
	POP2("ba:",
		"A:"),
	
	/** swap. */
	SWAP("ba:ab"),
	
	/** End. */
	;
	
	/** Forms of this operation. */
	final Function[] _functions;
	
	/**
	 * Initialize the shuffle form information.







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	/** pop2. */
	POP2("ba:",
		"A:"),
	
	/** swap. */
	SWAP("ba:ab"),
	
	/* End. */
	;
	
	/** Forms of this operation. */
	final Function[] _functions;
	
	/**
	 * Initialize the shuffle form information.

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/MathType.java.

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	
	/** Sign 8-bit value. */
	SIGNX8,
	
	/** Sign 16-bit value. */
	SIGNX16,
	
	/** End. */
	;
	
	/**
	 * Returns the signature for the given math operation and type.
	 *
	 * @param __jt The type to use.
	 * @return The resulting signature.







|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	
	/** Sign 8-bit value. */
	SIGNX8,
	
	/** Sign 16-bit value. */
	SIGNX16,
	
	/* End. */
	;
	
	/**
	 * Returns the signature for the given math operation and type.
	 *
	 * @param __jt The type to use.
	 * @return The resulting signature.

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/StackJavaType.java.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	
	/** Float. */
	FLOAT,
	
	/** Double. */
	DOUBLE,
	
	/** End. */
	;
	
	/**
	 * Returns the boxed type.
	 *
	 * @return The boxed type.
	 * @since 2019/05/27







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
	
	/** Float. */
	FLOAT,
	
	/** Double. */
	DOUBLE,
	
	/* End. */
	;
	
	/**
	 * Returns the boxed type.
	 *
	 * @return The boxed type.
	 * @since 2019/05/27

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/StateOperation.java.

175
176
177
178
179
180
181
182
183
184
185
186
		
		/** Copy. */
		COPY,
		
		/** Wide copy. */
		WIDE_COPY,
		
		/** End. */
		;
	}
}








|




175
176
177
178
179
180
181
182
183
184
185
186
		
		/** Copy. */
		COPY,
		
		/** Wide copy. */
		WIDE_COPY,
		
		/* End. */
		;
	}
}

Changes to modules/tool-classfile/src/main/java/dev/shadowtail/classfile/xlate/__Debug__.java.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 * @since 2019/04/16
 */
final class __Debug__
{
	/** Debug enabled? */
	public static final boolean ENABLED;
	
	/**
	 * Gets the debug flag.
	 *
	 * @since 2019/04/16
	 */
	static
	{
		// Get property
		boolean en = false;
		try
		{







|
|
|
|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 * @since 2019/04/16
 */
final class __Debug__
{
	/** Debug enabled? */
	public static final boolean ENABLED;
	
	/*
	  Gets the debug flag.
	 
	  @since 2019/04/16
	 */
	static
	{
		// Get property
		boolean en = false;
		try
		{

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/AnnotationValueArray.java.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package net.multiphasicapps.classfile;

import java.util.AbstractList;
import java.util.List;
import java.util.RandomAccess;

/**
 * This represents an annotation value that is an array.
 *
 * @since 2018/06/16
 */
public final class AnnotationValueArray
	extends AbstractList<AnnotationValue>
	implements AnnotationValue, List<AnnotationValue>, RandomAccess
{
	/** The elements of the array. */
	private final AnnotationValue[] _values;
	
	/**
	 * Initializes the values.
	 *







<









|







7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package net.multiphasicapps.classfile;

import java.util.AbstractList;

import java.util.RandomAccess;

/**
 * This represents an annotation value that is an array.
 *
 * @since 2018/06/16
 */
public final class AnnotationValueArray
	extends AbstractList<AnnotationValue>
	implements AnnotationValue, RandomAccess
{
	/** The elements of the array. */
	private final AnnotationValue[] _values;
	
	/**
	 * Initializes the values.
	 *

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ByteCode.java.

877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
	
	/**
	 * Returns the method which owns this byte code.
	 *
	 * @return The owning method.
	 * @since 2017/10/15
	 */
	private final Method __method()
	{
		// {@squirreljme.error JC24 The method owning this byte code has been
		// garbage collected.}
		Method rv = this._methodref.get();
		if (rv == null)
			throw new IllegalStateException("JC24");
		return rv;







|







877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
	
	/**
	 * Returns the method which owns this byte code.
	 *
	 * @return The owning method.
	 * @since 2017/10/15
	 */
	private Method __method()
	{
		// {@squirreljme.error JC24 The method owning this byte code has been
		// garbage collected.}
		Method rv = this._methodref.get();
		if (rv == null)
			throw new IllegalStateException("JC24");
		return rv;

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ClassFlag.java.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
	
	/** Annotation. */
	ANNOTATION,
	
	/** Enumeration. */
	ENUM,
	
	/** End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/06/13
	 */
	@Override







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
	
	/** Annotation. */
	ANNOTATION,
	
	/** Enumeration. */
	ENUM,
	
	/* End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2017/06/13
	 */
	@Override

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ClassFlags.java.

166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
	
	/**
	 * Checks that the given flags are valid.
	 *
	 * @throws InvalidClassFormatException If they are not valid.
	 * @since 2016/04/23
	 */
	private final void __checkFlags()
		throws InvalidClassFormatException
	{
		// Interface?
		if (this.isInterface())
		{
			// {@squirreljme.error JC2f An interface must also be abstract.
			// (The class flags)}







|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
	
	/**
	 * Checks that the given flags are valid.
	 *
	 * @throws InvalidClassFormatException If they are not valid.
	 * @since 2016/04/23
	 */
	private void __checkFlags()
		throws InvalidClassFormatException
	{
		// Interface?
		if (this.isInterface())
		{
			// {@squirreljme.error JC2f An interface must also be abstract.
			// (The class flags)}

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ClassType.java.

25
26
27
28
29
30
31
32
33
34
35
	
	/** Enumeration. */
	ENUM,
	
	/** Annotation. */
	ANNOTATION,
	
	/** End. */
	;
}








|



25
26
27
28
29
30
31
32
33
34
35
	
	/** Enumeration. */
	ENUM,
	
	/** Annotation. */
	ANNOTATION,
	
	/* End. */
	;
}

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ClassVersion.java.

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	
	/** CLDC 1.1 (JSR 139). */
	CLDC_1_1((47 << 16), (51 << 16) - 1, true, false, false),
	
	/** CLDC 8 (aka Java 7). */
	CLDC_8((51 << 16), (52 << 16), true, false, true),
	
	/** End. */
	;
	
	/** The minimum supported version. */
	public static final ClassVersion MIN_VERSION = ClassVersion.CLDC_1;
	
	/** The maximum supported version. */
	public static final ClassVersion MAX_VERSION = ClassVersion.CLDC_8;
................................................................................
	protected final boolean usestackmaptable;
	
	/**
	 * Initializes the version data.
	 *
	 * @param __vid The version ID.
	 * @param __vmx The max version identifier.
	 * @param __undef Is this version information undefined?
	 * @param __float Is floating point supported?
	 * @param __hasid Has invoke dynamic support?
	 * @param __usesmt Should the StackMapTable attribute be used?
	 * @since 2016/03/13
	 */
	ClassVersion(int __vid, int __vmx, boolean __float, boolean __hasid,
		boolean __usesmt)







|







 







<







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
51
52
53
54
55
56
57

58
59
60
61
62
63
64
	
	/** CLDC 1.1 (JSR 139). */
	CLDC_1_1((47 << 16), (51 << 16) - 1, true, false, false),
	
	/** CLDC 8 (aka Java 7). */
	CLDC_8((51 << 16), (52 << 16), true, false, true),
	
	/* End. */
	;
	
	/** The minimum supported version. */
	public static final ClassVersion MIN_VERSION = ClassVersion.CLDC_1;
	
	/** The maximum supported version. */
	public static final ClassVersion MAX_VERSION = ClassVersion.CLDC_8;
................................................................................
	protected final boolean usestackmaptable;
	
	/**
	 * Initializes the version data.
	 *
	 * @param __vid The version ID.
	 * @param __vmx The max version identifier.

	 * @param __float Is floating point supported?
	 * @param __hasid Has invoke dynamic support?
	 * @param __usesmt Should the StackMapTable attribute be used?
	 * @since 2016/03/13
	 */
	ClassVersion(int __vid, int __vmx, boolean __float, boolean __hasid,
		boolean __usesmt)

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/ConstantValueType.java.

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** String. */
	STRING,
	
	/** Class. */
	CLASS,
	
	/** End. */
	;
	
	/**
	 * Checks if this value is compatible with the given field descriptor.
	 *
	 * @param __d The descriptor to check.
	 * @return If it is compatible.







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	
	/** String. */
	STRING,
	
	/** Class. */
	CLASS,
	
	/* End. */
	;
	
	/**
	 * Checks if this value is compatible with the given field descriptor.
	 *
	 * @param __d The descriptor to check.
	 * @return If it is compatible.

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/Field.java.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 * This represents a field in a class which is used to store values either as
 * static instances or as instance variables outside of methods.
 *
 * @since 2017/09/30
 */
public final class Field
	extends Member
	implements Annotated, HasMemberFlags
{
	/** The flags for the field. */
	protected final FieldFlags flags;
	
	/** The name of the field. */
	protected final FieldName name;
	







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 * This represents a field in a class which is used to store values either as
 * static instances or as instance variables outside of methods.
 *
 * @since 2017/09/30
 */
public final class Field
	extends Member
	implements Annotated
{
	/** The flags for the field. */
	protected final FieldFlags flags;
	
	/** The name of the field. */
	protected final FieldName name;
	

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/FieldFlag.java.

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

57
58
59
60
61
62
63
	
	/** Synthetic field. */
	SYNTHETIC,
	
	/** Enumeration. */
	ENUM,
	
	/** End. */
	;
	
	/**
	 * Returns the bit mask which is used for this flag.
	 *
	 * @return The bit mask used for the flag.
	 * @since 2017/07/07
	 */

	public final int javaBitMask()
	{
		switch (this)
		{
			case PUBLIC:	return 0x0001;
			case PRIVATE:	return 0x0002;
			case PROTECTED:	return 0x0004;







|








>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
	
	/** Synthetic field. */
	SYNTHETIC,
	
	/** Enumeration. */
	ENUM,
	
	/* End. */
	;
	
	/**
	 * Returns the bit mask which is used for this flag.
	 *
	 * @return The bit mask used for the flag.
	 * @since 2017/07/07
	 */
	@Override
	public final int javaBitMask()
	{
		switch (this)
		{
			case PUBLIC:	return 0x0001;
			case PRIVATE:	return 0x0002;
			case PROTECTED:	return 0x0004;

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/FieldFlags.java.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
...
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/**
 * This represent the set of flags for fields.
 *
 * @since 2016/04/23
 */
public final class FieldFlags
	extends MemberFlags<FieldFlag>
	implements AccessibleFlags
{
	/**
	 * Decodes field flags from the bit field and performs no checking.
	 *
	 * @param __i The bitfield to decode.
	 * @since 2019/04/18
	 */
................................................................................
	 * Checks that the given flags are valid.
	 *
	 * @param __oc The outer class.
	 * @throws InvalidClassFormatException If they are not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/23
	 */
	private final void __checkFlags(ClassFlags __oc)
		throws InvalidClassFormatException, NullPointerException
	{
		// Check
		if (__oc == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC2u A field cannot be both {@code final} and







<







 







|







13
14
15
16
17
18
19

20
21
22
23
24
25
26
...
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/**
 * This represent the set of flags for fields.
 *
 * @since 2016/04/23
 */
public final class FieldFlags
	extends MemberFlags<FieldFlag>

{
	/**
	 * Decodes field flags from the bit field and performs no checking.
	 *
	 * @param __i The bitfield to decode.
	 * @since 2019/04/18
	 */
................................................................................
	 * Checks that the given flags are valid.
	 *
	 * @param __oc The outer class.
	 * @throws InvalidClassFormatException If they are not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/23
	 */
	private void __checkFlags(ClassFlags __oc)
		throws InvalidClassFormatException, NullPointerException
	{
		// Check
		if (__oc == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC2u A field cannot be both {@code final} and

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/InnerClassFlag.java.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
	
	/** Annotation. */
	ANNOTATION,
	
	/** Enumeration. */
	ENUM,
	
	/** End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2018/05/15
	 */
	@Override







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
	
	/** Annotation. */
	ANNOTATION,
	
	/** Enumeration. */
	ENUM,
	
	/* End. */
	;
	
	/**
	 * {@inheritDoc}
	 * @since 2018/05/15
	 */
	@Override

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/InnerClassFlags.java.

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
	/**
	 * Checks that the inner class flags are valid.
	 *
	 * @throws InvalidClassFormatException If the inner class flags are not
	 * valid.
	 * @since 2018/05/15
	 */
	private final void __checkFlags()
		throws InvalidClassFormatException
	{
		// Construct class flags which checks if they are valid
		try
		{
			this.asClassFlags();
		}







|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
	/**
	 * Checks that the inner class flags are valid.
	 *
	 * @throws InvalidClassFormatException If the inner class flags are not
	 * valid.
	 * @since 2018/05/15
	 */
	private void __checkFlags()
		throws InvalidClassFormatException
	{
		// Construct class flags which checks if they are valid
		try
		{
			this.asClassFlags();
		}

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/Method.java.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * This represents a method which is used to execute byte code.
 *
 * @since 2017/09/30
 */
public final class Method
	extends Member
	implements Annotated, HasMemberFlags
{
	/** The version of the class. */
	protected final ClassVersion version;
	
	/** The flags for class. */
	protected final ClassFlags classflags;
	







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * This represents a method which is used to execute byte code.
 *
 * @since 2017/09/30
 */
public final class Method
	extends Member
	implements Annotated
{
	/** The version of the class. */
	protected final ClassVersion version;
	
	/** The flags for class. */
	protected final ClassFlags classflags;
	

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/MethodFlag.java.

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
	
	/** Strict floating point method. */
	STRICT,
	
	/** Synthetic method. */
	SYNTHETIC,
	
	/** End. */
	;
	
	/**
	 * Returns the bit mask which is used for this flag.
	 *
	 * @return The bit mask used for the flag.
	 * @since 2017/07/07
	 */

	public final int javaBitMask()
	{
		switch (this)
		{
			case PUBLIC:		return 0x0001;
			case PRIVATE:		return 0x0002;
			case PROTECTED:		return 0x0004;







|








>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
	
	/** Strict floating point method. */
	STRICT,
	
	/** Synthetic method. */
	SYNTHETIC,
	
	/* End. */
	;
	
	/**
	 * Returns the bit mask which is used for this flag.
	 *
	 * @return The bit mask used for the flag.
	 * @since 2017/07/07
	 */
	@Override
	public final int javaBitMask()
	{
		switch (this)
		{
			case PUBLIC:		return 0x0001;
			case PRIVATE:		return 0x0002;
			case PROTECTED:		return 0x0004;

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/MethodFlags.java.

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
	 *
	 * @param __oc The outer class.
	 * @param __mn The name of the method.
	 * @throws InvalidClassFormatException If they are not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/23
	 */
	private final void __checkFlags(ClassFlags __oc, MethodName __mn)
		throws InvalidClassFormatException
	{
		// Check
		if (__oc == null || __mn == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC3l An {@code abstract} method cannot be







|







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
	 *
	 * @param __oc The outer class.
	 * @param __mn The name of the method.
	 * @throws InvalidClassFormatException If they are not valid.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/04/23
	 */
	private void __checkFlags(ClassFlags __oc, MethodName __mn)
		throws InvalidClassFormatException
	{
		// Check
		if (__oc == null || __mn == null)
			throw new NullPointerException("NARG");
		
		// {@squirreljme.error JC3l An {@code abstract} method cannot be

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/PrimitiveType.java.

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
	
	/** Short. */
	SHORT,
	
	/** Boolean. */
	BOOLEAN,
	
	/** End. */
	;
	
	/**
	 * The number of bytes needed to store this type.
	 *
	 * @return The number of bytes required to store data for this type.
	 * @since 2019/03/11







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
	
	/** Short. */
	SHORT,
	
	/** Boolean. */
	BOOLEAN,
	
	/* End. */
	;
	
	/**
	 * The number of bytes needed to store this type.
	 *
	 * @return The number of bytes required to store data for this type.
	 * @since 2019/03/11

Changes to modules/tool-classfile/src/main/java/net/multiphasicapps/classfile/SimpleStorageType.java.

28
29
30
31
32
33
34
35
36
37
38
	
	/** Float. */
	FLOAT,
	
	/** Double. */
	DOUBLE,
	
	/** End. */
	;
}








|



28
29
30
31
32
33
34
35
36
37
38
	
	/** Float. */
	FLOAT,
	
	/** Double. */
	DOUBLE,
	
	/* End. */
	;
}

Changes to modules/tool-jarfile/src/main/java/dev/shadowtail/jarfile/JarMinimizer.java.

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
		// Setup bootstrap, but only if booting
		this.bootstrap = (__boot ? new BootstrapState() : null);
	}
	
	/**
	 * Processes the input JAR.
	 *
	 * @param __out The output.
	 * @throws IOException On read/write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/27
	 */
	private final void __process(OutputStream __sout)
		throws IOException, NullPointerException
	{
		if (__sout == null)
			throw new NullPointerException("NARG");
		
		// The current state of the bootstrap
		BootstrapState bootstrap = this.bootstrap;







|




|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
		// Setup bootstrap, but only if booting
		this.bootstrap = (__boot ? new BootstrapState() : null);
	}
	
	/**
	 * Processes the input JAR.
	 *
	 * @param __sout The output.
	 * @throws IOException On read/write errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/04/27
	 */
	private void __process(OutputStream __sout)
		throws IOException, NullPointerException
	{
		if (__sout == null)
			throw new NullPointerException("NARG");
		
		// The current state of the bootstrap
		BootstrapState bootstrap = this.bootstrap;

Changes to modules/tool-jarfile/src/main/java/dev/shadowtail/jarfile/LoadedClassInfo.java.

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
....
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package dev.shadowtail.jarfile;

import cc.squirreljme.jvm.ClassInfo;
import cc.squirreljme.jvm.Constants;
import dev.shadowtail.classfile.mini.MinimizedClassFile;
import dev.shadowtail.classfile.mini.MinimizedField;
import dev.shadowtail.classfile.mini.MinimizedMethod;
import dev.shadowtail.classfile.mini.MinimizedPoolEntryType;
import dev.shadowtail.classfile.pool.AccessedField;
import dev.shadowtail.classfile.pool.BasicPool;
................................................................................
	/**
	 * Returns the bootstrap.
	 *
	 * @return The bootstrap.
	 * @throws IllegalStateException If it was garbage collected.
	 * @since 2019/09/14
	 */
	private final BootstrapState __bootstrap()
		throws IllegalStateException
	{
		Reference<BootstrapState> ref = this._bootstrap;
		
		// {@squirreljme.error BC0d The bootstrap state was garbage collected,
		// therefor this class is no longer valid.}
		BootstrapState rv = ref.get();







<







 







|







5
6
7
8
9
10
11

12
13
14
15
16
17
18
....
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
// ---------------------------------------------------------------------------
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package dev.shadowtail.jarfile;


import cc.squirreljme.jvm.Constants;
import dev.shadowtail.classfile.mini.MinimizedClassFile;
import dev.shadowtail.classfile.mini.MinimizedField;
import dev.shadowtail.classfile.mini.MinimizedMethod;
import dev.shadowtail.classfile.mini.MinimizedPoolEntryType;
import dev.shadowtail.classfile.pool.AccessedField;
import dev.shadowtail.classfile.pool.BasicPool;
................................................................................
	/**
	 * Returns the bootstrap.
	 *
	 * @return The bootstrap.
	 * @throws IllegalStateException If it was garbage collected.
	 * @since 2019/09/14
	 */
	private BootstrapState __bootstrap()
		throws IllegalStateException
	{
		Reference<BootstrapState> ref = this._bootstrap;
		
		// {@squirreljme.error BC0d The bootstrap state was garbage collected,
		// therefor this class is no longer valid.}
		BootstrapState rv = ref.get();

Changes to modules/tool-jarfile/src/main/java/dev/shadowtail/jarfile/Modifier.java.

21
22
23
24
25
26
27
28
29
30
31
	
	/** Offset by RAM address. */
	RAM_OFFSET,
	
	/** Offset by JAR address. */
	JAR_OFFSET,
	
	/** End. */
	;
}








|



21
22
23
24
25
26
27
28
29
30
31
	
	/** Offset by RAM address. */
	RAM_OFFSET,
	
	/** Offset by JAR address. */
	JAR_OFFSET,
	
	/* End. */
	;
}

Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/midlet/ResidentMIDlet.java.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	implements TelephonyListener, MailListener, ScheduledAlarmListener,
		RingStateListener
{
    protected ResidentMIDlet()
	{
		throw new todo.TODO();
	}

    public abstract void ring();

    public abstract void hungup();

    public abstract void received(int var1);

    public abstract void notice(String var1);

    public abstract void ringStarted();

    public abstract void ringStopped();
}








|
<
|
<

<
<
<
<
<
<
<
<
<
20
21
22
23
24
25
26
27

28

29









	implements TelephonyListener, MailListener, ScheduledAlarmListener,
		RingStateListener
{
    protected ResidentMIDlet()
	{
		throw new todo.TODO();
	}
	

}











Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/system/media/ImageResourceOperator.java.

6
7
8
9
10
11
12

13
























14
15
16
17
18

19
20
21
22
23

24
25
26
27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package com.vodafone.v10.system.media;

class ImageResourceOperator implements ResourceOperator {

    public int getResourceType()
























	{
		throw new todo.TODO();
	}

    public int getResourceCount()

	{
		throw new todo.TODO();
	}

    public int getResourceID(int var1)

	{
		throw new todo.TODO();
	}

    public String getResourceName(int var1)
	{
		throw new todo.TODO();
	}

    public String[] getResourceNames()

	{
		throw new todo.TODO();
	}

    public void setResourceByID(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    public void setResourceByTitle(MediaPlayer var1, String var2)
	{
		throw new todo.TODO();
	}

    public void setResource(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    public int getIndexOfResource(int var1)
	{
		throw new todo.TODO();
	}
}








>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




|
>




|
>




|
<
<
<
<
<
>




|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|





6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55





56
57
58
59
60
61














62
63
64
65
66
67
// SquirrelJME is under the GNU General Public License v3+, or later.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package com.vodafone.v10.system.media;

class ImageResourceOperator implements ResourceOperator {
    @Override
	public int getResourceType()
	{
		throw new todo.TODO();
	}

    @Override
	public int getResourceCount()
	{
		throw new todo.TODO();
	}

    @Override
	public int getResourceID(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public String getResourceName(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public String[] getResourceNames()
	{
		throw new todo.TODO();
	}

    @Override
	public void setResourceByID(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override
	public void setResourceByTitle(MediaPlayer var1, String var2)
	{
		throw new todo.TODO();
	}

    @Override





	public void setResource(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override














	public int getIndexOfResource(int var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/system/media/MediaPlayer.java.

47
48
49
50
51
52
53

54
55
56
57
58

59
60
61
62
63
64
65
66
..
92
93
94
95
96
97
98

99
100
101
102
103

104
105
106
107
108

109
110
111
112
113
114
	}

    public int getMediaHeight()
	{
		throw new todo.TODO();
	}


    public int getWidth()
	{
		throw new todo.TODO();
	}


    public int getHeight()
	{
		throw new todo.TODO();
	}

    public void setContentPos(int var1, int var2)
	{
		throw new todo.TODO();
................................................................................
	}

    public void setMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}


    protected  void paint(Graphics var1)
	{
		throw new todo.TODO();
	}


    protected  void showNotify()
	{
		throw new todo.TODO();
	}


    protected  void hideNotify()
	{
		throw new todo.TODO();
	}
}








>
|




>
|







 







>
|




>
|




>
|





47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
..
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
	}

    public int getMediaHeight()
	{
		throw new todo.TODO();
	}

    @Override
	public int getWidth()
	{
		throw new todo.TODO();
	}

    @Override
	public int getHeight()
	{
		throw new todo.TODO();
	}

    public void setContentPos(int var1, int var2)
	{
		throw new todo.TODO();
................................................................................
	}

    public void setMediaPlayerListener(MediaPlayerListener var1)
	{
		throw new todo.TODO();
	}

    @Override
	protected  void paint(Graphics var1)
	{
		throw new todo.TODO();
	}

    @Override
	protected  void showNotify()
	{
		throw new todo.TODO();
	}

    @Override
	protected  void hideNotify()
	{
		throw new todo.TODO();
	}
}

Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/system/media/MelodyResourceOperator.java.

8
9
10
11
12
13
14

15
























16
17
18
19
20

21
22
23
24
25

26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// ---------------------------------------------------------------------------

package com.vodafone.v10.system.media;

class MelodyResourceOperator
	implements ResourceOperator
{

    public int getResourceType()
























	{
		throw new todo.TODO();
	}

    public int getResourceCount()

	{
		throw new todo.TODO();
	}

    public int getResourceID(int var1)

	{
		throw new todo.TODO();
	}

    public String getResourceName(int var1)
	{
		throw new todo.TODO();
	}

    public String[] getResourceNames()

	{
		throw new todo.TODO();
	}

    public void setResourceByID(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    public void setResourceByTitle(MediaPlayer var1, String var2)
	{
		throw new todo.TODO();
	}

    public void setResource(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    public int getIndexOfResource(int var1)
	{
		throw new todo.TODO();
	}
}







>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




|
>




|
>




|
<
<
<
<
<
>




|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|




8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57





58
59
60
61
62
63














64
65
66
67
68
// ---------------------------------------------------------------------------

package com.vodafone.v10.system.media;

class MelodyResourceOperator
	implements ResourceOperator
{
    @Override
	public int getResourceType()
	{
		throw new todo.TODO();
	}

    @Override
	public int getResourceCount()
	{
		throw new todo.TODO();
	}

    @Override
	public int getResourceID(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public String getResourceName(int var1)
	{
		throw new todo.TODO();
	}

    @Override
	public String[] getResourceNames()
	{
		throw new todo.TODO();
	}

    @Override
	public void setResourceByID(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override
	public void setResourceByTitle(MediaPlayer var1, String var2)
	{
		throw new todo.TODO();
	}

    @Override





	public void setResource(MediaPlayer var1, int var2)
	{
		throw new todo.TODO();
	}

    @Override














	public int getIndexOfResource(int var1)
	{
		throw new todo.TODO();
	}
}

Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/util/FixedPoint.java.

122
123
124
125
126
127
128

129
130
131
132
133
134
135
136
	}

    public boolean isInfinite()
	{
		throw new todo.TODO();
	}


    public FixedPoint clone()
	{
		throw new todo.TODO();
	}

    public static  FixedPoint getPI()
	{
		throw new todo.TODO();







>
|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
	}

    public boolean isInfinite()
	{
		throw new todo.TODO();
	}

    @Override
	public FixedPoint clone()
	{
		throw new todo.TODO();
	}

    public static  FixedPoint getPI()
	{
		throw new todo.TODO();

Changes to modules/vodafone-api/src/main/java/com/vodafone/v10/util/Vector2D.java.

77
78
79
80
81
82
83

84
85
86
87
88
	}

    public FixedPoint getY()
	{
		throw new todo.TODO();
	}


    public Vector2D clone()
	{
		throw new todo.TODO();
	}
}







>
|




77
78
79
80
81
82
83
84
85
86
87
88
89
	}

    public FixedPoint getY()
	{
		throw new todo.TODO();
	}

    @Override
	public Vector2D clone()
	{
		throw new todo.TODO();
	}
}

Changes to modules/zip/src/main/java/net/multiphasicapps/zip/ZipAttributeCompatibility.java.

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
	
	/** OS/400. */
	OS_400(18),
	
	/** Mac OS X. */
	MACOSX(19),
	
	/** End. */
	;
	
	/** The compatibility identifier. */
	private int id;
	
	/**
	 * Initializes the base compatibility information.







|







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
	
	/** OS/400. */
	OS_400(18),
	
	/** Mac OS X. */
	MACOSX(19),
	
	/* End. */
	;
	
	/** The compatibility identifier. */
	private int id;
	
	/**
	 * Initializes the base compatibility information.

Changes to modules/zip/src/main/java/net/multiphasicapps/zip/ZipCompressionType.java.

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
	/** Data is not compressed. */
	NO_COMPRESSION(10, 0),
	
	/** Deflate algorithm. */
	DEFLATE(20, 8),
	
	/** End. */
	;
	
	/** The default compression algorithm to use. */
	public static final ZipCompressionType DEFAULT_COMPRESSION =
		ZipCompressionType.DEFLATE;
	
	/** The version needed to extract. */







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
	/** Data is not compressed. */
	NO_COMPRESSION(10, 0),
	
	/** Deflate algorithm. */
	DEFLATE(20, 8),
	
	/* End. */
	;
	
	/** The default compression algorithm to use. */
	public static final ZipCompressionType DEFAULT_COMPRESSION =
		ZipCompressionType.DEFLATE;
	
	/** The version needed to extract. */

Changes to modules/zip/src/main/java/net/multiphasicapps/zip/ZipUnixAccessMode.java.

41
42
43
44
45
46
47
48
49
50
51
	
	/** Other write. */
	OTHER_WRITE,
	
	/** Other execute. */
	OTHER_EXECUTE,
	
	/** End. */
	;
}








|



41
42
43
44
45
46
47
48
49
50
51
	
	/** Other write. */
	OTHER_WRITE,
	
	/** Other execute. */
	OTHER_EXECUTE,
	
	/* End. */
	;
}

Changes to modules/zip/src/main/java/net/multiphasicapps/zip/blockreader/ZipBlockEntry.java.

292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
	 * Returns the internal representation of the string entry.
	 *
	 * @return The name of this entry.
	 * @throws IOException On read errors.
	 * @throws ZipException If the ZIP is malformed.
	 * @since 2017/01/03
	 */
	private final String __internalToString()
		throws IOException, ZipException
	{
		Reference<String> ref = this._name;
		String rv;
		
		// Need to load it?
		if (ref == null || null == (rv = ref.get()))







|







292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
	 * Returns the internal representation of the string entry.
	 *
	 * @return The name of this entry.
	 * @throws IOException On read errors.
	 * @throws ZipException If the ZIP is malformed.
	 * @since 2017/01/03
	 */
	private String __internalToString()
		throws IOException, ZipException
	{
		Reference<String> ref = this._name;
		String rv;
		
		// Need to load it?
		if (ref == null || null == (rv = ref.get()))

Changes to modules/zip/src/main/java/net/multiphasicapps/zip/blockreader/ZipBlockReader.java.

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
	 * @param __db The bytes that make up the end of the central directory.
	 * @return The position of the central directory end.
	 * @throws IOException On read errors or if the central directory could
	 * not be found.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/12/29
	 */
	private static final long __locateCentralDirEnd(BlockAccessor __b,
		byte[] __db)
		throws IOException, NullPointerException
	{
		// Check
		if (__b == null || __db == null)
			throw new NullPointerException("NARG");
		







|







358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
	 * @param __db The bytes that make up the end of the central directory.
	 * @return The position of the central directory end.
	 * @throws IOException On read errors or if the central directory could
	 * not be found.
	 * @throws NullPointerException On null arguments.
	 * @since 2016/12/29
	 */
	private static long __locateCentralDirEnd(BlockAccessor __b,
		byte[] __db)
		throws IOException, NullPointerException
	{
		// Check
		if (__b == null || __db == null)
			throw new NullPointerException("NARG");
		

Changes to tools/pcf-to-sqf/src/main/java/net/multiphasicapps/pcftosqf/pcf/PCFFont.java.

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
	
	/** The glyph names. */
	public final PCFGlyphNames glyphnames;
	
	/**
	 * Initializes the font.
	 *
	 * @param __properties 
	 * @param __accelerators 
	 * @param __metrics 
	 * @param __bitmap 
	 * @param __encoding 
	 * @param __scalablewidths 
	 * @param __glyphnames 
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/28
	 */
	public PCFFont(PCFProperties __properties, PCFAccelerators __accelerators,
		PCFMetric[] __metrics, PCFBitmap __bitmap, PCFEncoding __encoding,
		PCFScalableWidths __scalablewidths, PCFGlyphNames __glyphnames)
		throws NullPointerException







|
|
|
|
|
|
|







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
	
	/** The glyph names. */
	public final PCFGlyphNames glyphnames;
	
	/**
	 * Initializes the font.
	 *
	 * @param __properties PCF properties.
	 * @param __accelerators Accelerators.
	 * @param __metrics Metrics.
	 * @param __bitmap Bitmaps.
	 * @param __encoding Encoding.
	 * @param __scalablewidths Scalable Widths.
	 * @param __glyphnames The glyph names.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/11/28
	 */
	public PCFFont(PCFProperties __properties, PCFAccelerators __accelerators,
		PCFMetric[] __metrics, PCFBitmap __bitmap, PCFEncoding __encoding,
		PCFScalableWidths __scalablewidths, PCFGlyphNames __glyphnames)
		throws NullPointerException

Changes to tools/sqf-to-c/src/main/java/dev/shadowtail/sqftoc/Main.java.

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
	 *
	 * @param __ps The stream to write to.
	 * @param __name The name of the field.
	 * @param __b The input bytes.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/20
	 */
	private static final void __dumpBytes(PrintStream __ps, String __name,
		byte[] __b)
		throws NullPointerException
	{
		if (__ps == null || __name == null || __b == null)
			throw new NullPointerException("NARG");
		
		__ps.printf("static sjme_jbyte %s[] =%n", __name);







|







96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
	 *
	 * @param __ps The stream to write to.
	 * @param __name The name of the field.
	 * @param __b The input bytes.
	 * @throws NullPointerException On null arguments.
	 * @since 2019/06/20
	 */
	private static void __dumpBytes(PrintStream __ps, String __name,
		byte[] __b)
		throws NullPointerException
	{
		if (__ps == null || __name == null || __b == null)
			throw new NullPointerException("NARG");
		
		__ps.printf("static sjme_jbyte %s[] =%n", __name);

Changes to tools/txt-to-pbm/src/main/java/dev/shadowtail/txttopbm/Main.java.

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
...
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{
	/**
	 * Main entry point.
	 *
	 * @param __args Arguments.
	 * @since 2019/06/15
	 */
	public static final void main(String... __args)
		throws Throwable
	{
		// Read in strings, find maximum length
		int maxstrlen = 0,
			numlines = 0;
		Deque<String> lines = new LinkedList<>();
		try (BufferedReader br = new BufferedReader(new InputStreamReader(
................................................................................
			// the pixel packing!
			int iw = ((maxstrlen * fw) + 7) & (~7),
				ih = numlines * fh,
				sa = iw * fh,
				ua = sa / 8;
			
			// Write PBM header, use P4 format
			ps.printf("P4\n");
			ps.printf("%d %d\n", iw, ih);
			
			// Create image to contain a buffer for a single line, it is not
			// important to have an entire image because we can just pipe
			// this out!
			Image image = Image.createImage(iw, fh);
			Graphics g = image.getGraphics();
................................................................................
				g.drawString(ln, 0, 0, Graphics.TOP | Graphics.LEFT);
				
				// Get RGB pixel data
				image.getRGB(rgb, 0, iw, 0, 0, iw, fh);
				
				// Go through pixels and export to bulk format
				for (int i = 0, o = 0; i < sa; i += 8, o++)
					bulk[o] = (byte)(((rgb[i + 0] & 1) << 7) |
						((rgb[i + 1] & 1) << 6) |
						((rgb[i + 2] & 1) << 5) |
						((rgb[i + 3] & 1) << 4) |
						((rgb[i + 4] & 1) << 3) |
						((rgb[i + 5] & 1) << 2) |
						((rgb[i + 6] & 1) << 1) |
						((rgb[i + 7] & 1)));







|







 







|







 







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
...
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{
	/**
	 * Main entry point.
	 *
	 * @param __args Arguments.
	 * @since 2019/06/15
	 */
	public static void main(String... __args)
		throws Throwable
	{
		// Read in strings, find maximum length
		int maxstrlen = 0,
			numlines = 0;
		Deque<String> lines = new LinkedList<>();
		try (BufferedReader br = new BufferedReader(new InputStreamReader(
................................................................................
			// the pixel packing!
			int iw = ((maxstrlen * fw) + 7) & (~7),
				ih = numlines * fh,
				sa = iw * fh,
				ua = sa / 8;
			
			// Write PBM header, use P4 format
			ps.print("P4\n");
			ps.printf("%d %d\n", iw, ih);
			
			// Create image to contain a buffer for a single line, it is not
			// important to have an entire image because we can just pipe
			// this out!
			Image image = Image.createImage(iw, fh);
			Graphics g = image.getGraphics();
................................................................................
				g.drawString(ln, 0, 0, Graphics.TOP | Graphics.LEFT);
				
				// Get RGB pixel data
				image.getRGB(rgb, 0, iw, 0, 0, iw, fh);
				
				// Go through pixels and export to bulk format
				for (int i = 0, o = 0; i < sa; i += 8, o++)
					bulk[o] = (byte)(((rgb[i] & 1) << 7) |
						((rgb[i + 1] & 1) << 6) |
						((rgb[i + 2] & 1) << 5) |
						((rgb[i + 3] & 1) << 4) |
						((rgb[i + 4] & 1) << 3) |
						((rgb[i + 5] & 1) << 2) |
						((rgb[i + 6] & 1) << 1) |
						((rgb[i + 7] & 1)));

Changes to tools/uudecode/src/main/java/net/multiphasicapps/uudecode/Main.java.

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
...
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
	}
	
	/**
	 * Prints help.
	 *
	 * @since 2018/03/05
	 */
	private static final void __printHelp()
	{
		PrintStream out = System.err;
		
		out.println("Usage: [-n] [-r] [--] (files...)");
		out.println("  -n: Ignore padding.");
		out.println("  -r: Ignore header, treat as raw base64 MIME data.");
	}
................................................................................
	 * @param __ip Ignore padding?
	 * @param __rd Treat as raw base64 data.
	 * @return The wrapped input stream.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/03/05
	 */
	private static final InputStream __wrap(Reader __in, boolean __ip,
		boolean __rd)
		throws IOException, NullPointerException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		
		// Read of raw data?







|







 







|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
...
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
	}
	
	/**
	 * Prints help.
	 *
	 * @since 2018/03/05
	 */
	private static void __printHelp()
	{
		PrintStream out = System.err;
		
		out.println("Usage: [-n] [-r] [--] (files...)");
		out.println("  -n: Ignore padding.");
		out.println("  -r: Ignore header, treat as raw base64 MIME data.");
	}
................................................................................
	 * @param __ip Ignore padding?
	 * @param __rd Treat as raw base64 data.
	 * @return The wrapped input stream.
	 * @throws IOException On read errors.
	 * @throws NullPointerException On null arguments.
	 * @since 2018/03/05
	 */
	private static InputStream __wrap(Reader __in, boolean __ip,
		boolean __rd)
		throws IOException, NullPointerException
	{
		if (__in == null)
			throw new NullPointerException("NARG");
		
		// Read of raw data?