@Override
    protected void initAdditionalProperties() {
    	IClass ftrCls1 = leftFactor.getResultType();
    	IClass ftrCls2 = rightFactor.getResultType();
        
        if(ftrCls2.getCastOrder() < ftrCls1.getCastOrder()){
            targetClass = ftrCls1;
        }else{
            targetClass = ftrCls2;
        }
        
        if(leftFactor instanceof Value) {
            ((Value)leftFactor).convert(targetClass);
        }
        
        if(rightFactor instanceof Value) {
        	if(getOperatorSymbol().equals(Operator.SHIFT_LEFT) ||
        	   getOperatorSymbol().equals(Operator.SHIFT_RIGHT) ||
        	   getOperatorSymbol().equals(Operator.UNSIGNED_SHIFT_RIGHT) ){
        		((Value)rightFactor).convert(getType(int.class));
        	} else {
        		((Value)rightFactor).convert(targetClass);	
        	}
            
        }
    }