All Downloads are FREE. Search and download functionalities are using the official Maven repository.

open_rtb.Video Maven / Gradle / Ivy

There is a newer version: 3.1.2
Show newest version
/**
 * Autogenerated by Avro
 * 
 * DO NOT EDIT DIRECTLY
 */

package open_rtb;

/** 3.3.4 Video Object
The “video” object _must_ be included directly in the impression object if the impression offered for auction is an in-stream video ad opportunity.
Note that for the video object, many of the fields are non-essential for a minimally viable exchange interfaces. These parameters do not necessarily need to be specified to the bidder, if they are always the same for all impression, of if the exchange chooses not to supply the additional information to the bidder. */
public interface Video
  extends java.util.function.Supplier,
          java.lang.Comparable>,
          java.io.Serializable {

  /** True if all fields are set to default values. */
  default boolean isDefault() {
    return
      isDefaultMimes() &&
      isDefaultMinduration() &&
      isDefaultMaxduration() &&
      isDefaultProtocol() &&
      isDefaultProtocols() &&
      isDefaultW() &&
      isDefaultH() &&
      isDefaultStartdelay() &&
      isDefaultLinearity() &&
      isDefaultSequence() &&
      isDefaultBattr() &&
      isDefaultMaxextended() &&
      isDefaultMinbitrate() &&
      isDefaultMaxbitrate() &&
      isDefaultBoxingallowed() &&
      isDefaultPlaybackmethod() &&
      isDefaultDeliverymethod() &&
      isDefaultPos() &&
      isDefaultCompanionad() &&
      isDefaultApi() &&
      isDefaultVastCompanionType();
  }

  /** Returns underlying object. */
  T get();

  /** Creates a new builder based on this object. */
  Builder newBuilder();

  /** Content MIME types supported. Popular MIME types include, but are not limited to “video/x-ms- wmv” for Windows Media, and “video/x-flv” for Flash Video. */
  java.util.List getMimes();

  boolean isDefaultMimes();

  /** Minimum video ad duration in seconds. */
  int getMinduration();

  boolean isDefaultMinduration();

  /** Maximum video ad duration in seconds. */
  int getMaxduration();

  boolean isDefaultMaxduration();

  /** Video bid response protocols. See Table 6.7 Video Bid Response Protocols for a list of possible values. NOTE: Use “protocols” when multiple protocols are supported. Its use is also highly recommended even for one since this “protocol” attribute is likely to be deprecated in a future version.
      At least one supported protocol must be specified in either the “protocol” or “protocols” attribute. */
  int getProtocol();

  boolean isDefaultProtocol();

  /** Video bid response protocols. See Table 6.7 Video Bid Response Protocols for a list of possible values.
      At least one supported protocol must be specified in either the “protocol” or “protocols” attribute. */
  java.util.List getProtocols();

  boolean isDefaultProtocols();

  /** Width of the player in pixels. This field is not required, but it’s highly recommended that this information be included. */
  int getW();

  boolean isDefaultW();

  /** Height of the player in pixels. This field is not required, but it’s highly recommended that this information be included. */
  int getH();

  boolean isDefaultH();

  /** Indicates the start delay in seconds for preroll, midroll, or postroll ad placement. See Table 6.9 Video Start Delay for generic placement values. */
  int getStartdelay();

  boolean isDefaultStartdelay();

  /** Indicates whether the ad impression must be linear, non- linear or can be of any type (field not set). See Table 6.6 Video Linearity for a list of the possible values and recommended bidder interpretation. */
  int getLinearity();

  boolean isDefaultLinearity();

  /** If multiple ad impressions are offered in the same bid request, the sequence number will allow for the coordinated delivery of multiple creatives. */
  int getSequence();

  boolean isDefaultSequence();

  /** Blocked creative attributes. See Table 6.3 Creative Attributes. If blank assume all types are allowed. */
  java.util.List getBattr();

  boolean isDefaultBattr();

  /** Maximum extended video ad duration, if extension is allowed. If blank or 0, extension is not allowed. If -1, extension is allowed, and there is no time limit imposed. If greater than 0, then the value represents the number of seconds of extended play supported beyond the maxduration value. */
  int getMaxextended();

  boolean isDefaultMaxextended();

  /** Minimum bit rate in Kbps. Exchange may set this dynamically, or universally across their set of publishers. */
  int getMinbitrate();

  boolean isDefaultMinbitrate();

  /** Maximum bit rate in Kbps. Exchange may set this dynamically, or universally across their set of publishers. */
  int getMaxbitrate();

  boolean isDefaultMaxbitrate();

  /** If exchange publisher has rules preventing letter boxing of 4x3 content to play in a 16x9 window, then this should be set to false. Default setting is true, which assumes that boxing of content to fit into a window is allowed. “1” indicates boxing is allowed. “0” indicates it is not allowed. */
  int getBoxingallowed();

  boolean isDefaultBoxingallowed();

  /** List of allowed playback methods. If blank, assume that all are allowed. See Table 6.8 Video Playback Methods for a list of possible values. */
  java.util.List getPlaybackmethod();

  boolean isDefaultPlaybackmethod();

  /** List of supported delivery methods (streaming, progressive). If blank, assume all are supported. See Table 6.12 Content Delivery Methods for a list of possible values. */
  java.util.List getDeliverymethod();

  boolean isDefaultDeliverymethod();

  /** Ad Position (see table 6.5). Default: unknown. */
  int getPos();

  boolean isDefaultPos();

  /** If companion ads are available, they can be listed as an array of banner objects. See Banner Object. */
  java.util.List> getCompanionad();

  boolean isDefaultCompanionad();

  /** List of supported API frameworks for this impression. (See Table 6.4 API Frameworks). If an API is not explicitly listed it is assumed not to be supported. */
  java.util.List getApi();

  boolean isDefaultApi();

  /** Recommended if companion objects are included. See Table 6.17 VAST Companion Types for a list of possible values. */
  java.util.List getVastCompanionType();

  boolean isDefaultVastCompanionType();

  public interface Builder {

    Video build();

    Builder setMimes(java.util.List value);

    Builder clearMimes();

    Builder setMinduration(int value);

    Builder clearMinduration();

    Builder setMaxduration(int value);

    Builder clearMaxduration();

    Builder setProtocol(int value);

    Builder clearProtocol();

    Builder setProtocols(java.util.List value);

    Builder clearProtocols();

    Builder setW(int value);

    Builder clearW();

    Builder setH(int value);

    Builder clearH();

    Builder setStartdelay(int value);

    Builder clearStartdelay();

    Builder setLinearity(int value);

    Builder clearLinearity();

    Builder setSequence(int value);

    Builder clearSequence();

    Builder setBattr(java.util.List value);

    Builder clearBattr();

    Builder setMaxextended(int value);

    Builder clearMaxextended();

    Builder setMinbitrate(int value);

    Builder clearMinbitrate();

    Builder setMaxbitrate(int value);

    Builder clearMaxbitrate();

    Builder setBoxingallowed(int value);

    Builder clearBoxingallowed();

    Builder setPlaybackmethod(java.util.List value);

    Builder clearPlaybackmethod();

    Builder setDeliverymethod(java.util.List value);

    Builder clearDeliverymethod();

    Builder setPos(int value);

    Builder clearPos();

    Builder setCompanionad(java.util.List> value);

    Builder clearCompanionad();

    Builder setApi(java.util.List value);

    Builder clearApi();

    Builder setVastCompanionType(java.util.List value);

    Builder clearVastCompanionType();
  }


  static class Comparator implements java.util.Comparator>, java.io.Serializable {

    @Override public int compare(open_rtb.Video a, open_rtb.Video b) {
      int _cmp;
      if (0 != (_cmp = compareMimes(a, b))) return _cmp;
      if (0 != (_cmp = compareMinduration(a, b))) return _cmp;
      if (0 != (_cmp = compareMaxduration(a, b))) return _cmp;
      if (0 != (_cmp = compareProtocol(a, b))) return _cmp;
      if (0 != (_cmp = compareProtocols(a, b))) return _cmp;
      if (0 != (_cmp = compareW(a, b))) return _cmp;
      if (0 != (_cmp = compareH(a, b))) return _cmp;
      if (0 != (_cmp = compareStartdelay(a, b))) return _cmp;
      if (0 != (_cmp = compareLinearity(a, b))) return _cmp;
      if (0 != (_cmp = compareSequence(a, b))) return _cmp;
      if (0 != (_cmp = compareBattr(a, b))) return _cmp;
      if (0 != (_cmp = compareMaxextended(a, b))) return _cmp;
      if (0 != (_cmp = compareMinbitrate(a, b))) return _cmp;
      if (0 != (_cmp = compareMaxbitrate(a, b))) return _cmp;
      if (0 != (_cmp = compareBoxingallowed(a, b))) return _cmp;
      if (0 != (_cmp = comparePlaybackmethod(a, b))) return _cmp;
      if (0 != (_cmp = compareDeliverymethod(a, b))) return _cmp;
      if (0 != (_cmp = comparePos(a, b))) return _cmp;
      if (0 != (_cmp = compareCompanionad(a, b))) return _cmp;
      if (0 != (_cmp = compareApi(a, b))) return _cmp;
      if (0 != (_cmp = compareVastCompanionType(a, b))) return _cmp;
      return 0;
    }

    static private int compareMimes (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getMimes();
      final java.util.List fb = b.getMimes();
      int _cmp = 0; java.util.Iterator a_it0 = fa.iterator(); java.util.Iterator b_it0 = fb.iterator(); while (a_it0.hasNext() && b_it0.hasNext()) { if (0 != (_cmp = a_it0.next().compareTo(b_it0.next()))) return _cmp; } if (a_it0.hasNext()) return 1; if (b_it0.hasNext()) return -1; return 0;
    }

    static private int compareMinduration (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getMinduration();
      final java.lang.Integer fb = b.getMinduration();
      return java.lang.Integer.compare(fa, fb);
    }

    static private int compareMaxduration (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getMaxduration();
      final java.lang.Integer fb = b.getMaxduration();
      return java.lang.Integer.compare(fa, fb);
    }

    static private int compareProtocol (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getProtocol();
      final java.lang.Integer fb = b.getProtocol();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareProtocols (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getProtocols();
      final java.util.List fb = b.getProtocols();
      int _cmp = 0; java.util.Iterator a_it4 = fa.iterator(); java.util.Iterator b_it4 = fb.iterator(); while (a_it4.hasNext() && b_it4.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it4.next(), b_it4.next()))) return _cmp; } if (a_it4.hasNext()) return 1; if (b_it4.hasNext()) return -1; return 0;
    }

    static private int compareW (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getW();
      final java.lang.Integer fb = b.getW();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareH (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getH();
      final java.lang.Integer fb = b.getH();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareStartdelay (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getStartdelay();
      final java.lang.Integer fb = b.getStartdelay();
      return java.lang.Integer.compare(fa, fb);
    }

    static private int compareLinearity (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getLinearity();
      final java.lang.Integer fb = b.getLinearity();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareSequence (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getSequence();
      final java.lang.Integer fb = b.getSequence();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareBattr (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getBattr();
      final java.util.List fb = b.getBattr();
      int _cmp = 0; java.util.Iterator a_it10 = fa.iterator(); java.util.Iterator b_it10 = fb.iterator(); while (a_it10.hasNext() && b_it10.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it10.next(), b_it10.next()))) return _cmp; } if (a_it10.hasNext()) return 1; if (b_it10.hasNext()) return -1; return 0;
    }

    static private int compareMaxextended (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getMaxextended();
      final java.lang.Integer fb = b.getMaxextended();
      return java.lang.Integer.compare(fa, fb);
    }

    static private int compareMinbitrate (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getMinbitrate();
      final java.lang.Integer fb = b.getMinbitrate();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareMaxbitrate (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getMaxbitrate();
      final java.lang.Integer fb = b.getMaxbitrate();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareBoxingallowed (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getBoxingallowed();
      final java.lang.Integer fb = b.getBoxingallowed();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int comparePlaybackmethod (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getPlaybackmethod();
      final java.util.List fb = b.getPlaybackmethod();
      int _cmp = 0; java.util.Iterator a_it15 = fa.iterator(); java.util.Iterator b_it15 = fb.iterator(); while (a_it15.hasNext() && b_it15.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it15.next(), b_it15.next()))) return _cmp; } if (a_it15.hasNext()) return 1; if (b_it15.hasNext()) return -1; return 0;
    }

    static private int compareDeliverymethod (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getDeliverymethod();
      final java.util.List fb = b.getDeliverymethod();
      int _cmp = 0; java.util.Iterator a_it16 = fa.iterator(); java.util.Iterator b_it16 = fb.iterator(); while (a_it16.hasNext() && b_it16.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it16.next(), b_it16.next()))) return _cmp; } if (a_it16.hasNext()) return 1; if (b_it16.hasNext()) return -1; return 0;
    }

    static private int comparePos (open_rtb.Video a, open_rtb.Video b) {
      final java.lang.Integer fa = a.getPos();
      final java.lang.Integer fb = b.getPos();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int compareCompanionad (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List> fa = a.getCompanionad();
      final java.util.List> fb = b.getCompanionad();
      int _cmp = 0; java.util.Iterator> a_it18 = fa.iterator(); java.util.Iterator> b_it18 = fb.iterator(); while (a_it18.hasNext() && b_it18.hasNext()) { if (0 != (_cmp = a_it18.next().compareTo(b_it18.next()))) return _cmp; } if (a_it18.hasNext()) return 1; if (b_it18.hasNext()) return -1; return 0;
    }

    static private int compareApi (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getApi();
      final java.util.List fb = b.getApi();
      int _cmp = 0; java.util.Iterator a_it19 = fa.iterator(); java.util.Iterator b_it19 = fb.iterator(); while (a_it19.hasNext() && b_it19.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it19.next(), b_it19.next()))) return _cmp; } if (a_it19.hasNext()) return 1; if (b_it19.hasNext()) return -1; return 0;
    }

    static private int compareVastCompanionType (open_rtb.Video a, open_rtb.Video b) {
      final java.util.List fa = a.getVastCompanionType();
      final java.util.List fb = b.getVastCompanionType();
      int _cmp = 0; java.util.Iterator a_it20 = fa.iterator(); java.util.Iterator b_it20 = fb.iterator(); while (a_it20.hasNext() && b_it20.hasNext()) { if (0 != (_cmp = java.lang.Integer.compareUnsigned(a_it20.next(), b_it20.next()))) return _cmp; } if (a_it20.hasNext()) return 1; if (b_it20.hasNext()) return -1; return 0;
    }

    static private final Comparator INSTANCE = new Comparator();

    static public final long serialVersionUID = 21;
  }

  /** Returns comparator instance for Video objects. */
  static java.util.Comparator> getComparator() {
    return Comparator.INSTANCE;
  }

  @Override default int compareTo(open_rtb.Video other) {
    return getComparator().compare(this, other);
  }

  static class NativeImpl implements open_rtb.Video {

    transient private java.lang.String json;
    private java.util.List __mimes;
    transient private java.lang.Boolean is_default$mimes;
    transient private java.util.List _mimes;
    private int __minduration;
    transient private java.lang.Boolean is_default$minduration;
    private int __maxduration;
    transient private java.lang.Boolean is_default$maxduration;
    private int __protocol;
    transient private java.lang.Boolean is_default$protocol;
    private java.util.List __protocols;
    transient private java.lang.Boolean is_default$protocols;
    transient private java.util.List _protocols;
    private int __w;
    transient private java.lang.Boolean is_default$w;
    private int __h;
    transient private java.lang.Boolean is_default$h;
    private int __startdelay;
    transient private java.lang.Boolean is_default$startdelay;
    private int __linearity;
    transient private java.lang.Boolean is_default$linearity;
    private int __sequence;
    transient private java.lang.Boolean is_default$sequence;
    private java.util.List __battr;
    transient private java.lang.Boolean is_default$battr;
    transient private java.util.List _battr;
    private int __maxextended;
    transient private java.lang.Boolean is_default$maxextended;
    private int __minbitrate;
    transient private java.lang.Boolean is_default$minbitrate;
    private int __maxbitrate;
    transient private java.lang.Boolean is_default$maxbitrate;
    private int __boxingallowed;
    transient private java.lang.Boolean is_default$boxingallowed;
    private java.util.List __playbackmethod;
    transient private java.lang.Boolean is_default$playbackmethod;
    transient private java.util.List _playbackmethod;
    private java.util.List __deliverymethod;
    transient private java.lang.Boolean is_default$deliverymethod;
    transient private java.util.List _deliverymethod;
    private int __pos;
    transient private java.lang.Boolean is_default$pos;
    private java.util.List> __companionad;
    transient private java.lang.Boolean is_default$companionad;
    transient private java.util.List> _companionad;
    private java.util.List __api;
    transient private java.lang.Boolean is_default$api;
    transient private java.util.List _api;
    private java.util.List __vast_companion_type;
    transient private java.lang.Boolean is_default$vast_companion_type;
    transient private java.util.List _vast_companion_type;

    private NativeImpl() {
      __mimes = java.util.Collections.emptyList();
      is_default$mimes = java.lang.Boolean.TRUE;
      __minduration = -1;
      is_default$minduration = java.lang.Boolean.TRUE;
      __maxduration = -1;
      is_default$maxduration = java.lang.Boolean.TRUE;
      __protocol = 0;
      is_default$protocol = java.lang.Boolean.TRUE;
      __protocols = java.util.Collections.emptyList();
      is_default$protocols = java.lang.Boolean.TRUE;
      __w = 0;
      is_default$w = java.lang.Boolean.TRUE;
      __h = 0;
      is_default$h = java.lang.Boolean.TRUE;
      __startdelay = 0;
      is_default$startdelay = java.lang.Boolean.TRUE;
      __linearity = 0;
      is_default$linearity = java.lang.Boolean.TRUE;
      __sequence = 1;
      is_default$sequence = java.lang.Boolean.TRUE;
      __battr = java.util.Collections.emptyList();
      is_default$battr = java.lang.Boolean.TRUE;
      __maxextended = 0;
      is_default$maxextended = java.lang.Boolean.TRUE;
      __minbitrate = 0;
      is_default$minbitrate = java.lang.Boolean.TRUE;
      __maxbitrate = 0;
      is_default$maxbitrate = java.lang.Boolean.TRUE;
      __boxingallowed = 1;
      is_default$boxingallowed = java.lang.Boolean.TRUE;
      __playbackmethod = java.util.Collections.emptyList();
      is_default$playbackmethod = java.lang.Boolean.TRUE;
      __deliverymethod = java.util.Collections.emptyList();
      is_default$deliverymethod = java.lang.Boolean.TRUE;
      __pos = 0;
      is_default$pos = java.lang.Boolean.TRUE;
      __companionad = java.util.Collections.emptyList();
      is_default$companionad = java.lang.Boolean.TRUE;
      __api = java.util.Collections.emptyList();
      is_default$api = java.lang.Boolean.TRUE;
      __vast_companion_type = java.util.Collections.emptyList();
      is_default$vast_companion_type = java.lang.Boolean.TRUE;
      json = "{}";
    }

    private NativeImpl(NativeImpl other) {
      setMimes(other.getMimes());
      setMinduration(other.getMinduration());
      setMaxduration(other.getMaxduration());
      setProtocol(other.getProtocol());
      setProtocols(other.getProtocols());
      setW(other.getW());
      setH(other.getH());
      setStartdelay(other.getStartdelay());
      setLinearity(other.getLinearity());
      setSequence(other.getSequence());
      setBattr(other.getBattr());
      setMaxextended(other.getMaxextended());
      setMinbitrate(other.getMinbitrate());
      setMaxbitrate(other.getMaxbitrate());
      setBoxingallowed(other.getBoxingallowed());
      setPlaybackmethod(other.getPlaybackmethod());
      setDeliverymethod(other.getDeliverymethod());
      setPos(other.getPos());
      setCompanionad(other.getCompanionad());
      setApi(other.getApi());
      setVastCompanionType(other.getVastCompanionType());
      json = other.json;
    }

    @Override public NativeImpl get() {
      return this;
    }

    @Override public Builder newBuilder() {
      return newNativeImplBuilder(this);
    }

    private java.lang.String buildJson() {
      java.lang.StringBuilder sb = new StringBuilder();
      if (!isDefaultMimes()) {
        sb.append((0 == sb.length()) ? "{\"mimes\": " : ", \"mimes\": ")
          .append(__mimes.stream().map(v -> "\"" + v.replace("\"","\\\"") + '\"').collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultMinduration()) {
        sb.append((0 == sb.length()) ? "{\"minduration\": " : ", \"minduration\": ")
          .append(__minduration);
      }
      if (!isDefaultMaxduration()) {
        sb.append((0 == sb.length()) ? "{\"maxduration\": " : ", \"maxduration\": ")
          .append(__maxduration);
      }
      if (!isDefaultProtocol()) {
        sb.append((0 == sb.length()) ? "{\"protocol\": " : ", \"protocol\": ")
          .append(__protocol);
      }
      if (!isDefaultProtocols()) {
        sb.append((0 == sb.length()) ? "{\"protocols\": " : ", \"protocols\": ")
          .append(__protocols.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultW()) {
        sb.append((0 == sb.length()) ? "{\"w\": " : ", \"w\": ")
          .append(__w);
      }
      if (!isDefaultH()) {
        sb.append((0 == sb.length()) ? "{\"h\": " : ", \"h\": ")
          .append(__h);
      }
      if (!isDefaultStartdelay()) {
        sb.append((0 == sb.length()) ? "{\"startdelay\": " : ", \"startdelay\": ")
          .append(__startdelay);
      }
      if (!isDefaultLinearity()) {
        sb.append((0 == sb.length()) ? "{\"linearity\": " : ", \"linearity\": ")
          .append(__linearity);
      }
      if (!isDefaultSequence()) {
        sb.append((0 == sb.length()) ? "{\"sequence\": " : ", \"sequence\": ")
          .append(__sequence);
      }
      if (!isDefaultBattr()) {
        sb.append((0 == sb.length()) ? "{\"battr\": " : ", \"battr\": ")
          .append(__battr.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultMaxextended()) {
        sb.append((0 == sb.length()) ? "{\"maxextended\": " : ", \"maxextended\": ")
          .append(__maxextended);
      }
      if (!isDefaultMinbitrate()) {
        sb.append((0 == sb.length()) ? "{\"minbitrate\": " : ", \"minbitrate\": ")
          .append(__minbitrate);
      }
      if (!isDefaultMaxbitrate()) {
        sb.append((0 == sb.length()) ? "{\"maxbitrate\": " : ", \"maxbitrate\": ")
          .append(__maxbitrate);
      }
      if (!isDefaultBoxingallowed()) {
        sb.append((0 == sb.length()) ? "{\"boxingallowed\": " : ", \"boxingallowed\": ")
          .append(__boxingallowed);
      }
      if (!isDefaultPlaybackmethod()) {
        sb.append((0 == sb.length()) ? "{\"playbackmethod\": " : ", \"playbackmethod\": ")
          .append(__playbackmethod.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultDeliverymethod()) {
        sb.append((0 == sb.length()) ? "{\"deliverymethod\": " : ", \"deliverymethod\": ")
          .append(__deliverymethod.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultPos()) {
        sb.append((0 == sb.length()) ? "{\"pos\": " : ", \"pos\": ")
          .append(__pos);
      }
      if (!isDefaultCompanionad()) {
        sb.append((0 == sb.length()) ? "{\"companionad\": " : ", \"companionad\": ")
          .append(__companionad.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultApi()) {
        sb.append((0 == sb.length()) ? "{\"api\": " : ", \"api\": ")
          .append(__api.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultVastCompanionType()) {
        sb.append((0 == sb.length()) ? "{\"vast_companion_type\": " : ", \"vast_companion_type\": ")
          .append(__vast_companion_type.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      return (0 == sb.length()) ? "{}" : sb.append('}').toString();
    }

    @Override public String toString() {
      if (null == json) {
        json = buildJson();
      }
      return json;
    }

    @Override public int hashCode() {
      return toString().hashCode();
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null || !(other instanceof NativeImpl)) return false;
      return toString().equals(other.toString());
    }

    @Override public java.util.List getMimes() {
      if (null == _mimes) {
        _mimes = java.util.Collections.unmodifiableList(__mimes);
      }
      return _mimes;
    }

    @Override public boolean isDefaultMimes() {
      if (null == is_default$mimes) {
        is_default$mimes = getMimes().isEmpty();
      }
      return is_default$mimes;
    }

    private void setMimes(java.util.List value) {
      this.__mimes = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$mimes = null;
      this.json = null;
      this._mimes = null;
    }

    @Override public int getMinduration() {
      return __minduration;
    }

    @Override public boolean isDefaultMinduration() {
      if (null == is_default$minduration) {
        is_default$minduration = -1 == getMinduration();
      }
      return is_default$minduration;
    }

    private void setMinduration(int value) {
      this.__minduration = value;
      this.is_default$minduration = null;
      this.json = null;
    }

    @Override public int getMaxduration() {
      return __maxduration;
    }

    @Override public boolean isDefaultMaxduration() {
      if (null == is_default$maxduration) {
        is_default$maxduration = -1 == getMaxduration();
      }
      return is_default$maxduration;
    }

    private void setMaxduration(int value) {
      this.__maxduration = value;
      this.is_default$maxduration = null;
      this.json = null;
    }

    @Override public int getProtocol() {
      return __protocol;
    }

    @Override public boolean isDefaultProtocol() {
      if (null == is_default$protocol) {
        is_default$protocol = 0 == getProtocol();
      }
      return is_default$protocol;
    }

    private void setProtocol(int value) {
      this.__protocol = value;
      this.is_default$protocol = null;
      this.json = null;
    }

    @Override public java.util.List getProtocols() {
      if (null == _protocols) {
        _protocols = java.util.Collections.unmodifiableList(__protocols);
      }
      return _protocols;
    }

    @Override public boolean isDefaultProtocols() {
      if (null == is_default$protocols) {
        is_default$protocols = getProtocols().isEmpty();
      }
      return is_default$protocols;
    }

    private void setProtocols(java.util.List value) {
      this.__protocols = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$protocols = null;
      this.json = null;
      this._protocols = null;
    }

    @Override public int getW() {
      return __w;
    }

    @Override public boolean isDefaultW() {
      if (null == is_default$w) {
        is_default$w = 0 == getW();
      }
      return is_default$w;
    }

    private void setW(int value) {
      this.__w = value;
      this.is_default$w = null;
      this.json = null;
    }

    @Override public int getH() {
      return __h;
    }

    @Override public boolean isDefaultH() {
      if (null == is_default$h) {
        is_default$h = 0 == getH();
      }
      return is_default$h;
    }

    private void setH(int value) {
      this.__h = value;
      this.is_default$h = null;
      this.json = null;
    }

    @Override public int getStartdelay() {
      return __startdelay;
    }

    @Override public boolean isDefaultStartdelay() {
      if (null == is_default$startdelay) {
        is_default$startdelay = 0 == getStartdelay();
      }
      return is_default$startdelay;
    }

    private void setStartdelay(int value) {
      this.__startdelay = value;
      this.is_default$startdelay = null;
      this.json = null;
    }

    @Override public int getLinearity() {
      return __linearity;
    }

    @Override public boolean isDefaultLinearity() {
      if (null == is_default$linearity) {
        is_default$linearity = 0 == getLinearity();
      }
      return is_default$linearity;
    }

    private void setLinearity(int value) {
      this.__linearity = value;
      this.is_default$linearity = null;
      this.json = null;
    }

    @Override public int getSequence() {
      return __sequence;
    }

    @Override public boolean isDefaultSequence() {
      if (null == is_default$sequence) {
        is_default$sequence = 1 == getSequence();
      }
      return is_default$sequence;
    }

    private void setSequence(int value) {
      this.__sequence = value;
      this.is_default$sequence = null;
      this.json = null;
    }

    @Override public java.util.List getBattr() {
      if (null == _battr) {
        _battr = java.util.Collections.unmodifiableList(__battr);
      }
      return _battr;
    }

    @Override public boolean isDefaultBattr() {
      if (null == is_default$battr) {
        is_default$battr = getBattr().isEmpty();
      }
      return is_default$battr;
    }

    private void setBattr(java.util.List value) {
      this.__battr = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$battr = null;
      this.json = null;
      this._battr = null;
    }

    @Override public int getMaxextended() {
      return __maxextended;
    }

    @Override public boolean isDefaultMaxextended() {
      if (null == is_default$maxextended) {
        is_default$maxextended = 0 == getMaxextended();
      }
      return is_default$maxextended;
    }

    private void setMaxextended(int value) {
      this.__maxextended = value;
      this.is_default$maxextended = null;
      this.json = null;
    }

    @Override public int getMinbitrate() {
      return __minbitrate;
    }

    @Override public boolean isDefaultMinbitrate() {
      if (null == is_default$minbitrate) {
        is_default$minbitrate = 0 == getMinbitrate();
      }
      return is_default$minbitrate;
    }

    private void setMinbitrate(int value) {
      this.__minbitrate = value;
      this.is_default$minbitrate = null;
      this.json = null;
    }

    @Override public int getMaxbitrate() {
      return __maxbitrate;
    }

    @Override public boolean isDefaultMaxbitrate() {
      if (null == is_default$maxbitrate) {
        is_default$maxbitrate = 0 == getMaxbitrate();
      }
      return is_default$maxbitrate;
    }

    private void setMaxbitrate(int value) {
      this.__maxbitrate = value;
      this.is_default$maxbitrate = null;
      this.json = null;
    }

    @Override public int getBoxingallowed() {
      return __boxingallowed;
    }

    @Override public boolean isDefaultBoxingallowed() {
      if (null == is_default$boxingallowed) {
        is_default$boxingallowed = 1 == getBoxingallowed();
      }
      return is_default$boxingallowed;
    }

    private void setBoxingallowed(int value) {
      this.__boxingallowed = value;
      this.is_default$boxingallowed = null;
      this.json = null;
    }

    @Override public java.util.List getPlaybackmethod() {
      if (null == _playbackmethod) {
        _playbackmethod = java.util.Collections.unmodifiableList(__playbackmethod);
      }
      return _playbackmethod;
    }

    @Override public boolean isDefaultPlaybackmethod() {
      if (null == is_default$playbackmethod) {
        is_default$playbackmethod = getPlaybackmethod().isEmpty();
      }
      return is_default$playbackmethod;
    }

    private void setPlaybackmethod(java.util.List value) {
      this.__playbackmethod = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$playbackmethod = null;
      this.json = null;
      this._playbackmethod = null;
    }

    @Override public java.util.List getDeliverymethod() {
      if (null == _deliverymethod) {
        _deliverymethod = java.util.Collections.unmodifiableList(__deliverymethod);
      }
      return _deliverymethod;
    }

    @Override public boolean isDefaultDeliverymethod() {
      if (null == is_default$deliverymethod) {
        is_default$deliverymethod = getDeliverymethod().isEmpty();
      }
      return is_default$deliverymethod;
    }

    private void setDeliverymethod(java.util.List value) {
      this.__deliverymethod = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$deliverymethod = null;
      this.json = null;
      this._deliverymethod = null;
    }

    @Override public int getPos() {
      return __pos;
    }

    @Override public boolean isDefaultPos() {
      if (null == is_default$pos) {
        is_default$pos = 0 == getPos();
      }
      return is_default$pos;
    }

    private void setPos(int value) {
      this.__pos = value;
      this.is_default$pos = null;
      this.json = null;
    }

    @Override public java.util.List> getCompanionad() {
      if (null == _companionad) {
        _companionad = java.util.Collections.unmodifiableList(__companionad);
      }
      return _companionad;
    }

    @Override public boolean isDefaultCompanionad() {
      if (null == is_default$companionad) {
        is_default$companionad = getCompanionad().isEmpty();
      }
      return is_default$companionad;
    }

    private void setCompanionad(java.util.List> value) {
      this.__companionad = value.stream().map(open_rtb.Banner::nativeImpl).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$companionad = null;
      this.json = null;
      this._companionad = null;
    }

    @Override public java.util.List getApi() {
      if (null == _api) {
        _api = java.util.Collections.unmodifiableList(__api);
      }
      return _api;
    }

    @Override public boolean isDefaultApi() {
      if (null == is_default$api) {
        is_default$api = getApi().isEmpty();
      }
      return is_default$api;
    }

    private void setApi(java.util.List value) {
      this.__api = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$api = null;
      this.json = null;
      this._api = null;
    }

    @Override public java.util.List getVastCompanionType() {
      if (null == _vast_companion_type) {
        _vast_companion_type = java.util.Collections.unmodifiableList(__vast_companion_type);
      }
      return _vast_companion_type;
    }

    @Override public boolean isDefaultVastCompanionType() {
      if (null == is_default$vast_companion_type) {
        is_default$vast_companion_type = getVastCompanionType().isEmpty();
      }
      return is_default$vast_companion_type;
    }

    private void setVastCompanionType(java.util.List value) {
      this.__vast_companion_type = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$vast_companion_type = null;
      this.json = null;
      this._vast_companion_type = null;
    }

    static class NativeImplBuilder implements Builder {

      private NativeImpl wrapped = new NativeImpl();

      @Override public open_rtb.Video build() {
        return new NativeImpl(wrapped);
      }

      @Override public Builder setMimes(java.util.List value) {
        if (value.isEmpty()) {
          return clearMimes();
        }
        wrapped.setMimes(value);
        return this;
      }

      @Override public Builder clearMimes() {
        wrapped.__mimes = _DEFAULT.get().__mimes;
        wrapped.is_default$mimes = true;
        wrapped._mimes = _DEFAULT.get()._mimes;
        return this;
      }

      @Override public Builder setMinduration(int value) {
        if (-1 == value) {
          return clearMinduration();
        }
        wrapped.setMinduration(value);
        return this;
      }

      @Override public Builder clearMinduration() {
        wrapped.__minduration = _DEFAULT.get().__minduration;
        wrapped.is_default$minduration = true;
        return this;
      }

      @Override public Builder setMaxduration(int value) {
        if (-1 == value) {
          return clearMaxduration();
        }
        wrapped.setMaxduration(value);
        return this;
      }

      @Override public Builder clearMaxduration() {
        wrapped.__maxduration = _DEFAULT.get().__maxduration;
        wrapped.is_default$maxduration = true;
        return this;
      }

      @Override public Builder setProtocol(int value) {
        if (0 == value) {
          return clearProtocol();
        }
        wrapped.setProtocol(value);
        return this;
      }

      @Override public Builder clearProtocol() {
        wrapped.__protocol = _DEFAULT.get().__protocol;
        wrapped.is_default$protocol = true;
        return this;
      }

      @Override public Builder setProtocols(java.util.List value) {
        if (value.isEmpty()) {
          return clearProtocols();
        }
        wrapped.setProtocols(value);
        return this;
      }

      @Override public Builder clearProtocols() {
        wrapped.__protocols = _DEFAULT.get().__protocols;
        wrapped.is_default$protocols = true;
        wrapped._protocols = _DEFAULT.get()._protocols;
        return this;
      }

      @Override public Builder setW(int value) {
        if (0 == value) {
          return clearW();
        }
        wrapped.setW(value);
        return this;
      }

      @Override public Builder clearW() {
        wrapped.__w = _DEFAULT.get().__w;
        wrapped.is_default$w = true;
        return this;
      }

      @Override public Builder setH(int value) {
        if (0 == value) {
          return clearH();
        }
        wrapped.setH(value);
        return this;
      }

      @Override public Builder clearH() {
        wrapped.__h = _DEFAULT.get().__h;
        wrapped.is_default$h = true;
        return this;
      }

      @Override public Builder setStartdelay(int value) {
        if (0 == value) {
          return clearStartdelay();
        }
        wrapped.setStartdelay(value);
        return this;
      }

      @Override public Builder clearStartdelay() {
        wrapped.__startdelay = _DEFAULT.get().__startdelay;
        wrapped.is_default$startdelay = true;
        return this;
      }

      @Override public Builder setLinearity(int value) {
        if (0 == value) {
          return clearLinearity();
        }
        wrapped.setLinearity(value);
        return this;
      }

      @Override public Builder clearLinearity() {
        wrapped.__linearity = _DEFAULT.get().__linearity;
        wrapped.is_default$linearity = true;
        return this;
      }

      @Override public Builder setSequence(int value) {
        if (1 == value) {
          return clearSequence();
        }
        wrapped.setSequence(value);
        return this;
      }

      @Override public Builder clearSequence() {
        wrapped.__sequence = _DEFAULT.get().__sequence;
        wrapped.is_default$sequence = true;
        return this;
      }

      @Override public Builder setBattr(java.util.List value) {
        if (value.isEmpty()) {
          return clearBattr();
        }
        wrapped.setBattr(value);
        return this;
      }

      @Override public Builder clearBattr() {
        wrapped.__battr = _DEFAULT.get().__battr;
        wrapped.is_default$battr = true;
        wrapped._battr = _DEFAULT.get()._battr;
        return this;
      }

      @Override public Builder setMaxextended(int value) {
        if (0 == value) {
          return clearMaxextended();
        }
        wrapped.setMaxextended(value);
        return this;
      }

      @Override public Builder clearMaxextended() {
        wrapped.__maxextended = _DEFAULT.get().__maxextended;
        wrapped.is_default$maxextended = true;
        return this;
      }

      @Override public Builder setMinbitrate(int value) {
        if (0 == value) {
          return clearMinbitrate();
        }
        wrapped.setMinbitrate(value);
        return this;
      }

      @Override public Builder clearMinbitrate() {
        wrapped.__minbitrate = _DEFAULT.get().__minbitrate;
        wrapped.is_default$minbitrate = true;
        return this;
      }

      @Override public Builder setMaxbitrate(int value) {
        if (0 == value) {
          return clearMaxbitrate();
        }
        wrapped.setMaxbitrate(value);
        return this;
      }

      @Override public Builder clearMaxbitrate() {
        wrapped.__maxbitrate = _DEFAULT.get().__maxbitrate;
        wrapped.is_default$maxbitrate = true;
        return this;
      }

      @Override public Builder setBoxingallowed(int value) {
        if (1 == value) {
          return clearBoxingallowed();
        }
        wrapped.setBoxingallowed(value);
        return this;
      }

      @Override public Builder clearBoxingallowed() {
        wrapped.__boxingallowed = _DEFAULT.get().__boxingallowed;
        wrapped.is_default$boxingallowed = true;
        return this;
      }

      @Override public Builder setPlaybackmethod(java.util.List value) {
        if (value.isEmpty()) {
          return clearPlaybackmethod();
        }
        wrapped.setPlaybackmethod(value);
        return this;
      }

      @Override public Builder clearPlaybackmethod() {
        wrapped.__playbackmethod = _DEFAULT.get().__playbackmethod;
        wrapped.is_default$playbackmethod = true;
        wrapped._playbackmethod = _DEFAULT.get()._playbackmethod;
        return this;
      }

      @Override public Builder setDeliverymethod(java.util.List value) {
        if (value.isEmpty()) {
          return clearDeliverymethod();
        }
        wrapped.setDeliverymethod(value);
        return this;
      }

      @Override public Builder clearDeliverymethod() {
        wrapped.__deliverymethod = _DEFAULT.get().__deliverymethod;
        wrapped.is_default$deliverymethod = true;
        wrapped._deliverymethod = _DEFAULT.get()._deliverymethod;
        return this;
      }

      @Override public Builder setPos(int value) {
        if (0 == value) {
          return clearPos();
        }
        wrapped.setPos(value);
        return this;
      }

      @Override public Builder clearPos() {
        wrapped.__pos = _DEFAULT.get().__pos;
        wrapped.is_default$pos = true;
        return this;
      }

      @Override public Builder setCompanionad(java.util.List> value) {
        if (value.isEmpty()) {
          return clearCompanionad();
        }
        wrapped.setCompanionad(value);
        return this;
      }

      @Override public Builder clearCompanionad() {
        wrapped.__companionad = _DEFAULT.get().__companionad;
        wrapped.is_default$companionad = true;
        wrapped._companionad = _DEFAULT.get()._companionad;
        return this;
      }

      @Override public Builder setApi(java.util.List value) {
        if (value.isEmpty()) {
          return clearApi();
        }
        wrapped.setApi(value);
        return this;
      }

      @Override public Builder clearApi() {
        wrapped.__api = _DEFAULT.get().__api;
        wrapped.is_default$api = true;
        wrapped._api = _DEFAULT.get()._api;
        return this;
      }

      @Override public Builder setVastCompanionType(java.util.List value) {
        if (value.isEmpty()) {
          return clearVastCompanionType();
        }
        wrapped.setVastCompanionType(value);
        return this;
      }

      @Override public Builder clearVastCompanionType() {
        wrapped.__vast_companion_type = _DEFAULT.get().__vast_companion_type;
        wrapped.is_default$vast_companion_type = true;
        wrapped._vast_companion_type = _DEFAULT.get()._vast_companion_type;
        return this;
      }
    }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected NativeImpl initialValue() {
        NativeImpl instance = new NativeImpl();
        assert instance.isDefault();
        return instance;
      }
    };

    static public final long serialVersionUID = 21;
  }

  /** Returns a POJO builder instance with default values. */
  static Builder newNativeImplBuilder() { return new NativeImpl.NativeImplBuilder(); }

  /** Returns a POJO builder instance based on existing prototype Video. */
  static Builder newNativeImplBuilder(open_rtb.Video other) {
    return newNativeImplBuilder()
      .setMimes(other.getMimes())
      .setMinduration(other.getMinduration())
      .setMaxduration(other.getMaxduration())
      .setProtocol(other.getProtocol())
      .setProtocols(other.getProtocols())
      .setW(other.getW())
      .setH(other.getH())
      .setStartdelay(other.getStartdelay())
      .setLinearity(other.getLinearity())
      .setSequence(other.getSequence())
      .setBattr(other.getBattr())
      .setMaxextended(other.getMaxextended())
      .setMinbitrate(other.getMinbitrate())
      .setMaxbitrate(other.getMaxbitrate())
      .setBoxingallowed(other.getBoxingallowed())
      .setPlaybackmethod(other.getPlaybackmethod())
      .setDeliverymethod(other.getDeliverymethod())
      .setPos(other.getPos())
      .setCompanionad(other.getCompanionad())
      .setApi(other.getApi())
      .setVastCompanionType(other.getVastCompanionType());
  }

  /** Returns a POJO based on an instance of Video. */
  static NativeImpl nativeImpl(open_rtb.Video instance) {
    if (instance instanceof NativeImpl) {
      return (NativeImpl) instance;
    } else {
      return (NativeImpl) newNativeImplBuilder(instance).build();
    }
  }

  static class Avro implements open_rtb.Video {

    private byte[] binaryEncoding;
    transient private open_rtb.VideoAvro wrapped;
    transient private java.lang.Boolean is_default$mimes;
    transient private java.util.List _mimes;
    transient private java.lang.Boolean is_default$minduration;
    transient private java.lang.Boolean is_default$maxduration;
    transient private java.lang.Boolean is_default$protocol;
    transient private java.lang.Boolean is_default$protocols;
    transient private java.util.List _protocols;
    transient private java.lang.Boolean is_default$w;
    transient private java.lang.Boolean is_default$h;
    transient private java.lang.Boolean is_default$startdelay;
    transient private java.lang.Boolean is_default$linearity;
    transient private java.lang.Boolean is_default$sequence;
    transient private java.lang.Boolean is_default$battr;
    transient private java.util.List _battr;
    transient private java.lang.Boolean is_default$maxextended;
    transient private java.lang.Boolean is_default$minbitrate;
    transient private java.lang.Boolean is_default$maxbitrate;
    transient private java.lang.Boolean is_default$boxingallowed;
    transient private java.lang.Boolean is_default$playbackmethod;
    transient private java.util.List _playbackmethod;
    transient private java.lang.Boolean is_default$deliverymethod;
    transient private java.util.List _deliverymethod;
    transient private java.lang.Boolean is_default$pos;
    transient private java.lang.Boolean is_default$companionad;
    transient private java.util.List> _companionad;
    transient private java.lang.Boolean is_default$api;
    transient private java.util.List _api;
    transient private java.lang.Boolean is_default$vast_companion_type;
    transient private java.util.List _vast_companion_type;

    private Avro(open_rtb.VideoAvro wrapped, byte[] binaryEncoding) {
      this.wrapped = wrapped;
      this.binaryEncoding = binaryEncoding;
    }

    /** Constructs a new Avro instance based on a message's binary encoding. Only use this if you know what you're doing. */
    public Avro(byte[] binaryEncoding) { this(null, binaryEncoding); }

    @Override public open_rtb.VideoAvro get() {
      if (wrapped == null) {
        try {
          wrapped = decode(binaryEncoding);
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return wrapped;
    }

    @Override public Builder newBuilder() {
      return newAvroBuilder(get());
    }

    /** Returns an Avro binary encoding of this record. */
    public byte[] toByteArray() {
      return (byte[]) encoded().binaryEncoding.clone();
    }

    /** Returns the Avro binary encoding of this record wrapped in a read-only buffer. */
    public java.nio.ByteBuffer toByteBuffer() {
      return java.nio.ByteBuffer.wrap(encoded().binaryEncoding).asReadOnlyBuffer();
    }

    @Override public java.util.List getMimes() {
      if (_mimes == null) {
        _mimes = java.util.Collections.unmodifiableList(get().mimes.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList(get().mimes.size()))));
      }
      return _mimes;
    }

    @Override public boolean isDefaultMimes() {
      if (is_default$mimes == null) {
        is_default$mimes = getMimes().isEmpty();
      }
      return is_default$mimes;
    }

    @Override public int getMinduration() {
      return get().minduration;
    }

    @Override public boolean isDefaultMinduration() {
      if (is_default$minduration == null) {
        is_default$minduration = -1 == getMinduration();
      }
      return is_default$minduration;
    }

    @Override public int getMaxduration() {
      return get().maxduration;
    }

    @Override public boolean isDefaultMaxduration() {
      if (is_default$maxduration == null) {
        is_default$maxduration = -1 == getMaxduration();
      }
      return is_default$maxduration;
    }

    @Override public int getProtocol() {
      return get().protocol;
    }

    @Override public boolean isDefaultProtocol() {
      if (is_default$protocol == null) {
        is_default$protocol = 0 == getProtocol();
      }
      return is_default$protocol;
    }

    @Override public java.util.List getProtocols() {
      if (_protocols == null) {
        _protocols = java.util.Collections.unmodifiableList(get().protocols);
      }
      return _protocols;
    }

    @Override public boolean isDefaultProtocols() {
      if (is_default$protocols == null) {
        is_default$protocols = getProtocols().isEmpty();
      }
      return is_default$protocols;
    }

    @Override public int getW() {
      return get().w;
    }

    @Override public boolean isDefaultW() {
      if (is_default$w == null) {
        is_default$w = 0 == getW();
      }
      return is_default$w;
    }

    @Override public int getH() {
      return get().h;
    }

    @Override public boolean isDefaultH() {
      if (is_default$h == null) {
        is_default$h = 0 == getH();
      }
      return is_default$h;
    }

    @Override public int getStartdelay() {
      return get().startdelay;
    }

    @Override public boolean isDefaultStartdelay() {
      if (is_default$startdelay == null) {
        is_default$startdelay = 0 == getStartdelay();
      }
      return is_default$startdelay;
    }

    @Override public int getLinearity() {
      return get().linearity;
    }

    @Override public boolean isDefaultLinearity() {
      if (is_default$linearity == null) {
        is_default$linearity = 0 == getLinearity();
      }
      return is_default$linearity;
    }

    @Override public int getSequence() {
      return get().sequence;
    }

    @Override public boolean isDefaultSequence() {
      if (is_default$sequence == null) {
        is_default$sequence = 1 == getSequence();
      }
      return is_default$sequence;
    }

    @Override public java.util.List getBattr() {
      if (_battr == null) {
        _battr = java.util.Collections.unmodifiableList(get().battr);
      }
      return _battr;
    }

    @Override public boolean isDefaultBattr() {
      if (is_default$battr == null) {
        is_default$battr = getBattr().isEmpty();
      }
      return is_default$battr;
    }

    @Override public int getMaxextended() {
      return get().maxextended;
    }

    @Override public boolean isDefaultMaxextended() {
      if (is_default$maxextended == null) {
        is_default$maxextended = 0 == getMaxextended();
      }
      return is_default$maxextended;
    }

    @Override public int getMinbitrate() {
      return get().minbitrate;
    }

    @Override public boolean isDefaultMinbitrate() {
      if (is_default$minbitrate == null) {
        is_default$minbitrate = 0 == getMinbitrate();
      }
      return is_default$minbitrate;
    }

    @Override public int getMaxbitrate() {
      return get().maxbitrate;
    }

    @Override public boolean isDefaultMaxbitrate() {
      if (is_default$maxbitrate == null) {
        is_default$maxbitrate = 0 == getMaxbitrate();
      }
      return is_default$maxbitrate;
    }

    @Override public int getBoxingallowed() {
      return get().boxingallowed;
    }

    @Override public boolean isDefaultBoxingallowed() {
      if (is_default$boxingallowed == null) {
        is_default$boxingallowed = 1 == getBoxingallowed();
      }
      return is_default$boxingallowed;
    }

    @Override public java.util.List getPlaybackmethod() {
      if (_playbackmethod == null) {
        _playbackmethod = java.util.Collections.unmodifiableList(get().playbackmethod);
      }
      return _playbackmethod;
    }

    @Override public boolean isDefaultPlaybackmethod() {
      if (is_default$playbackmethod == null) {
        is_default$playbackmethod = getPlaybackmethod().isEmpty();
      }
      return is_default$playbackmethod;
    }

    @Override public java.util.List getDeliverymethod() {
      if (_deliverymethod == null) {
        _deliverymethod = java.util.Collections.unmodifiableList(get().deliverymethod);
      }
      return _deliverymethod;
    }

    @Override public boolean isDefaultDeliverymethod() {
      if (is_default$deliverymethod == null) {
        is_default$deliverymethod = getDeliverymethod().isEmpty();
      }
      return is_default$deliverymethod;
    }

    @Override public int getPos() {
      return get().pos;
    }

    @Override public boolean isDefaultPos() {
      if (is_default$pos == null) {
        is_default$pos = 0 == getPos();
      }
      return is_default$pos;
    }

    @Override public java.util.List> getCompanionad() {
      if (_companionad == null) {
        _companionad = java.util.Collections.unmodifiableList(get().companionad.stream().map(open_rtb.Banner::avro).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList>(get().companionad.size()))));
      }
      return _companionad;
    }

    @Override public boolean isDefaultCompanionad() {
      if (is_default$companionad == null) {
        is_default$companionad = getCompanionad().isEmpty();
      }
      return is_default$companionad;
    }

    @Override public java.util.List getApi() {
      if (_api == null) {
        _api = java.util.Collections.unmodifiableList(get().api);
      }
      return _api;
    }

    @Override public boolean isDefaultApi() {
      if (is_default$api == null) {
        is_default$api = getApi().isEmpty();
      }
      return is_default$api;
    }

    @Override public java.util.List getVastCompanionType() {
      if (_vast_companion_type == null) {
        _vast_companion_type = java.util.Collections.unmodifiableList(get().vast_companion_type);
      }
      return _vast_companion_type;
    }

    @Override public boolean isDefaultVastCompanionType() {
      if (is_default$vast_companion_type == null) {
        is_default$vast_companion_type = getVastCompanionType().isEmpty();
      }
      return is_default$vast_companion_type;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null && !(other instanceof Avro)) return false;
      return get().equals(((Avro) other).get());
    }

    @Override public int hashCode() { return get().hashCode(); }

    @Override public String toString() { return get().toString(); }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      if (binaryEncoding == null) { encode(); }
      out.defaultWriteObject();
    }

    public Avro encoded() {
      if (binaryEncoding != null) {
        try {
          encode();
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return this;
    }

    private void encode() throws java.io.IOException {
      java.io.ByteArrayOutputStream stream = _ENCODER_STREAM.get();
      org.apache.avro.io.BinaryEncoder encoder = _ENCODER.get();
      stream.reset();
      wrapped.encode(encoder);
      encoder.flush();
      binaryEncoding = stream.toByteArray();
    }

    static private open_rtb.VideoAvro decode(byte[] binaryEncoding) throws java.io.IOException {
      open_rtb.VideoAvro instance = new open_rtb.VideoAvro();
      org.apache.avro.io.BinaryDecoder decoder = org.apache.avro.io.DecoderFactory.get().binaryDecoder(binaryEncoding, _DECODER.get());
      return instance.decode(decoder);
    }

    /** Decodes a Avro record. */
    static public open_rtb.Video from(byte[] binaryEncoding) throws java.io.IOException {
      return new Avro(decode(binaryEncoding), binaryEncoding);
    }

    static private java.lang.ThreadLocal _DECODER = new java.lang.ThreadLocal() {
      @Override protected org.apache.avro.io.BinaryDecoder initialValue() { return org.apache.avro.io.DecoderFactory.get().binaryDecoder(new byte[0], null); }
    };

    static private java.lang.ThreadLocal _ENCODER_STREAM = new java.lang.ThreadLocal() {
      @Override protected java.io.ByteArrayOutputStream initialValue() { return new java.io.ByteArrayOutputStream(); }
    };

    static private java.lang.ThreadLocal _ENCODER = new java.lang.ThreadLocal() {
      @Override protected org.apache.avro.io.BinaryEncoder initialValue() { return org.apache.avro.io.EncoderFactory.get().binaryEncoder(_ENCODER_STREAM.get(), null); }
    };

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Avro initialValue() { return new Avro(open_rtb.VideoAvro.newBuilder().build(), null); }
    };

    static public final long serialVersionUID = 21;
  }

  static class AvroBuilder implements Builder {

    final private open_rtb.VideoAvro.Builder builder;

    /** Only use this if you know what you are doing. */
    public AvroBuilder(open_rtb.VideoAvro.Builder builder) { this.builder = builder; }

    @Override public open_rtb.Video build() {
      return new Avro(builder.build(), null);
    }

    @Override public Builder setMimes(java.util.List value) {
      builder.setMimes(value.stream().map(org.apache.avro.util.Utf8::new).collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(0).schema()))));
      return this;
    }

    @Override public Builder clearMimes() {
      builder.clearMimes();
      return this;
    }

    @Override public Builder setMinduration(int value) {
      builder.setMinduration(value);
      return this;
    }

    @Override public Builder clearMinduration() {
      builder.clearMinduration();
      return this;
    }

    @Override public Builder setMaxduration(int value) {
      builder.setMaxduration(value);
      return this;
    }

    @Override public Builder clearMaxduration() {
      builder.clearMaxduration();
      return this;
    }

    @Override public Builder setProtocol(int value) {
      builder.setProtocol(value);
      return this;
    }

    @Override public Builder clearProtocol() {
      builder.clearProtocol();
      return this;
    }

    @Override public Builder setProtocols(java.util.List value) {
      builder.setProtocols(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(4).schema()))));
      return this;
    }

    @Override public Builder clearProtocols() {
      builder.clearProtocols();
      return this;
    }

    @Override public Builder setW(int value) {
      builder.setW(value);
      return this;
    }

    @Override public Builder clearW() {
      builder.clearW();
      return this;
    }

    @Override public Builder setH(int value) {
      builder.setH(value);
      return this;
    }

    @Override public Builder clearH() {
      builder.clearH();
      return this;
    }

    @Override public Builder setStartdelay(int value) {
      builder.setStartdelay(value);
      return this;
    }

    @Override public Builder clearStartdelay() {
      builder.clearStartdelay();
      return this;
    }

    @Override public Builder setLinearity(int value) {
      builder.setLinearity(value);
      return this;
    }

    @Override public Builder clearLinearity() {
      builder.clearLinearity();
      return this;
    }

    @Override public Builder setSequence(int value) {
      builder.setSequence(value);
      return this;
    }

    @Override public Builder clearSequence() {
      builder.clearSequence();
      return this;
    }

    @Override public Builder setBattr(java.util.List value) {
      builder.setBattr(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(10).schema()))));
      return this;
    }

    @Override public Builder clearBattr() {
      builder.clearBattr();
      return this;
    }

    @Override public Builder setMaxextended(int value) {
      builder.setMaxextended(value);
      return this;
    }

    @Override public Builder clearMaxextended() {
      builder.clearMaxextended();
      return this;
    }

    @Override public Builder setMinbitrate(int value) {
      builder.setMinbitrate(value);
      return this;
    }

    @Override public Builder clearMinbitrate() {
      builder.clearMinbitrate();
      return this;
    }

    @Override public Builder setMaxbitrate(int value) {
      builder.setMaxbitrate(value);
      return this;
    }

    @Override public Builder clearMaxbitrate() {
      builder.clearMaxbitrate();
      return this;
    }

    @Override public Builder setBoxingallowed(int value) {
      builder.setBoxingallowed(value);
      return this;
    }

    @Override public Builder clearBoxingallowed() {
      builder.clearBoxingallowed();
      return this;
    }

    @Override public Builder setPlaybackmethod(java.util.List value) {
      builder.setPlaybackmethod(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(15).schema()))));
      return this;
    }

    @Override public Builder clearPlaybackmethod() {
      builder.clearPlaybackmethod();
      return this;
    }

    @Override public Builder setDeliverymethod(java.util.List value) {
      builder.setDeliverymethod(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(16).schema()))));
      return this;
    }

    @Override public Builder clearDeliverymethod() {
      builder.clearDeliverymethod();
      return this;
    }

    @Override public Builder setPos(int value) {
      builder.setPos(value);
      return this;
    }

    @Override public Builder clearPos() {
      builder.clearPos();
      return this;
    }

    @Override public Builder setCompanionad(java.util.List> value) {
      builder.setCompanionad(value.stream().map(open_rtb.Banner::avro).map(java.util.function.Supplier::get).collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(18).schema()))));
      return this;
    }

    @Override public Builder clearCompanionad() {
      builder.clearCompanionad();
      return this;
    }

    @Override public Builder setApi(java.util.List value) {
      builder.setApi(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(19).schema()))));
      return this;
    }

    @Override public Builder clearApi() {
      builder.clearApi();
      return this;
    }

    @Override public Builder setVastCompanionType(java.util.List value) {
      builder.setVastCompanionType(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.VideoAvro.SCHEMA$.getFields().get(20).schema()))));
      return this;
    }

    @Override public Builder clearVastCompanionType() {
      builder.clearVastCompanionType();
      return this;
    }
  }

  /** Returns new Avro builder instance with default values. */
  static Builder newAvroBuilder() {
    return new AvroBuilder(open_rtb.VideoAvro.newBuilder());
  }

  /** Returns new Avro builder instance based on existing prototype. */
  static Builder newAvroBuilder(open_rtb.VideoAvro other) {
    return new AvroBuilder(open_rtb.VideoAvro.newBuilder(other));
  }

  /** Returns new Avro builder instance based on existing prototype builder. */
  static Builder newAvroBuilder(open_rtb.VideoAvro.Builder other) {
    return new AvroBuilder(open_rtb.VideoAvro.newBuilder(other));
  }

  /** Returns new Avro builder instance based on existing prototype Video. */
  static Builder newAvroBuilder(open_rtb.Video other) {
    return newAvroBuilder()
      .setMimes(other.getMimes())
      .setMinduration(other.getMinduration())
      .setMaxduration(other.getMaxduration())
      .setProtocol(other.getProtocol())
      .setProtocols(other.getProtocols())
      .setW(other.getW())
      .setH(other.getH())
      .setStartdelay(other.getStartdelay())
      .setLinearity(other.getLinearity())
      .setSequence(other.getSequence())
      .setBattr(other.getBattr())
      .setMaxextended(other.getMaxextended())
      .setMinbitrate(other.getMinbitrate())
      .setMaxbitrate(other.getMaxbitrate())
      .setBoxingallowed(other.getBoxingallowed())
      .setPlaybackmethod(other.getPlaybackmethod())
      .setDeliverymethod(other.getDeliverymethod())
      .setPos(other.getPos())
      .setCompanionad(other.getCompanionad())
      .setApi(other.getApi())
      .setVastCompanionType(other.getVastCompanionType());
  }

  /** Returns a wrapped Avro record based on an instance of Video. */
  static Avro avro(open_rtb.Video instance) {
    if (instance instanceof Avro) {
      return (Avro) instance;
    } else {
      return (Avro) newAvroBuilder(instance).build();
    }
  }

  /** Wraps an existing Avro record. */
  static Avro avro(open_rtb.VideoAvro wrapped) {
    assert wrapped != null;
    return new Avro(wrapped.freeze(), null);
  }

  /** Returns Avro record class. */
  static java.lang.Class getAvroClass() {
    return open_rtb.VideoAvro.class;
  }

  /** Returns Avro record schema. */
  static org.apache.avro.Schema getAvroSchema() {
    return open_rtb.VideoAvro.SCHEMA$;
  }

  static class Protobuf implements open_rtb.Video {

    private byte[] binaryEncoding;
    transient private open_rtb.OpenRtbProtobuf.Video wrapped;
    transient private java.lang.Boolean is_default$mimes;
    transient private java.lang.Boolean is_default$minduration;
    transient private java.lang.Boolean is_default$maxduration;
    transient private java.lang.Boolean is_default$protocol;
    transient private java.lang.Boolean is_default$protocols;
    transient private java.lang.Boolean is_default$w;
    transient private java.lang.Boolean is_default$h;
    transient private java.lang.Boolean is_default$startdelay;
    transient private java.lang.Boolean is_default$linearity;
    transient private java.lang.Boolean is_default$sequence;
    transient private java.lang.Boolean is_default$battr;
    transient private java.lang.Boolean is_default$maxextended;
    transient private java.lang.Boolean is_default$minbitrate;
    transient private java.lang.Boolean is_default$maxbitrate;
    transient private java.lang.Boolean is_default$boxingallowed;
    transient private java.lang.Boolean is_default$playbackmethod;
    transient private java.lang.Boolean is_default$deliverymethod;
    transient private java.lang.Boolean is_default$pos;
    transient private java.lang.Boolean is_default$companionad;
    transient private java.util.List> _companionad;
    transient private java.lang.Boolean is_default$api;
    transient private java.lang.Boolean is_default$vast_companion_type;

    private Protobuf(open_rtb.OpenRtbProtobuf.Video wrapped, byte[] binaryEncoding) {
      this.wrapped = wrapped;
      this.binaryEncoding = binaryEncoding;
    }

    /** Constructs a new Protobuf instance based on a message's binary encoding. Only use this if you know what you're doing. */
    public Protobuf(byte[] binaryEncoding) { this(null, binaryEncoding); }

    @Override public open_rtb.OpenRtbProtobuf.Video get() {
      if (wrapped == null) {
        try {
          wrapped = open_rtb.OpenRtbProtobuf.Video.parseFrom(binaryEncoding);
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return wrapped;
    }

    @Override public Builder newBuilder() {
      return newProtobufBuilder(get());
    }

    @Override public java.util.List getMimes() {
      return (java.util.List)(java.util.List) get().getMimesList();
    }

    @Override public boolean isDefaultMimes() {
      if (is_default$mimes == null) {
        is_default$mimes = getMimes().isEmpty();
      }
      return is_default$mimes;
    }

    @Override public int getMinduration() {
      return get().getMinduration();
    }

    @Override public boolean isDefaultMinduration() {
      if (is_default$minduration == null) {
        is_default$minduration = -1 == getMinduration();
      }
      return is_default$minduration;
    }

    @Override public int getMaxduration() {
      return get().getMaxduration();
    }

    @Override public boolean isDefaultMaxduration() {
      if (is_default$maxduration == null) {
        is_default$maxduration = -1 == getMaxduration();
      }
      return is_default$maxduration;
    }

    @Override public int getProtocol() {
      return get().getProtocol();
    }

    @Override public boolean isDefaultProtocol() {
      if (is_default$protocol == null) {
        is_default$protocol = 0 == getProtocol();
      }
      return is_default$protocol;
    }

    @Override public java.util.List getProtocols() {
      return get().getProtocolsList();
    }

    @Override public boolean isDefaultProtocols() {
      if (is_default$protocols == null) {
        is_default$protocols = getProtocols().isEmpty();
      }
      return is_default$protocols;
    }

    @Override public int getW() {
      return get().getW();
    }

    @Override public boolean isDefaultW() {
      if (is_default$w == null) {
        is_default$w = 0 == getW();
      }
      return is_default$w;
    }

    @Override public int getH() {
      return get().getH();
    }

    @Override public boolean isDefaultH() {
      if (is_default$h == null) {
        is_default$h = 0 == getH();
      }
      return is_default$h;
    }

    @Override public int getStartdelay() {
      return get().getStartdelay();
    }

    @Override public boolean isDefaultStartdelay() {
      if (is_default$startdelay == null) {
        is_default$startdelay = 0 == getStartdelay();
      }
      return is_default$startdelay;
    }

    @Override public int getLinearity() {
      return get().getLinearity();
    }

    @Override public boolean isDefaultLinearity() {
      if (is_default$linearity == null) {
        is_default$linearity = 0 == getLinearity();
      }
      return is_default$linearity;
    }

    @Override public int getSequence() {
      return get().getSequence();
    }

    @Override public boolean isDefaultSequence() {
      if (is_default$sequence == null) {
        is_default$sequence = 1 == getSequence();
      }
      return is_default$sequence;
    }

    @Override public java.util.List getBattr() {
      return get().getBattrList();
    }

    @Override public boolean isDefaultBattr() {
      if (is_default$battr == null) {
        is_default$battr = getBattr().isEmpty();
      }
      return is_default$battr;
    }

    @Override public int getMaxextended() {
      return get().getMaxextended();
    }

    @Override public boolean isDefaultMaxextended() {
      if (is_default$maxextended == null) {
        is_default$maxextended = 0 == getMaxextended();
      }
      return is_default$maxextended;
    }

    @Override public int getMinbitrate() {
      return get().getMinbitrate();
    }

    @Override public boolean isDefaultMinbitrate() {
      if (is_default$minbitrate == null) {
        is_default$minbitrate = 0 == getMinbitrate();
      }
      return is_default$minbitrate;
    }

    @Override public int getMaxbitrate() {
      return get().getMaxbitrate();
    }

    @Override public boolean isDefaultMaxbitrate() {
      if (is_default$maxbitrate == null) {
        is_default$maxbitrate = 0 == getMaxbitrate();
      }
      return is_default$maxbitrate;
    }

    @Override public int getBoxingallowed() {
      return get().getBoxingallowed();
    }

    @Override public boolean isDefaultBoxingallowed() {
      if (is_default$boxingallowed == null) {
        is_default$boxingallowed = 1 == getBoxingallowed();
      }
      return is_default$boxingallowed;
    }

    @Override public java.util.List getPlaybackmethod() {
      return get().getPlaybackmethodList();
    }

    @Override public boolean isDefaultPlaybackmethod() {
      if (is_default$playbackmethod == null) {
        is_default$playbackmethod = getPlaybackmethod().isEmpty();
      }
      return is_default$playbackmethod;
    }

    @Override public java.util.List getDeliverymethod() {
      return get().getDeliverymethodList();
    }

    @Override public boolean isDefaultDeliverymethod() {
      if (is_default$deliverymethod == null) {
        is_default$deliverymethod = getDeliverymethod().isEmpty();
      }
      return is_default$deliverymethod;
    }

    @Override public int getPos() {
      return get().getPos();
    }

    @Override public boolean isDefaultPos() {
      if (is_default$pos == null) {
        is_default$pos = 0 == getPos();
      }
      return is_default$pos;
    }

    @Override public java.util.List> getCompanionad() {
      if (_companionad == null) {
        _companionad = java.util.Collections.unmodifiableList(get().getCompanionadList().stream().map(open_rtb.Banner::protobuf).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList>(get().getCompanionadCount()))));
      }
      return _companionad;
    }

    @Override public boolean isDefaultCompanionad() {
      if (is_default$companionad == null) {
        is_default$companionad = getCompanionad().isEmpty();
      }
      return is_default$companionad;
    }

    @Override public java.util.List getApi() {
      return get().getApiList();
    }

    @Override public boolean isDefaultApi() {
      if (is_default$api == null) {
        is_default$api = getApi().isEmpty();
      }
      return is_default$api;
    }

    @Override public java.util.List getVastCompanionType() {
      return get().getVastCompanionTypeList();
    }

    @Override public boolean isDefaultVastCompanionType() {
      if (is_default$vast_companion_type == null) {
        is_default$vast_companion_type = getVastCompanionType().isEmpty();
      }
      return is_default$vast_companion_type;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null && !(other instanceof Protobuf)) return false;
      return get().equals(((Protobuf) other).get());
    }

    @Override public int hashCode() { return get().hashCode(); }

    @Override public String toString() { return get().toString(); }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      if (binaryEncoding == null) {
        binaryEncoding = wrapped.toByteArray();
      }
      out.defaultWriteObject();
    }

    /** Decodes a Protobuf message. */
    static public open_rtb.Video from(byte[] binaryEncoding) throws java.io.IOException {
      return new Protobuf(open_rtb.OpenRtbProtobuf.Video.parseFrom(binaryEncoding), binaryEncoding);
    }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Protobuf initialValue() { return new Protobuf(open_rtb.OpenRtbProtobuf.Video.getDefaultInstance() , null); }
    };

    static public final long serialVersionUID = 21;
  }

  static class ProtobufBuilder implements Builder {

    final private open_rtb.OpenRtbProtobuf.Video.Builder builder;

    /** Only use this if you know what you are doing. */
    public ProtobufBuilder(open_rtb.OpenRtbProtobuf.Video.Builder builder) { this.builder = builder; }

    @Override public open_rtb.Video build() {
      return new Protobuf(builder.build(), null);
    }

    @Override public Builder setMimes(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllMimes(value);
      }
      return this;
    }

    @Override public Builder clearMimes() {
      builder.clearMimes();
      return this;
    }

    @Override public Builder setMinduration(int value) {
      if (!(-1 == value)) {
        builder.setMinduration(value);
      }
      return this;
    }

    @Override public Builder clearMinduration() {
      builder.clearMinduration();
      return this;
    }

    @Override public Builder setMaxduration(int value) {
      if (!(-1 == value)) {
        builder.setMaxduration(value);
      }
      return this;
    }

    @Override public Builder clearMaxduration() {
      builder.clearMaxduration();
      return this;
    }

    @Override public Builder setProtocol(int value) {
      if (!(0 == value)) {
        builder.setProtocol(value);
      }
      return this;
    }

    @Override public Builder clearProtocol() {
      builder.clearProtocol();
      return this;
    }

    @Override public Builder setProtocols(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllProtocols(value);
      }
      return this;
    }

    @Override public Builder clearProtocols() {
      builder.clearProtocols();
      return this;
    }

    @Override public Builder setW(int value) {
      if (!(0 == value)) {
        builder.setW(value);
      }
      return this;
    }

    @Override public Builder clearW() {
      builder.clearW();
      return this;
    }

    @Override public Builder setH(int value) {
      if (!(0 == value)) {
        builder.setH(value);
      }
      return this;
    }

    @Override public Builder clearH() {
      builder.clearH();
      return this;
    }

    @Override public Builder setStartdelay(int value) {
      if (!(0 == value)) {
        builder.setStartdelay(value);
      }
      return this;
    }

    @Override public Builder clearStartdelay() {
      builder.clearStartdelay();
      return this;
    }

    @Override public Builder setLinearity(int value) {
      if (!(0 == value)) {
        builder.setLinearity(value);
      }
      return this;
    }

    @Override public Builder clearLinearity() {
      builder.clearLinearity();
      return this;
    }

    @Override public Builder setSequence(int value) {
      if (!(1 == value)) {
        builder.setSequence(value);
      }
      return this;
    }

    @Override public Builder clearSequence() {
      builder.clearSequence();
      return this;
    }

    @Override public Builder setBattr(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllBattr(value);
      }
      return this;
    }

    @Override public Builder clearBattr() {
      builder.clearBattr();
      return this;
    }

    @Override public Builder setMaxextended(int value) {
      if (!(0 == value)) {
        builder.setMaxextended(value);
      }
      return this;
    }

    @Override public Builder clearMaxextended() {
      builder.clearMaxextended();
      return this;
    }

    @Override public Builder setMinbitrate(int value) {
      if (!(0 == value)) {
        builder.setMinbitrate(value);
      }
      return this;
    }

    @Override public Builder clearMinbitrate() {
      builder.clearMinbitrate();
      return this;
    }

    @Override public Builder setMaxbitrate(int value) {
      if (!(0 == value)) {
        builder.setMaxbitrate(value);
      }
      return this;
    }

    @Override public Builder clearMaxbitrate() {
      builder.clearMaxbitrate();
      return this;
    }

    @Override public Builder setBoxingallowed(int value) {
      if (!(1 == value)) {
        builder.setBoxingallowed(value);
      }
      return this;
    }

    @Override public Builder clearBoxingallowed() {
      builder.clearBoxingallowed();
      return this;
    }

    @Override public Builder setPlaybackmethod(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllPlaybackmethod(value);
      }
      return this;
    }

    @Override public Builder clearPlaybackmethod() {
      builder.clearPlaybackmethod();
      return this;
    }

    @Override public Builder setDeliverymethod(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllDeliverymethod(value);
      }
      return this;
    }

    @Override public Builder clearDeliverymethod() {
      builder.clearDeliverymethod();
      return this;
    }

    @Override public Builder setPos(int value) {
      if (!(0 == value)) {
        builder.setPos(value);
      }
      return this;
    }

    @Override public Builder clearPos() {
      builder.clearPos();
      return this;
    }

    @Override public Builder setCompanionad(java.util.List> value) {
      if (!(value.isEmpty())) {
        builder.addAllCompanionad(value.stream().map(open_rtb.Banner::protobuf).map(java.util.function.Supplier::get).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList(value.size()))));
      }
      return this;
    }

    @Override public Builder clearCompanionad() {
      builder.clearCompanionad();
      return this;
    }

    @Override public Builder setApi(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllApi(value);
      }
      return this;
    }

    @Override public Builder clearApi() {
      builder.clearApi();
      return this;
    }

    @Override public Builder setVastCompanionType(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllVastCompanionType(value);
      }
      return this;
    }

    @Override public Builder clearVastCompanionType() {
      builder.clearVastCompanionType();
      return this;
    }
  }

  /** Returns new Protobuf builder instance with default values. */
  static Builder newProtobufBuilder() {
    return new ProtobufBuilder(open_rtb.OpenRtbProtobuf.Video.newBuilder());
  }

  /** Returns new Protobuf builder instance based on existing prototype. */
  static Builder newProtobufBuilder(open_rtb.OpenRtbProtobuf.Video other) {
    return new ProtobufBuilder(open_rtb.OpenRtbProtobuf.Video.newBuilder(other));
  }

  /** Returns new Protobuf builder instance based on existing prototype Video. */
  static Builder newProtobufBuilder(open_rtb.Video other) {
    return newProtobufBuilder()
      .setMimes(other.getMimes())
      .setMinduration(other.getMinduration())
      .setMaxduration(other.getMaxduration())
      .setProtocol(other.getProtocol())
      .setProtocols(other.getProtocols())
      .setW(other.getW())
      .setH(other.getH())
      .setStartdelay(other.getStartdelay())
      .setLinearity(other.getLinearity())
      .setSequence(other.getSequence())
      .setBattr(other.getBattr())
      .setMaxextended(other.getMaxextended())
      .setMinbitrate(other.getMinbitrate())
      .setMaxbitrate(other.getMaxbitrate())
      .setBoxingallowed(other.getBoxingallowed())
      .setPlaybackmethod(other.getPlaybackmethod())
      .setDeliverymethod(other.getDeliverymethod())
      .setPos(other.getPos())
      .setCompanionad(other.getCompanionad())
      .setApi(other.getApi())
      .setVastCompanionType(other.getVastCompanionType());
  }

  /** Returns a wrapped Protobuf message based on an instance of Video. */
  static Protobuf protobuf(open_rtb.Video instance) {
    if (instance instanceof Protobuf) {
      return (Protobuf) instance;
    }
    return (Protobuf) newProtobufBuilder(instance).build();
  }

  /** Wraps an existing Protobuf message. */
  static Protobuf protobuf(open_rtb.OpenRtbProtobuf.Video wrapped) {
    assert wrapped != null;
    return new Protobuf(wrapped, null);
  }

  /** Returns Protobuf class for this struct. */
  static java.lang.Class getProtobufClass() {
    return open_rtb.OpenRtbProtobuf.Video.class;
  }

  /** Returns Protobuf protocol class for this struct. */
  static java.lang.Class getProtobufProtocolClass() {
    return com.adgear.anoa.test.ad_exchange.AdExchangeProtobuf.class;
  }

  /** Returns Protobuf descriptor for this struct. */
  static com.google.protobuf.Descriptors.Descriptor getProtobufDescriptor() {
    return open_rtb.OpenRtbProtobuf.Video.getDescriptor();
  }

  /** Returns Protobuf protocol descriptor for this struct. */
  static com.google.protobuf.Descriptors.FileDescriptor getProtobufProtocolDescriptor() {
    return com.adgear.anoa.test.ad_exchange.AdExchangeProtobuf.getDescriptor();
  }

  static class Thrift implements open_rtb.Video {

    private open_rtb.VideoThrift wrapped;
    transient private java.lang.Boolean is_default$mimes;
    transient private java.util.List _mimes;
    transient private java.lang.Boolean is_default$minduration;
    transient private java.lang.Boolean is_default$maxduration;
    transient private java.lang.Boolean is_default$protocol;
    transient private java.lang.Boolean is_default$protocols;
    transient private java.util.List _protocols;
    transient private java.lang.Boolean is_default$w;
    transient private java.lang.Boolean is_default$h;
    transient private java.lang.Boolean is_default$startdelay;
    transient private java.lang.Boolean is_default$linearity;
    transient private java.lang.Boolean is_default$sequence;
    transient private java.lang.Boolean is_default$battr;
    transient private java.util.List _battr;
    transient private java.lang.Boolean is_default$maxextended;
    transient private java.lang.Boolean is_default$minbitrate;
    transient private java.lang.Boolean is_default$maxbitrate;
    transient private java.lang.Boolean is_default$boxingallowed;
    transient private java.lang.Boolean is_default$playbackmethod;
    transient private java.util.List _playbackmethod;
    transient private java.lang.Boolean is_default$deliverymethod;
    transient private java.util.List _deliverymethod;
    transient private java.lang.Boolean is_default$pos;
    transient private java.lang.Boolean is_default$companionad;
    transient private java.util.List> _companionad;
    transient private java.lang.Boolean is_default$api;
    transient private java.util.List _api;
    transient private java.lang.Boolean is_default$vast_companion_type;
    transient private java.util.List _vast_companion_type;

    /** Wraps an existing instance. Only use this if you know what you are doing. */
    public Thrift(open_rtb.VideoThrift wrapped) { this.wrapped = wrapped; }

    /** Create a new wrapper. */
    public Thrift() { this(new open_rtb.VideoThrift()); }

    @Override public open_rtb.VideoThrift get() { return wrapped; }

    @Override public Builder newBuilder() {
      return newThriftBuilder(get());
    }

    @Override public java.util.List getMimes() {
      if (_mimes == null) {
        _mimes = java.util.Optional.ofNullable(wrapped.getMimes()).orElseGet(java.util.Collections::emptyList).stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _mimes;
    }

    @Override public boolean isDefaultMimes() {
      if (is_default$mimes == null) {
        is_default$mimes = getMimes().isEmpty();
      }
      return is_default$mimes;
    }

    @Override public int getMinduration() {
      return wrapped.getMinduration();
    }

    @Override public boolean isDefaultMinduration() {
      if (is_default$minduration == null) {
        is_default$minduration = -1 == getMinduration();
      }
      return is_default$minduration;
    }

    @Override public int getMaxduration() {
      return wrapped.getMaxduration();
    }

    @Override public boolean isDefaultMaxduration() {
      if (is_default$maxduration == null) {
        is_default$maxduration = -1 == getMaxduration();
      }
      return is_default$maxduration;
    }

    @Override public int getProtocol() {
      return wrapped.getProtocol();
    }

    @Override public boolean isDefaultProtocol() {
      if (is_default$protocol == null) {
        is_default$protocol = 0 == getProtocol();
      }
      return is_default$protocol;
    }

    @Override public java.util.List getProtocols() {
      if (_protocols == null) {
        _protocols = java.util.Optional.ofNullable(wrapped.getProtocols()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _protocols;
    }

    @Override public boolean isDefaultProtocols() {
      if (is_default$protocols == null) {
        is_default$protocols = getProtocols().isEmpty();
      }
      return is_default$protocols;
    }

    @Override public int getW() {
      return wrapped.getW();
    }

    @Override public boolean isDefaultW() {
      if (is_default$w == null) {
        is_default$w = 0 == getW();
      }
      return is_default$w;
    }

    @Override public int getH() {
      return wrapped.getH();
    }

    @Override public boolean isDefaultH() {
      if (is_default$h == null) {
        is_default$h = 0 == getH();
      }
      return is_default$h;
    }

    @Override public int getStartdelay() {
      return wrapped.getStartdelay();
    }

    @Override public boolean isDefaultStartdelay() {
      if (is_default$startdelay == null) {
        is_default$startdelay = 0 == getStartdelay();
      }
      return is_default$startdelay;
    }

    @Override public int getLinearity() {
      return wrapped.getLinearity();
    }

    @Override public boolean isDefaultLinearity() {
      if (is_default$linearity == null) {
        is_default$linearity = 0 == getLinearity();
      }
      return is_default$linearity;
    }

    @Override public int getSequence() {
      return wrapped.getSequence();
    }

    @Override public boolean isDefaultSequence() {
      if (is_default$sequence == null) {
        is_default$sequence = 1 == getSequence();
      }
      return is_default$sequence;
    }

    @Override public java.util.List getBattr() {
      if (_battr == null) {
        _battr = java.util.Optional.ofNullable(wrapped.getBattr()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _battr;
    }

    @Override public boolean isDefaultBattr() {
      if (is_default$battr == null) {
        is_default$battr = getBattr().isEmpty();
      }
      return is_default$battr;
    }

    @Override public int getMaxextended() {
      return wrapped.getMaxextended();
    }

    @Override public boolean isDefaultMaxextended() {
      if (is_default$maxextended == null) {
        is_default$maxextended = 0 == getMaxextended();
      }
      return is_default$maxextended;
    }

    @Override public int getMinbitrate() {
      return wrapped.getMinbitrate();
    }

    @Override public boolean isDefaultMinbitrate() {
      if (is_default$minbitrate == null) {
        is_default$minbitrate = 0 == getMinbitrate();
      }
      return is_default$minbitrate;
    }

    @Override public int getMaxbitrate() {
      return wrapped.getMaxbitrate();
    }

    @Override public boolean isDefaultMaxbitrate() {
      if (is_default$maxbitrate == null) {
        is_default$maxbitrate = 0 == getMaxbitrate();
      }
      return is_default$maxbitrate;
    }

    @Override public int getBoxingallowed() {
      return wrapped.getBoxingallowed();
    }

    @Override public boolean isDefaultBoxingallowed() {
      if (is_default$boxingallowed == null) {
        is_default$boxingallowed = 1 == getBoxingallowed();
      }
      return is_default$boxingallowed;
    }

    @Override public java.util.List getPlaybackmethod() {
      if (_playbackmethod == null) {
        _playbackmethod = java.util.Optional.ofNullable(wrapped.getPlaybackmethod()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _playbackmethod;
    }

    @Override public boolean isDefaultPlaybackmethod() {
      if (is_default$playbackmethod == null) {
        is_default$playbackmethod = getPlaybackmethod().isEmpty();
      }
      return is_default$playbackmethod;
    }

    @Override public java.util.List getDeliverymethod() {
      if (_deliverymethod == null) {
        _deliverymethod = java.util.Optional.ofNullable(wrapped.getDeliverymethod()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _deliverymethod;
    }

    @Override public boolean isDefaultDeliverymethod() {
      if (is_default$deliverymethod == null) {
        is_default$deliverymethod = getDeliverymethod().isEmpty();
      }
      return is_default$deliverymethod;
    }

    @Override public int getPos() {
      return wrapped.getPos();
    }

    @Override public boolean isDefaultPos() {
      if (is_default$pos == null) {
        is_default$pos = 0 == getPos();
      }
      return is_default$pos;
    }

    @Override public java.util.List> getCompanionad() {
      if (_companionad == null) {
        _companionad = java.util.Optional.ofNullable(wrapped.getCompanionad()).orElseGet(java.util.Collections::emptyList).stream().map(open_rtb.Banner::thrift).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList>()));
      }
      return _companionad;
    }

    @Override public boolean isDefaultCompanionad() {
      if (is_default$companionad == null) {
        is_default$companionad = getCompanionad().isEmpty();
      }
      return is_default$companionad;
    }

    @Override public java.util.List getApi() {
      if (_api == null) {
        _api = java.util.Optional.ofNullable(wrapped.getApi()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _api;
    }

    @Override public boolean isDefaultApi() {
      if (is_default$api == null) {
        is_default$api = getApi().isEmpty();
      }
      return is_default$api;
    }

    @Override public java.util.List getVastCompanionType() {
      if (_vast_companion_type == null) {
        _vast_companion_type = java.util.Optional.ofNullable(wrapped.getVast_companion_type()).orElseGet(java.util.Collections::emptyList).stream().map(java.lang.Number::intValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _vast_companion_type;
    }

    @Override public boolean isDefaultVastCompanionType() {
      if (is_default$vast_companion_type == null) {
        is_default$vast_companion_type = getVastCompanionType().isEmpty();
      }
      return is_default$vast_companion_type;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null || !(other instanceof Thrift)) return false;
      return wrapped.equals(((Thrift) other).wrapped);
    }

    @Override public int hashCode() { return wrapped.hashCode(); }

    @Override public String toString() { return wrapped.toString(); }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Thrift initialValue() { return new Thrift(); }
    };

    static public final long serialVersionUID = 21;
  }

  static class ThriftBuilder implements Builder {

    final private open_rtb.VideoThrift builder;

    /** Only use this if you know what you are doing. */
    public ThriftBuilder(open_rtb.VideoThrift builder) { this.builder = builder; }

    @Override public open_rtb.Video build() {
      return new Thrift((open_rtb.VideoThrift) builder.deepCopy());
    }

    @Override public Builder setMimes(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setMimes(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearMimes() {
      builder.unsetMimes();
      return this;
    }

    @Override public Builder setMinduration(int value) {
      if (!(-1 == value)) {
        builder.setMinduration((int) value);
      }
      return this;
    }

    @Override public Builder clearMinduration() {
      builder.unsetMinduration();
      return this;
    }

    @Override public Builder setMaxduration(int value) {
      if (!(-1 == value)) {
        builder.setMaxduration((int) value);
      }
      return this;
    }

    @Override public Builder clearMaxduration() {
      builder.unsetMaxduration();
      return this;
    }

    @Override public Builder setProtocol(int value) {
      if (!(0 == value)) {
        builder.setProtocol((short) value);
      }
      return this;
    }

    @Override public Builder clearProtocol() {
      builder.unsetProtocol();
      return this;
    }

    @Override public Builder setProtocols(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setProtocols(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearProtocols() {
      builder.unsetProtocols();
      return this;
    }

    @Override public Builder setW(int value) {
      if (!(0 == value)) {
        builder.setW((int) value);
      }
      return this;
    }

    @Override public Builder clearW() {
      builder.unsetW();
      return this;
    }

    @Override public Builder setH(int value) {
      if (!(0 == value)) {
        builder.setH((int) value);
      }
      return this;
    }

    @Override public Builder clearH() {
      builder.unsetH();
      return this;
    }

    @Override public Builder setStartdelay(int value) {
      if (!(0 == value)) {
        builder.setStartdelay((short) value);
      }
      return this;
    }

    @Override public Builder clearStartdelay() {
      builder.unsetStartdelay();
      return this;
    }

    @Override public Builder setLinearity(int value) {
      if (!(0 == value)) {
        builder.setLinearity((short) value);
      }
      return this;
    }

    @Override public Builder clearLinearity() {
      builder.unsetLinearity();
      return this;
    }

    @Override public Builder setSequence(int value) {
      if (!(1 == value)) {
        builder.setSequence((int) value);
      }
      return this;
    }

    @Override public Builder clearSequence() {
      builder.unsetSequence();
      return this;
    }

    @Override public Builder setBattr(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setBattr(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearBattr() {
      builder.unsetBattr();
      return this;
    }

    @Override public Builder setMaxextended(int value) {
      if (!(0 == value)) {
        builder.setMaxextended((int) value);
      }
      return this;
    }

    @Override public Builder clearMaxextended() {
      builder.unsetMaxextended();
      return this;
    }

    @Override public Builder setMinbitrate(int value) {
      if (!(0 == value)) {
        builder.setMinbitrate((int) value);
      }
      return this;
    }

    @Override public Builder clearMinbitrate() {
      builder.unsetMinbitrate();
      return this;
    }

    @Override public Builder setMaxbitrate(int value) {
      if (!(0 == value)) {
        builder.setMaxbitrate((int) value);
      }
      return this;
    }

    @Override public Builder clearMaxbitrate() {
      builder.unsetMaxbitrate();
      return this;
    }

    @Override public Builder setBoxingallowed(int value) {
      if (!(1 == value)) {
        builder.setBoxingallowed((byte) value);
      }
      return this;
    }

    @Override public Builder clearBoxingallowed() {
      builder.unsetBoxingallowed();
      return this;
    }

    @Override public Builder setPlaybackmethod(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setPlaybackmethod(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearPlaybackmethod() {
      builder.unsetPlaybackmethod();
      return this;
    }

    @Override public Builder setDeliverymethod(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setDeliverymethod(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearDeliverymethod() {
      builder.unsetDeliverymethod();
      return this;
    }

    @Override public Builder setPos(int value) {
      if (!(0 == value)) {
        builder.setPos((short) value);
      }
      return this;
    }

    @Override public Builder clearPos() {
      builder.unsetPos();
      return this;
    }

    @Override public Builder setCompanionad(java.util.List> value) {
      if (!(value.isEmpty())) {
        builder.setCompanionad(value.stream().map(open_rtb.Banner::thrift).map(java.util.function.Supplier::get).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearCompanionad() {
      builder.unsetCompanionad();
      return this;
    }

    @Override public Builder setApi(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setApi(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearApi() {
      builder.unsetApi();
      return this;
    }

    @Override public Builder setVastCompanionType(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setVast_companion_type(value.stream().map(java.lang.Number::shortValue).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearVastCompanionType() {
      builder.unsetVast_companion_type();
      return this;
    }
  }

  /** Returns new Thrift builder instance with default values. */
  static Builder newThriftBuilder() {
    return new ThriftBuilder(new open_rtb.VideoThrift());
  }

  /** Returns new Thrift builder instance based on existing prototype. */
  static Builder newThriftBuilder(open_rtb.VideoThrift other) {
    return new ThriftBuilder((open_rtb.VideoThrift) other.deepCopy());
  }

  /** Returns new Thrift builder instance based on existing prototype Video. */
  static Builder newThriftBuilder(open_rtb.Video other) {
    return newThriftBuilder()
      .setMimes(other.getMimes())
      .setMinduration(other.getMinduration())
      .setMaxduration(other.getMaxduration())
      .setProtocol(other.getProtocol())
      .setProtocols(other.getProtocols())
      .setW(other.getW())
      .setH(other.getH())
      .setStartdelay(other.getStartdelay())
      .setLinearity(other.getLinearity())
      .setSequence(other.getSequence())
      .setBattr(other.getBattr())
      .setMaxextended(other.getMaxextended())
      .setMinbitrate(other.getMinbitrate())
      .setMaxbitrate(other.getMaxbitrate())
      .setBoxingallowed(other.getBoxingallowed())
      .setPlaybackmethod(other.getPlaybackmethod())
      .setDeliverymethod(other.getDeliverymethod())
      .setPos(other.getPos())
      .setCompanionad(other.getCompanionad())
      .setApi(other.getApi())
      .setVastCompanionType(other.getVastCompanionType());
  }

  /** Returns a wrapped Thrift struct based on an instance of Video. */
  static Thrift thrift(open_rtb.Video instance) {
    if (instance instanceof Thrift) {
      return (Thrift) instance;
    }
    return (Thrift) newThriftBuilder(instance).build();
  }

  /** Creates a new wrapped Thrift struct copied from an existing instance. */
  @SuppressWarnings("all")
  static Thrift thrift(open_rtb.VideoThrift instance) {
    return new Thrift((open_rtb.VideoThrift) instance.deepCopy());
  }

  /** Returns Thrift class for this struct. */
  static java.lang.Class getThriftClass() {
    return open_rtb.VideoThrift.class;
  }

  /** Returns Thrift metadata map for this struct. */
  static java.util.Map getThriftMetadataMap() {
    return open_rtb.VideoThrift.metaDataMap;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy