public static Rop opConv(TypeBearer dest, TypeBearer source) {
    int dbt = dest.getBasicFrameType();
    switch (source.getBasicFrameType()) {
      case Type.BT_INT:
        {
          switch (dbt) {
            case Type.BT_LONG:
              return CONV_I2L;
            case Type.BT_FLOAT:
              return CONV_I2F;
            case Type.BT_DOUBLE:
              return CONV_I2D;
            default:
              break;
          }
        }
      case Type.BT_LONG:
        {
          switch (dbt) {
            case Type.BT_INT:
              return CONV_L2I;
            case Type.BT_FLOAT:
              return CONV_L2F;
            case Type.BT_DOUBLE:
              return CONV_L2D;
            default:
              break;
          }
        }
      case Type.BT_FLOAT:
        {
          switch (dbt) {
            case Type.BT_INT:
              return CONV_F2I;
            case Type.BT_LONG:
              return CONV_F2L;
            case Type.BT_DOUBLE:
              return CONV_F2D;
            default:
              break;
          }
        }
      case Type.BT_DOUBLE:
        {
          switch (dbt) {
            case Type.BT_INT:
              return CONV_D2I;
            case Type.BT_LONG:
              return CONV_D2L;
            case Type.BT_FLOAT:
              return CONV_D2F;
            default:
              break;
          }
        }
    }

    return throwBadTypes(StdTypeList.make(dest.getType(), source.getType()));
  }
Returns the appropriate {@code conv} rop for the given types. The result is a shared instance.

@param dest {@code non-null;} target value type
@param source {@code non-null;} source value type
@return {@code non-null;} an appropriate instance
android/android_framework/dex-maker/src/main/java/com/android/dx/rop/code/Rops.java