According to the rules of the virtual machine, final fields for instances can only be set if the current method is called <init>. The same goes for statics except for <clinit>. There is actually a bug in JamVM, the spec says that only invokespecial may call the initializers, however that VM permits those instructions from calling the initializers.


It is possible for the type determination system that I can create a kind of domain specific language which can be compiled into actions of sorts. Then data that needs to be verified for operations will just essentially be a text file which performs specific actions.


An alternative is to do something similar to the operation handlers and instead just split the cases across multiple classes. Operations which are similar to each other appear close by in numbers anyway.


Apart from writing my own interpreter and such, I can also port either my library to be usable with JamVM or patch JamVM to be able to use my library.


That would require messing with C, and C is rather messy.


The type determination moved over appears much cleaner and would be easier to find pieces to fit them together. The main type determination code is no longer higher than 1000 lines of code.