code: private static String getPromotionSuffix(Assignment node) {
      if (!needsPromotionSuffix(node.getOperator())) {
        return "";
      }
      TypeKind lhsKind = node.getLeftHandSide().getTypeMirror().getKind();
      TypeKind rhsKind = node.getRightHandSide().getTypeMirror().getKind();
      if (lhsKind == TypeKind.DOUBLE || rhsKind == TypeKind.DOUBLE) {
        return "D";
      }
      if (lhsKind == TypeKind.FLOAT || rhsKind == TypeKind.FLOAT) {
        return "F";
      }
      if (lhsKind == TypeKind.LONG || rhsKind == TypeKind.LONG) {
        return "J";
      }
      return "I";
    }
docs: Some operator functions are given a suffix indicating the promotion type of
  the operands according to JLS 5.6.2.