boolean (VarType val) { int valType = val.getType(); if (valType == CodeConstants.TYPE_UNKNOWN && getType() != CodeConstants.TYPE_UNKNOWN) { return true; } if (val.getArrayDim() > 0) { return this.equals(VARTYPE_OBJECT); } else if (getArrayDim() > 0) { return (valType == CodeConstants.TYPE_NULL); } boolean res = false; switch (getType()) { case CodeConstants.TYPE_INT: res = (valType == CodeConstants.TYPE_SHORT || valType == CodeConstants.TYPE_CHAR); case CodeConstants.TYPE_SHORT: res |= (valType == CodeConstants.TYPE_BYTE); case CodeConstants.TYPE_CHAR: res |= (valType == CodeConstants.TYPE_SHORTCHAR); case CodeConstants.TYPE_BYTE: case CodeConstants.TYPE_SHORTCHAR: res |= (valType == CodeConstants.TYPE_BYTECHAR); case CodeConstants.TYPE_BYTECHAR: res |= (valType == CodeConstants.TYPE_BOOLEAN); break; case CodeConstants.TYPE_OBJECT: if (valType == CodeConstants.TYPE_NULL) { return true; } else if (this.equals(VARTYPE_OBJECT)) { return valType == CodeConstants.TYPE_OBJECT && !val.equals(VARTYPE_OBJECT); } } return res; }