private com.google.protobuf.RepeatedFieldBuilder<
          org.box2d.proto.Box2D.PbFixture, org.box2d.proto.Box2D.PbFixture.Builder, org.box2d.proto.Box2D.PbFixtureOrBuilder> 
          getFixturesFieldBuilder() {
        if (fixturesBuilder_ == null) {
          fixturesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.box2d.proto.Box2D.PbFixture, org.box2d.proto.Box2D.PbFixture.Builder, org.box2d.proto.Box2D.PbFixtureOrBuilder>(
                  fixtures_,
                  ((bitField0_ & 0x00040000) == 0x00040000),
                  getParentForChildren(),
                  isClean());
          fixtures_ = null;
        }
        return fixturesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:box2d.PbBody)
    }
    
    static {
      defaultInstance = new PbBody(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:box2d.PbBody)
  }
  
  public interface PbWorldOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional int64 tag = 1;
    boolean hasTag();
    long getTag();
    
    // optional .box2d.PbVec2 gravity = 2;
    boolean hasGravity();
    org.box2d.proto.Box2D.PbVec2 getGravity();
    org.box2d.proto.Box2D.PbVec2OrBuilder getGravityOrBuilder();
    
    // optional bool allow_sleep = 3;
    boolean hasAllowSleep();
    boolean getAllowSleep();
    
    // optional bool auto_clear_forces = 4;
    boolean hasAutoClearForces();
    boolean getAutoClearForces();
    
    // optional bool warm_starting = 5;
    boolean hasWarmStarting();
    boolean getWarmStarting();
    
    // optional bool continuous_physics = 6;
    boolean hasContinuousPhysics();
    boolean getContinuousPhysics();
    
    // optional bool sub_stepping = 7;
    boolean hasSubStepping();
    boolean getSubStepping();
    
    // repeated .box2d.PbBody bodies = 20;
    java.util.List<org.box2d.proto.Box2D.PbBody> 
        getBodiesList();
    org.box2d.proto.Box2D.PbBody getBodies(int index);
    int getBodiesCount();
    java.util.List<? extends org.box2d.proto.Box2D.PbBodyOrBuilder> 
        getBodiesOrBuilderList();
    org.box2d.proto.Box2D.PbBodyOrBuilder getBodiesOrBuilder(
        int index);
    
    // repeated .box2d.PbJoint joints = 21;
    java.util.List<org.box2d.proto.Box2D.PbJoint> 
        getJointsList();
    org.box2d.proto.Box2D.PbJoint getJoints(int index);
    int getJointsCount();
    java.util.List<? extends org.box2d.proto.Box2D.PbJointOrBuilder> 
        getJointsOrBuilderList();
    org.box2d.proto.Box2D.PbJointOrBuilder getJointsOrBuilder(
        int index);
  }
  public static final class PbWorld extends
      com.google.protobuf.GeneratedMessage
      implements PbWorldOrBuilder {
    // Use PbWorld.newBuilder() to construct.
    private PbWorld(Builder builder) {
      super(builder);
    }
    private PbWorld(boolean noInit) {}
    
    private static final PbWorld defaultInstance;
    public static PbWorld getDefaultInstance() {
      return defaultInstance;
    }
    
    public PbWorld getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.box2d.proto.Box2D.internal_static_box2d_PbWorld_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.box2d.proto.Box2D.internal_static_box2d_PbWorld_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional int64 tag = 1;
    public static final int TAG_FIELD_NUMBER = 1;
    private long tag_;
    public boolean hasTag() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public long getTag() {
      return tag_;
    }
    
    // optional .box2d.PbVec2 gravity = 2;
    public static final int GRAVITY_FIELD_NUMBER = 2;
    private org.box2d.proto.Box2D.PbVec2 gravity_;
    public boolean hasGravity() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public org.box2d.proto.Box2D.PbVec2 getGravity() {
      return gravity_;
    }
    public org.box2d.proto.Box2D.PbVec2OrBuilder getGravityOrBuilder() {
      return gravity_;
    }
    
    // optional bool allow_sleep = 3;
    public static final int ALLOW_SLEEP_FIELD_NUMBER = 3;
    private boolean allowSleep_;
    public boolean hasAllowSleep() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public boolean getAllowSleep() {
      return allowSleep_;
    }
    
    // optional bool auto_clear_forces = 4;
    public static final int AUTO_CLEAR_FORCES_FIELD_NUMBER = 4;
    private boolean autoClearForces_;
    public boolean hasAutoClearForces() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public boolean getAutoClearForces() {
      return autoClearForces_;
    }
    
    // optional bool warm_starting = 5;
    public static final int WARM_STARTING_FIELD_NUMBER = 5;
    private boolean warmStarting_;
    public boolean hasWarmStarting() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public boolean getWarmStarting() {
      return warmStarting_;
    }
    
    // optional bool continuous_physics = 6;
    public static final int CONTINUOUS_PHYSICS_FIELD_NUMBER = 6;
    private boolean continuousPhysics_;
    public boolean hasContinuousPhysics() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public boolean getContinuousPhysics() {
      return continuousPhysics_;
    }
    
    // optional bool sub_stepping = 7;
    public static final int SUB_STEPPING_FIELD_NUMBER = 7;
    private boolean subStepping_;
    public boolean hasSubStepping() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public boolean getSubStepping() {
      return subStepping_;
    }
    
    // repeated .box2d.PbBody bodies = 20;
    public static final int BODIES_FIELD_NUMBER = 20;
    private java.util.List<org.box2d.proto.Box2D.PbBody> bodies_;
    public java.util.List<org.box2d.proto.Box2D.PbBody> getBodiesList() {
      return bodies_;
    }
    public java.util.List<? extends org.box2d.proto.Box2D.PbBodyOrBuilder> 
        getBodiesOrBuilderList() {
      return bodies_;
    }
    public int getBodiesCount() {
      return bodies_.size();
    }
    public org.box2d.proto.Box2D.PbBody getBodies(int index) {
      return bodies_.get(index);
    }
    public org.box2d.proto.Box2D.PbBodyOrBuilder getBodiesOrBuilder(
        int index) {
      return bodies_.get(index);
    }
    
    // repeated .box2d.PbJoint joints = 21;
    public static final int JOINTS_FIELD_NUMBER = 21;
    private java.util.List<org.box2d.proto.Box2D.PbJoint> joints_;
    public java.util.List<org.box2d.proto.Box2D.PbJoint> getJointsList() {
      return joints_;
    }
    public java.util.List<? extends org.box2d.proto.Box2D.PbJointOrBuilder> 
        getJointsOrBuilderList() {
      return joints_;
    }
    public int getJointsCount() {
      return joints_.size();
    }
    public org.box2d.proto.Box2D.PbJoint getJoints(int index) {
      return joints_.get(index);
    }
    public org.box2d.proto.Box2D.PbJointOrBuilder getJointsOrBuilder(
        int index) {
      return joints_.get(index);
    }
    
    private void initFields() {
      tag_ = 0L;
      gravity_ = org.box2d.proto.Box2D.PbVec2.getDefaultInstance();
      allowSleep_ = false;
      autoClearForces_ = false;
      warmStarting_ = false;
      continuousPhysics_ = false;
      subStepping_ = false;
      bodies_ = java.util.Collections.emptyList();
      joints_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasGravity()) {
        if (!getGravity().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getBodiesCount(); i++) {
        if (!getBodies(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getJointsCount(); i++) {
        if (!getJoints(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, tag_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, gravity_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, allowSleep_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, autoClearForces_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, warmStarting_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(6, continuousPhysics_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, subStepping_);
      }
      for (int i = 0; i < bodies_.size(); i++) {
        output.writeMessage(20, bodies_.get(i));
      }
      for (int i = 0; i < joints_.size(); i++) {
        output.writeMessage(21, joints_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, tag_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, gravity_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, allowSleep_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, autoClearForces_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, warmStarting_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, continuousPhysics_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, subStepping_);
      }
      for (int i = 0; i < bodies_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, bodies_.get(i));
      }
      for (int i = 0; i < joints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, joints_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static org.box2d.proto.Box2D.PbWorld parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static org.box2d.proto.Box2D.PbWorld parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.box2d.proto.Box2D.PbWorld prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.box2d.proto.Box2D.PbWorldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.box2d.proto.Box2D.internal_static_box2d_PbWorld_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.box2d.proto.Box2D.internal_static_box2d_PbWorld_fieldAccessorTable;
      }
      
      // Construct using org.box2d.proto.Box2D.PbWorld.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getGravityFieldBuilder();
          getBodiesFieldBuilder();
          getJointsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        tag_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (gravityBuilder_ == null) {
          gravity_ = org.box2d.proto.Box2D.PbVec2.getDefaultInstance();
        } else {
          gravityBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        allowSleep_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        autoClearForces_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        warmStarting_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        continuousPhysics_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        subStepping_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        if (bodiesBuilder_ == null) {
          bodies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
        } else {
          bodiesBuilder_.clear();
        }
        if (jointsBuilder_ == null) {
          joints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
        } else {
          jointsBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.box2d.proto.Box2D.PbWorld.getDescriptor();
      }
      
      public org.box2d.proto.Box2D.PbWorld getDefaultInstanceForType() {
        return org.box2d.proto.Box2D.PbWorld.getDefaultInstance();
      }
      
      public org.box2d.proto.Box2D.PbWorld build() {
        org.box2d.proto.Box2D.PbWorld result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private org.box2d.proto.Box2D.PbWorld buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        org.box2d.proto.Box2D.PbWorld result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public org.box2d.proto.Box2D.PbWorld buildPartial() {
        org.box2d.proto.Box2D.PbWorld result = new org.box2d.proto.Box2D.PbWorld(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.tag_ = tag_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (gravityBuilder_ == null) {
          result.gravity_ = gravity_;
        } else {
          result.gravity_ = gravityBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.allowSleep_ = allowSleep_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.autoClearForces_ = autoClearForces_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.warmStarting_ = warmStarting_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.continuousPhysics_ = continuousPhysics_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.subStepping_ = subStepping_;
        if (bodiesBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            bodies_ = java.util.Collections.unmodifiableList(bodies_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.bodies_ = bodies_;
        } else {
          result.bodies_ = bodiesBuilder_.build();
        }
        if (jointsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            joints_ = java.util.Collections.unmodifiableList(joints_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.joints_ = joints_;
        } else {
          result.joints_ = jointsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.box2d.proto.Box2D.PbWorld) {
          return mergeFrom((org.box2d.proto.Box2D.PbWorld)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(org.box2d.proto.Box2D.PbWorld other) {
        if (other == org.box2d.proto.Box2D.PbWorld.getDefaultInstance()) return this;
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        if (other.hasGravity()) {
          mergeGravity(other.getGravity());
        }
        if (other.hasAllowSleep()) {
          setAllowSleep(other.getAllowSleep());
        }
        if (other.hasAutoClearForces()) {
          setAutoClearForces(other.getAutoClearForces());
        }
        if (other.hasWarmStarting()) {
          setWarmStarting(other.getWarmStarting());
        }
        if (other.hasContinuousPhysics()) {
          setContinuousPhysics(other.getContinuousPhysics());
        }
        if (other.hasSubStepping()) {
          setSubStepping(other.getSubStepping());
        }
        if (bodiesBuilder_ == null) {
          if (!other.bodies_.isEmpty()) {
            if (bodies_.isEmpty()) {
              bodies_ = other.bodies_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureBodiesIsMutable();
              bodies_.addAll(other.bodies_);
            }
            onChanged();
          }
        } else {
          if (!other.bodies_.isEmpty()) {
            if (bodiesBuilder_.isEmpty()) {
              bodiesBuilder_.dispose();
              bodiesBuilder_ = null;
              bodies_ = other.bodies_;
              bitField0_ = (bitField0_ & ~0x00000080);
              bodiesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBodiesFieldBuilder() : null;
            } else {
              bodiesBuilder_.addAllMessages(other.bodies_);
            }
          }
        }
        if (jointsBuilder_ == null) {
          if (!other.joints_.isEmpty()) {
            if (joints_.isEmpty()) {
              joints_ = other.joints_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureJointsIsMutable();
              joints_.addAll(other.joints_);
            }
            onChanged();
          }
        } else {
          if (!other.joints_.isEmpty()) {
            if (jointsBuilder_.isEmpty()) {
              jointsBuilder_.dispose();
              jointsBuilder_ = null;
              joints_ = other.joints_;
              bitField0_ = (bitField0_ & ~0x00000100);
              jointsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getJointsFieldBuilder() : null;
            } else {
              jointsBuilder_.addAllMessages(other.joints_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasGravity()) {
          if (!getGravity().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getBodiesCount(); i++) {
          if (!getBodies(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getJointsCount(); i++) {
          if (!getJoints(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              tag_ = input.readInt64();
              break;
            }
            case 18: {
              org.box2d.proto.Box2D.PbVec2.Builder subBuilder = org.box2d.proto.Box2D.PbVec2.newBuilder();
              if (hasGravity()) {
                subBuilder.mergeFrom(getGravity());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setGravity(subBuilder.buildPartial());
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              allowSleep_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              autoClearForces_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              warmStarting_ = input.readBool();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              continuousPhysics_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              subStepping_ = input.readBool();
              break;
            }
            case 162: {
              org.box2d.proto.Box2D.PbBody.Builder subBuilder = org.box2d.proto.Box2D.PbBody.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addBodies(subBuilder.buildPartial());
              break;
            }
            case 170: {
              org.box2d.proto.Box2D.PbJoint.Builder subBuilder = org.box2d.proto.Box2D.PbJoint.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addJoints(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional int64 tag = 1;
      private long tag_ ;
      public boolean hasTag() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getTag() {
        return tag_;
      }
      public Builder setTag(long value) {
        bitField0_ |= 0x00000001;
        tag_ = value;
        onChanged();
        return this;
      }
      public Builder clearTag() {
        bitField0_ = (bitField0_ & ~0x00000001);
        tag_ = 0L;
        onChanged();
        return this;
      }
      
      // optional .box2d.PbVec2 gravity = 2;
      private org.box2d.proto.Box2D.PbVec2 gravity_ = org.box2d.proto.Box2D.PbVec2.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.box2d.proto.Box2D.PbVec2, org.box2d.proto.Box2D.PbVec2.Builder, org.box2d.proto.Box2D.PbVec2OrBuilder> gravityBuilder_;
      public boolean hasGravity() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public org.box2d.proto.Box2D.PbVec2 getGravity() {
        if (gravityBuilder_ == null) {
          return gravity_;
        } else {
          return gravityBuilder_.getMessage();
        }
      }
      public Builder setGravity(org.box2d.proto.Box2D.PbVec2 value) {
        if (gravityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gravity_ = value;
          onChanged();
        } else {
          gravityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setGravity(
          org.box2d.proto.Box2D.PbVec2.Builder builderForValue) {
        if (gravityBuilder_ == null) {
          gravity_ = builderForValue.build();
          onChanged();
        } else {
          gravityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeGravity(org.box2d.proto.Box2D.PbVec2 value) {
        if (gravityBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              gravity_ != org.box2d.proto.Box2D.PbVec2.getDefaultInstance()) {
            gravity_ =
              org.box2d.proto.Box2D.PbVec2.newBuilder(gravity_).mergeFrom(value).buildPartial();
          } else {
            gravity_ = value;
          }
          onChanged();
        } else {
          gravityBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearGravity() {
        if (gravityBuilder_ == null) {
          gravity_ = org.box2d.proto.Box2D.PbVec2.getDefaultInstance();
          onChanged();
        } else {
          gravityBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public org.box2d.proto.Box2D.PbVec2.Builder getGravityBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getGravityFieldBuilder().getBuilder();
      }
      public org.box2d.proto.Box2D.PbVec2OrBuilder getGravityOrBuilder() {
        if (gravityBuilder_ != null) {
          return gravityBuilder_.getMessageOrBuilder();
        } else {
          return gravity_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          org.box2d.proto.Box2D.PbVec2, org.box2d.proto.Box2D.PbVec2.Builder, org.box2d.proto.Box2D.PbVec2OrBuilder> 
          getGravityFieldBuilder() {
        if (gravityBuilder_ == null) {
          gravityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.box2d.proto.Box2D.PbVec2, org.box2d.proto.Box2D.PbVec2.Builder, org.box2d.proto.Box2D.PbVec2OrBuilder>(
                  gravity_,
                  getParentForChildren(),
                  isClean());
          gravity_ = null;
        }
        return gravityBuilder_;
      }
      
      // optional bool allow_sleep = 3;
      private boolean allowSleep_ ;
      public boolean hasAllowSleep() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getAllowSleep() {
        return allowSleep_;
      }
      public Builder setAllowSleep(boolean value) {
        bitField0_ |= 0x00000004;
        allowSleep_ = value;
        onChanged();
        return this;
      }
      public Builder clearAllowSleep() {
        bitField0_ = (bitField0_ & ~0x00000004);
        allowSleep_ = false;
        onChanged();
        return this;
      }
      
      // optional bool auto_clear_forces = 4;
      private boolean autoClearForces_ ;
      public boolean hasAutoClearForces() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public boolean getAutoClearForces() {
        return autoClearForces_;
      }
      public Builder setAutoClearForces(boolean value) {
        bitField0_ |= 0x00000008;
        autoClearForces_ = value;
        onChanged();
        return this;
      }
      public Builder clearAutoClearForces() {
        bitField0_ = (bitField0_ & ~0x00000008);
        autoClearForces_ = false;
        onChanged();
        return this;
      }
      
      // optional bool warm_starting = 5;
      private boolean warmStarting_ ;
      public boolean hasWarmStarting() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public boolean getWarmStarting() {
        return warmStarting_;
      }
      public Builder setWarmStarting(boolean value) {
        bitField0_ |= 0x00000010;
        warmStarting_ = value;
        onChanged();
        return this;
      }
      public Builder clearWarmStarting() {
        bitField0_ = (bitField0_ & ~0x00000010);
        warmStarting_ = false;
        onChanged();
        return this;
      }
      
      // optional bool continuous_physics = 6;
      private boolean continuousPhysics_ ;
      public boolean hasContinuousPhysics() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public boolean getContinuousPhysics() {
        return continuousPhysics_;
      }
      public Builder setContinuousPhysics(boolean value) {
        bitField0_ |= 0x00000020;
        continuousPhysics_ = value;
        onChanged();
        return this;
      }
      public Builder clearContinuousPhysics() {
        bitField0_ = (bitField0_ & ~0x00000020);
        continuousPhysics_ = false;
        onChanged();
        return this;
      }
      
      // optional bool sub_stepping = 7;
      private boolean subStepping_ ;
      public boolean hasSubStepping() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public boolean getSubStepping() {
        return subStepping_;
      }
      public Builder setSubStepping(boolean value) {
        bitField0_ |= 0x00000040;
        subStepping_ = value;
        onChanged();
        return this;
      }
      public Builder clearSubStepping() {
        bitField0_ = (bitField0_ & ~0x00000040);
        subStepping_ = false;
        onChanged();
        return this;
      }
      
      // repeated .box2d.PbBody bodies = 20;
      private java.util.List<org.box2d.proto.Box2D.PbBody> bodies_ =
        java.util.Collections.emptyList();
      private void ensureBodiesIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          bodies_ = new java.util.ArrayList<org.box2d.proto.Box2D.PbBody>(bodies_);
          bitField0_ |= 0x00000080;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          org.box2d.proto.Box2D.PbBody, org.box2d.proto.Box2D.PbBody.Builder, org.box2d.proto.Box2D.PbBodyOrBuilder> bodiesBuilder_;
      
      public java.util.List<org.box2d.proto.Box2D.PbBody> getBodiesList() {
        if (bodiesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(bodies_);
        } else {
          return bodiesBuilder_.getMessageList();
        }
      }
      public int getBodiesCount() {
        if (bodiesBuilder_ == null) {
          return bodies_.size();
        } else {
          return bodiesBuilder_.getCount();
        }
      }
      public org.box2d.proto.Box2D.PbBody getBodies(int index) {
        if (bodiesBuilder_ == null) {
          return bodies_.get(index);
        } else {
          return bodiesBuilder_.getMessage(index);
        }
      }
      public Builder setBodies(
          int index, org.box2d.proto.Box2D.PbBody value) {
        if (bodiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBodiesIsMutable();
          bodies_.set(index, value);
          onChanged();
        } else {
          bodiesBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setBodies(
          int index, org.box2d.proto.Box2D.PbBody.Builder builderForValue) {
        if (bodiesBuilder_ == null) {
          ensureBodiesIsMutable();
          bodies_.set(index, builderForValue.build());
          onChanged();
        } else {
          bodiesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addBodies(org.box2d.proto.Box2D.PbBody value) {
        if (bodiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBodiesIsMutable();
          bodies_.add(value);
          onChanged();
        } else {
          bodiesBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addBodies(
          int index, org.box2d.proto.Box2D.PbBody value) {
        if (bodiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBodiesIsMutable();
          bodies_.add(index, value);
          onChanged();
        } else {
          bodiesBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addBodies(
          org.box2d.proto.Box2D.PbBody.Builder builderForValue) {
        if (bodiesBuilder_ == null) {
          ensureBodiesIsMutable();
          bodies_.add(builderForValue.build());
          onChanged();
        } else {
          bodiesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addBodies(
          int index, org.box2d.proto.Box2D.PbBody.Builder builderForValue) {
        if (bodiesBuilder_ == null) {
          ensureBodiesIsMutable();
          bodies_.add(index, builderForValue.build());
          onChanged();
        } else {
          bodiesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllBodies(
          java.lang.Iterable<? extends org.box2d.proto.Box2D.PbBody> values) {
        if (bodiesBuilder_ == null) {
          ensureBodiesIsMutable();
          super.addAll(values, bodies_);
          onChanged();
        } else {
          bodiesBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearBodies() {
        if (bodiesBuilder_ == null) {
          bodies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          bodiesBuilder_.clear();
        }
        return this;
      }
      public Builder removeBodies(int index) {
        if (bodiesBuilder_ == null) {
          ensureBodiesIsMutable();
          bodies_.remove(index);
          onChanged();
        } else {
          bodiesBuilder_.remove(index);
        }
        return this;
      }
      public org.box2d.proto.Box2D.PbBody.Builder getBodiesBuilder(
          int index) {
        return getBodiesFieldBuilder().getBuilder(index);
      }
      public org.box2d.proto.Box2D.PbBodyOrBuilder getBodiesOrBuilder(
          int index) {
        if (bodiesBuilder_ == null) {
          return bodies_.get(index);  } else {
          return bodiesBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends org.box2d.proto.Box2D.PbBodyOrBuilder> 
           getBodiesOrBuilderList() {
        if (bodiesBuilder_ != null) {
          return bodiesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(bodies_);
        }
      }
      public org.box2d.proto.Box2D.PbBody.Builder addBodiesBuilder() {
        return getBodiesFieldBuilder().addBuilder(
            org.box2d.proto.Box2D.PbBody.getDefaultInstance());
      }
      public org.box2d.proto.Box2D.PbBody.Builder addBodiesBuilder(
          int index) {
        return getBodiesFieldBuilder().addBuilder(
            index, org.box2d.proto.Box2D.PbBody.getDefaultInstance());
      }
      public java.util.List<org.box2d.proto.Box2D.PbBody.Builder> 
           getBodiesBuilderList() {
        return getBodiesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.box2d.proto.Box2D.PbBody, org.box2d.proto.Box2D.PbBody.Builder, org.box2d.proto.Box2D.PbBodyOrBuilder> 
          getBodiesFieldBuilder() {
        if (bodiesBuilder_ == null) {
          bodiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.box2d.proto.Box2D.PbBody, org.box2d.proto.Box2D.PbBody.Builder, org.box2d.proto.Box2D.PbBodyOrBuilder>(
                  bodies_,
                  ((bitField0_ & 0x00000080) == 0x00000080),
                  getParentForChildren(),
                  isClean());
          bodies_ = null;
        }
        return bodiesBuilder_;
      }
      
      // repeated .box2d.PbJoint joints = 21;
      private java.util.List<org.box2d.proto.Box2D.PbJoint> joints_ =
        java.util.Collections.emptyList();
      private void ensureJointsIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          joints_ = new java.util.ArrayList<org.box2d.proto.Box2D.PbJoint>(joints_);
          bitField0_ |= 0x00000100;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          org.box2d.proto.Box2D.PbJoint, org.box2d.proto.Box2D.PbJoint.Builder, org.box2d.proto.Box2D.PbJointOrBuilder> jointsBuilder_;
      
      public java.util.List<org.box2d.proto.Box2D.PbJoint> getJointsList() {
        if (jointsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(joints_);
        } else {
          return jointsBuilder_.getMessageList();
        }
      }
      public int getJointsCount() {
        if (jointsBuilder_ == null) {
          return joints_.size();
        } else {
          return jointsBuilder_.getCount();
        }
      }
      public org.box2d.proto.Box2D.PbJoint getJoints(int index) {
        if (jointsBuilder_ == null) {
          return joints_.get(index);
        } else {
          return jointsBuilder_.getMessage(index);
        }
      }
      public Builder setJoints(
          int index, org.box2d.proto.Box2D.PbJoint value) {
        if (jointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJointsIsMutable();
          joints_.set(index, value);
          onChanged();
        } else {
          jointsBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setJoints(
          int index, org.box2d.proto.Box2D.PbJoint.Builder builderForValue) {
        if (jointsBuilder_ == null) {
          ensureJointsIsMutable();
          joints_.set(index, builderForValue.build());
          onChanged();
        } else {
          jointsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addJoints(org.box2d.proto.Box2D.PbJoint value) {
        if (jointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJointsIsMutable();
          joints_.add(value);
          onChanged();
        } else {
          jointsBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addJoints(
          int index, org.box2d.proto.Box2D.PbJoint value) {
        if (jointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJointsIsMutable();
          joints_.add(index, value);
          onChanged();
        } else {
          jointsBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addJoints(
          org.box2d.proto.Box2D.PbJoint.Builder builderForValue) {
        if (jointsBuilder_ == null) {
          ensureJointsIsMutable();
          joints_.add(builderForValue.build());
          onChanged();
        } else {
          jointsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addJoints(
          int index, org.box2d.proto.Box2D.PbJoint.Builder builderForValue) {
        if (jointsBuilder_ == null) {
          ensureJointsIsMutable();
          joints_.add(index, builderForValue.build());
          onChanged();
        } else {
          jointsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllJoints(
          java.lang.Iterable<? extends org.box2d.proto.Box2D.PbJoint> values) {
        if (jointsBuilder_ == null) {
          ensureJointsIsMutable();
          super.addAll(values, joints_);
          onChanged();
        } else {
          jointsBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearJoints() {
        if (jointsBuilder_ == null) {
          joints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          jointsBuilder_.clear();
        }
        return this;
      }
      public Builder removeJoints(int index) {
        if (jointsBuilder_ == null) {
          ensureJointsIsMutable();
          joints_.remove(index);
          onChanged();
        } else {
          jointsBuilder_.remove(index);
        }
        return this;
      }
      public org.box2d.proto.Box2D.PbJoint.Builder getJointsBuilder(
          int index) {
        return getJointsFieldBuilder().getBuilder(index);
      }
      public org.box2d.proto.Box2D.PbJointOrBuilder getJointsOrBuilder(
          int index) {
        if (jointsBuilder_ == null) {
          return joints_.get(index);  } else {
          return jointsBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends org.box2d.proto.Box2D.PbJointOrBuilder> 
           getJointsOrBuilderList() {
        if (jointsBuilder_ != null) {
          return jointsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(joints_);
        }
      }
      public org.box2d.proto.Box2D.PbJoint.Builder addJointsBuilder() {
        return getJointsFieldBuilder().addBuilder(
            org.box2d.proto.Box2D.PbJoint.getDefaultInstance());
      }
      public org.box2d.proto.Box2D.PbJoint.Builder addJointsBuilder(
          int index) {
        return getJointsFieldBuilder().addBuilder(
            index, org.box2d.proto.Box2D.PbJoint.getDefaultInstance());
      }
      public java.util.List<org.box2d.proto.Box2D.PbJoint.Builder> 
           getJointsBuilderList() {
        return getJointsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.box2d.proto.Box2D.PbJoint, org.box2d.proto.Box2D.PbJoint.Builder, org.box2d.proto.Box2D.PbJointOrBuilder> 
          getJointsFieldBuilder() {
        if (jointsBuilder_ == null) {
          jointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.box2d.proto.Box2D.PbJoint, org.box2d.proto.Box2D.PbJoint.Builder, org.box2d.proto.Box2D.PbJointOrBuilder>(
                  joints_,
                  ((bitField0_ & 0x00000100) == 0x00000100),
                  getParentForChildren(),
                  isClean());
          joints_ = null;
        }
        return jointsBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:box2d.PbWorld)
    }
    
    static {
      defaultInstance = new PbWorld(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:box2d.PbWorld)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbVec2_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbVec2_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbFilter_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbFilter_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbShape_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbShape_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbFixture_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbFixture_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbJoint_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbJoint_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbBody_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbBody_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_box2d_PbWorld_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_box2d_PbWorld_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n$src/main/resources/proto/box2d.proto\022\005" +
      "box2d\"\036\n\006PbVec2\022\t\n\001x\030\001 \002(\002\022\t\n\001y\030\002 \002(\002\"I\n" +
      "\010PbFilter\022\025\n\rcategory_bits\030\001 \001(\005\022\021\n\tmask" +
      "_bits\030\002 \001(\005\022\023\n\013group_index\030\003 \001(\005\"\307\001\n\007PbS" +
      "hape\022\013\n\003tag\030\001 \001(\003\022 \n\004type\030\002 \002(\0162\022.box2d." +
      "PbShapeType\022\035\n\006center\030\n \001(\0132\r.box2d.PbVe" +
      "c2\022\016\n\006radius\030\013 \001(\002\022\035\n\006points\030\024 \003(\0132\r.box" +
      "2d.PbVec2\022\036\n\007normals\030\025 \003(\0132\r.box2d.PbVec" +
      "2\022\037\n\010centroid\030\026 \001(\0132\r.box2d.PbVec2\"\240\001\n\tP" +
      "bFixture\022\013\n\003tag\030\001 \001(\003\022\023\n\013restitution\030\002 \001",
      "(\002\022\020\n\010friction\030\003 \001(\002\022\017\n\007density\030\004 \001(\002\022\016\n" +
      "\006sensor\030\005 \001(\010\022\037\n\006filter\030\n \001(\0132\017.box2d.Pb" +
      "Filter\022\035\n\005shape\030\013 \001(\0132\016.box2d.PbShape\"\350\006" +
      "\n\007PbJoint\022\013\n\003tag\030\001 \001(\003\022 \n\004type\030\002 \002(\0162\022.b" +
      "ox2d.PbJointType\022\016\n\006body_a\030\003 \001(\005\022\016\n\006body" +
      "_b\030\004 \001(\005\022\030\n\020collideConnected\030\005 \001(\010\022%\n\016lo" +
      "cal_anchor_a\030\006 \001(\0132\r.box2d.PbVec2\022%\n\016loc" +
      "al_anchor_b\030\007 \001(\0132\r.box2d.PbVec2\022\021\n\tref_" +
      "angle\030\n \001(\002\022\024\n\014enable_limit\030\014 \001(\010\022\023\n\013low" +
      "er_limit\030\r \001(\002\022\023\n\013upper_limit\030\016 \001(\002\022\024\n\014e",
      "nable_motor\030\017 \001(\010\022\023\n\013motor_speed\030\020 \001(\002\022\030" +
      "\n\020max_motor_torque\030\021 \001(\002\022#\n\014local_axis_a" +
      "\030\024 \001(\0132\r.box2d.PbVec2\022\027\n\017max_motor_force" +
      "\030\025 \001(\002\022\016\n\006length\030\036 \001(\002\022\021\n\tfrequency\030\037 \001(" +
      "\002\022\025\n\rdamping_ratio\030  \001(\002\022&\n\017ground_ancho" +
      "r_a\030( \001(\0132\r.box2d.PbVec2\022&\n\017ground_ancho" +
      "r_b\030) \001(\0132\r.box2d.PbVec2\022\020\n\010length_a\030* \001" +
      "(\002\022\020\n\010length_b\030+ \001(\002\022\r\n\005ratio\030, \001(\002\022\024\n\014m" +
      "ax_length_a\030- \001(\002\022\024\n\014max_length_b\030. \001(\002\022" +
      "\035\n\006target\0302 \001(\0132\r.box2d.PbVec2\022\021\n\tmax_fo",
      "rce\0303 \001(\002\022\016\n\006joint1\030= \001(\005\022\016\n\006joint2\030> \001(" +
      "\005\022\030\n\020spring_frequency\030F \001(\002\022\034\n\024spring_da" +
      "mping_ratio\030G \001(\002\022\022\n\nmax_torque\030Z \001(\002\022\022\n" +
      "\nmax_length\030d \001(\002\022\016\n\006bodies\030n \003(\005\022\016\n\006joi" +
      "nts\030o \003(\005\022\025\n\rtarget_volume\030p \001(\002\"\267\003\n\006PbB" +
      "ody\022\013\n\003tag\030\001 \001(\003\022\037\n\004type\030\002 \002(\0162\021.box2d.P" +
      "bBodyType\022\037\n\010position\030\n \001(\0132\r.box2d.PbVe" +
      "c2\022\r\n\005angle\030\013 \001(\002\022&\n\017linear_velocity\030\014 \001" +
      "(\0132\r.box2d.PbVec2\022\030\n\020angular_velocity\030\r " +
      "\001(\002\022\034\n\005force\030\016 \001(\0132\r.box2d.PbVec2\022\016\n\006tor",
      "que\030\017 \001(\002\022\014\n\004mass\030\020 \001(\002\022\t\n\001I\030\021 \001(\002\022\026\n\016li" +
      "near_damping\0302 \001(\002\022\027\n\017angular_damping\0303 " +
      "\001(\002\022\025\n\rgravity_scale\0304 \001(\002\022\016\n\006bullet\0305 \001" +
      "(\010\022\023\n\013allow_sleep\0306 \001(\010\022\r\n\005awake\0307 \001(\010\022\016" +
      "\n\006active\0308 \001(\010\022\026\n\016fixed_rotation\0309 \001(\010\022\"" +
      "\n\010fixtures\030d \003(\0132\020.box2d.PbFixture\"\356\001\n\007P" +
      "bWorld\022\013\n\003tag\030\001 \001(\003\022\036\n\007gravity\030\002 \001(\0132\r.b" +
      "ox2d.PbVec2\022\023\n\013allow_sleep\030\003 \001(\010\022\031\n\021auto" +
      "_clear_forces\030\004 \001(\010\022\025\n\rwarm_starting\030\005 \001" +
      "(\010\022\032\n\022continuous_physics\030\006 \001(\010\022\024\n\014sub_st",
      "epping\030\007 \001(\010\022\035\n\006bodies\030\024 \003(\0132\r.box2d.PbB" +
      "ody\022\036\n\006joints\030\025 \003(\0132\016.box2d.PbJoint*4\n\nP" +
      "bBodyType\022\n\n\006STATIC\020\000\022\013\n\007DYNAMIC\020\001\022\r\n\tKI" +
      "NEMATIC\020\002*:\n\013PbShapeType\022\n\n\006CIRCLE\020\001\022\013\n\007" +
      "POLYGON\020\002\022\010\n\004EDGE\020\003\022\010\n\004LOOP\020\004*\245\001\n\013PbJoin" +
      "tType\022\014\n\010DISTANCE\020\001\022\014\n\010REVOLUTE\020\002\022\r\n\tPRI" +
      "SMATIC\020\003\022\n\n\006PULLEY\020\004\022\t\n\005MOUSE\020\005\022\010\n\004GEAR\020" +
      "\006\022\t\n\005WHEEL\020\007\022\010\n\004WELD\020\010\022\014\n\010FRICTION\020\t\022\010\n\004" +
      "ROPE\020\n\022\023\n\017CONSTANT_VOLUME\020\013\022\010\n\004LINE\020\014B\030\n" +
      "\017org.box2d.protoB\005Box2D"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_box2d_PbVec2_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_box2d_PbVec2_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbVec2_descriptor,
              new java.lang.String[] { "X", "Y", },
              org.box2d.proto.Box2D.PbVec2.class,
              org.box2d.proto.Box2D.PbVec2.Builder.class);
          internal_static_box2d_PbFilter_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_box2d_PbFilter_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbFilter_descriptor,
              new java.lang.String[] { "CategoryBits", "MaskBits", "GroupIndex", },
              org.box2d.proto.Box2D.PbFilter.class,
              org.box2d.proto.Box2D.PbFilter.Builder.class);
          internal_static_box2d_PbShape_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_box2d_PbShape_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbShape_descriptor,
              new java.lang.String[] { "Tag", "Type", "Center", "Radius", "Points", "Normals", "Centroid", },
              org.box2d.proto.Box2D.PbShape.class,
              org.box2d.proto.Box2D.PbShape.Builder.class);
          internal_static_box2d_PbFixture_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_box2d_PbFixture_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbFixture_descriptor,
              new java.lang.String[] { "Tag", "Restitution", "Friction", "Density", "Sensor", "Filter", "Shape", },
              org.box2d.proto.Box2D.PbFixture.class,
              org.box2d.proto.Box2D.PbFixture.Builder.class);
          internal_static_box2d_PbJoint_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_box2d_PbJoint_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbJoint_descriptor,
              new java.lang.String[] { "Tag", "Type", "BodyA", "BodyB", "CollideConnected", "LocalAnchorA", "LocalAnchorB", "RefAngle", "EnableLimit", "LowerLimit", "UpperLimit", "EnableMotor", "MotorSpeed", "MaxMotorTorque", "LocalAxisA", "MaxMotorForce", "Length", "Frequency", "DampingRatio", "GroundAnchorA", "GroundAnchorB", "LengthA", "LengthB", "Ratio", "MaxLengthA", "MaxLengthB", "Target", "MaxForce", "Joint1", "Joint2", "SpringFrequency", "SpringDampingRatio", "MaxTorque", "MaxLength", "Bodies", "Joints", "TargetVolume", },
              org.box2d.proto.Box2D.PbJoint.class,
              org.box2d.proto.Box2D.PbJoint.Builder.class);
          internal_static_box2d_PbBody_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_box2d_PbBody_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbBody_descriptor,
              new java.lang.String[] { "Tag", "Type", "Position", "Angle", "LinearVelocity", "AngularVelocity", "Force", "Torque", "Mass", "I", "LinearDamping", "AngularDamping", "GravityScale", "Bullet", "AllowSleep", "Awake", "Active", "FixedRotation", "Fixtures", },
              org.box2d.proto.Box2D.PbBody.class,
              org.box2d.proto.Box2D.PbBody.Builder.class);
          internal_static_box2d_PbWorld_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_box2d_PbWorld_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_box2d_PbWorld_descriptor,
              new java.lang.String[] { "Tag", "Gravity", "AllowSleep", "AutoClearForces", "WarmStarting", "ContinuousPhysics", "SubStepping", "Bodies", "Joints", },
              org.box2d.proto.Box2D.PbWorld.class,
              org.box2d.proto.Box2D.PbWorld.Builder.class);
          return null;
        }
      }