openrtb-core/src/main/java/com/google/openrtb/util/ProtoUtils.java
@SuppressWarnings("unchecked")
  public static <I extends MessageLiteOrBuilder, O extends MessageLite.Builder> O builder(
      @Nullable I msg) {
    return msg instanceof MessageLite
        ? (O) ((MessageLite) msg).toBuilder()
        : (O) msg;
  }
@SuppressWarnings("unchecked")
  public static <I extends MessageLiteOrBuilder, O extends MessageLite.Builder> O builder(
      @Nullable I msg) {
    return msg instanceof MessageLite
        ? (O) ((MessageLite) msg).toBuilder()
        : (O) msg;
  }
@ SuppressWarnings ( "unchecked" ) public static < I extends MessageLiteOrBuilder , O extends MessageLite . Builder > O builder ( @ Nullable I msg ) { return msg instanceof MessageLite ? ( O ) ( ( MessageLite ) msg ) . toBuilder ( ) : ( O ) msg ; }
Given a message-or-builder, return a builder, invoking toBuilder() if necessary.
Given a message - or - builder return a builder invoking toBuilder () if necessary .