AmbiguousValue and Branching is not allowed in <clinit>!!!!!!!!!!!


nop -> OK
move, move-wide, move-object, move-result  -> OK
move-exception -> probably ok
all return variants -> ok
const, const-wide, const-string, const-class -> OK
monitor-enter, monitor-exit -> OK ??
new-instance -> ok
filled-new-array -> ok
goto -> ok

done : check-cast -> our ambiguous value has a type so if we can see that they are completely different
then we should throw exception,  if we can see that it is completely fine (e.g. they have same exact types)
then it is ok but if ambiguous type has a broader type then it should branch

done : instance-of -> same as check-cast

done : array-length -> return ambiguous int

done : new-array -> if size is ambiguous int then create ambiguous value with type array

throw -> maybe throw actual ambiguous exception value ??

packed-switch and sparse-switch -> branch to all possible outcomes

done : cmpkind -> write ambiguous int value to dest reg

if-test -> if one or both regs are ambiguous branch to both possible outcome

if-testz -> if value is ambiguous branch to both possible outcome

arrayop -> if size or reference array is ambiguous return ambigous value, also if reference value is
ambiguous then throw null pointer exception, index out of bounds exception , array store (for iput) in new branch

iinstanceop -> if reference object is ambiguous then value is also ambigous and also null pointer exception

sstaticop -> ??????

unop -> if input is ambiguous then output is ambiguous but type might changed depending on the instruction type

binop vAA, vBB, vCC
binop/2addr
binop/lit16
binop/lit8


invoke-* reference objects ???????
invoke-static cannot have ambiguous reference
invoke-direct ambiguous reference -> ok since we cannot have ambiguous value
invoke-super ambiguous reference -> ok since we cannot have ambiguous value
invoke-interface and  invoke-virtual -> reutrn ambigous type and return proper exceptions

invoke-* ambiguous params ????
if smali code then pass
if java/android method then reutrn ambigous type and return proper exceptions








