java.lang.Object
org.benf.cfr.reader.bytecode.analysis.types.discovery.InferredJavaType

public class InferredJavaType extends Object
Multiple expressions / lvalues will have pointers to a single instance of this - at type changing boundaries, we will explicitly create a new one.

Thus if we have

a = 94 b = a c = b charfunction((no cast)c)

we know that c is appropriate to be passed directly to a char function (i.e. a char). So we can update the type which is held by c=b=a=94.

however, if we have

a = 94 b = a c = (i2c)b charfunction((no cast)c), c will have a forced char type, we won't need to update it.

Note that this works only for narrowing functions, as a char will be passed by the JVM to an int function without extension.