gt:       return PARSER.parseFrom(data, extensionRegistry);
context: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: structure.proto
  
  package com.jmpspace.contracts.SpaceServer;
  
  public final class StructureOuterClass {
    private StructureOuterClass() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface ArmorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:structure.Armor)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int32 width = 1;</code>
       */
      boolean hasWidth();
      /**
       * <code>required int32 width = 1;</code>
       */
      int getWidth();
  
      /**
       * <code>required int32 length = 2;</code>
       */
      boolean hasLength();
      /**
       * <code>required int32 length = 2;</code>
       */
      int getLength();
    }
    /**
     * Protobuf type {@code structure.Armor}
     */
    public static final class Armor extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:structure.Armor)
        ArmorOrBuilder {
      // Use Armor.newBuilder() to construct.
      private Armor(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Armor(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
  
      private static final Armor defaultInstance;
      public static Armor getDefaultInstance() {
        return defaultInstance;
      }
  
      public Armor getDefaultInstanceForType() {
        return defaultInstance;
      }
  
      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Armor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                width_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                length_ = input.readInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Armor_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Armor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.Builder.class);
      }
  
      public static com.google.protobuf.Parser<Armor> PARSER =
          new com.google.protobuf.AbstractParser<Armor>() {
        public Armor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Armor(input, extensionRegistry);
        }
      };
  
      @java.lang.Override
      public com.google.protobuf.Parser<Armor> getParserForType() {
        return PARSER;
      }
  
      private int bitField0_;
      public static final int WIDTH_FIELD_NUMBER = 1;
      private int width_;
      /**
       * <code>required int32 width = 1;</code>
       */
      public boolean hasWidth() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 width = 1;</code>
       */
      public int getWidth() {
        return width_;
      }
  
      public static final int LENGTH_FIELD_NUMBER = 2;
      private int length_;
      /**
       * <code>required int32 length = 2;</code>
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 length = 2;</code>
       */
      public int getLength() {
        return length_;
      }
  
      private void initFields() {
        width_ = 0;
        length_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasWidth()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLength()) {
          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.writeInt32(1, width_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, length_);
        }
        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
            .computeInt32Size(1, width_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, length_);
        }
        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 com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
  
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor 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;
      }
      /**
       * Protobuf type {@code structure.Armor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:structure.Armor)
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.ArmorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Armor_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Armor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.Builder.class);
        }
  
        // Construct using com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }
  
        public Builder clear() {
          super.clear();
          width_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          length_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Armor_descriptor;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor getDefaultInstanceForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.getDefaultInstance();
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor build() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor buildPartial() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor result = new com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.width_ = width_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.length_ = length_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor) {
            return mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor other) {
          if (other == com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor.getDefaultInstance()) return this;
          if (other.hasWidth()) {
            setWidth(other.getWidth());
          }
          if (other.hasLength()) {
            setLength(other.getLength());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasWidth()) {
            
            return false;
          }
          if (!hasLength()) {
            
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Armor) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int width_ ;
        /**
         * <code>required int32 width = 1;</code>
         */
        public boolean hasWidth() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public int getWidth() {
          return width_;
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public Builder setWidth(int value) {
          bitField0_ |= 0x00000001;
          width_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public Builder clearWidth() {
          bitField0_ = (bitField0_ & ~0x00000001);
          width_ = 0;
          onChanged();
          return this;
        }
  
        private int length_ ;
        /**
         * <code>required int32 length = 2;</code>
         */
        public boolean hasLength() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public int getLength() {
          return length_;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder setLength(int value) {
          bitField0_ |= 0x00000002;
          length_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder clearLength() {
          bitField0_ = (bitField0_ & ~0x00000002);
          length_ = 0;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:structure.Armor)
      }
  
      static {
        defaultInstance = new Armor(true);
        defaultInstance.initFields();
      }
  
      // @@protoc_insertion_point(class_scope:structure.Armor)
    }
  
    public interface EngineOrBuilder extends
        // @@protoc_insertion_point(interface_extends:structure.Engine)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int32 radius = 1;</code>
       */
      boolean hasRadius();
      /**
       * <code>required int32 radius = 1;</code>
       */
      int getRadius();
  
      /**
       * <code>required int32 length = 2;</code>
       */
      boolean hasLength();
      /**
       * <code>required int32 length = 2;</code>
       */
      int getLength();
  
      /**
       * <code>required int32 group = 3;</code>
       */
      boolean hasGroup();
      /**
       * <code>required int32 group = 3;</code>
       */
      int getGroup();
    }
    /**
     * Protobuf type {@code structure.Engine}
     */
    public static final class Engine extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:structure.Engine)
        EngineOrBuilder {
      // Use Engine.newBuilder() to construct.
      private Engine(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Engine(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
  
      private static final Engine defaultInstance;
      public static Engine getDefaultInstance() {
        return defaultInstance;
      }
  
      public Engine getDefaultInstanceForType() {
        return defaultInstance;
      }
  
      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Engine(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                radius_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                length_ = input.readInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                group_ = input.readInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Engine_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Engine_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.Builder.class);
      }
  
      public static com.google.protobuf.Parser<Engine> PARSER =
          new com.google.protobuf.AbstractParser<Engine>() {
        public Engine parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Engine(input, extensionRegistry);
        }
      };
  
      @java.lang.Override
      public com.google.protobuf.Parser<Engine> getParserForType() {
        return PARSER;
      }
  
      private int bitField0_;
      public static final int RADIUS_FIELD_NUMBER = 1;
      private int radius_;
      /**
       * <code>required int32 radius = 1;</code>
       */
      public boolean hasRadius() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 radius = 1;</code>
       */
      public int getRadius() {
        return radius_;
      }
  
      public static final int LENGTH_FIELD_NUMBER = 2;
      private int length_;
      /**
       * <code>required int32 length = 2;</code>
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 length = 2;</code>
       */
      public int getLength() {
        return length_;
      }
  
      public static final int GROUP_FIELD_NUMBER = 3;
      private int group_;
      /**
       * <code>required int32 group = 3;</code>
       */
      public boolean hasGroup() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 group = 3;</code>
       */
      public int getGroup() {
        return group_;
      }
  
      private void initFields() {
        radius_ = 0;
        length_ = 0;
        group_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasRadius()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLength()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasGroup()) {
          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.writeInt32(1, radius_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, length_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, group_);
        }
        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
            .computeInt32Size(1, radius_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, length_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, group_);
        }
        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 com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
  
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine 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;
      }
      /**
       * Protobuf type {@code structure.Engine}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:structure.Engine)
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.EngineOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Engine_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Engine_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.Builder.class);
        }
  
        // Construct using com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }
  
        public Builder clear() {
          super.clear();
          radius_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          length_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          group_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Engine_descriptor;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine getDefaultInstanceForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.getDefaultInstance();
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine build() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine buildPartial() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine result = new com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.radius_ = radius_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.length_ = length_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.group_ = group_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine) {
            return mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine other) {
          if (other == com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine.getDefaultInstance()) return this;
          if (other.hasRadius()) {
            setRadius(other.getRadius());
          }
          if (other.hasLength()) {
            setLength(other.getLength());
          }
          if (other.hasGroup()) {
            setGroup(other.getGroup());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasRadius()) {
            
            return false;
          }
          if (!hasLength()) {
            
            return false;
          }
          if (!hasGroup()) {
            
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Engine) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int radius_ ;
        /**
         * <code>required int32 radius = 1;</code>
         */
        public boolean hasRadius() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 radius = 1;</code>
         */
        public int getRadius() {
          return radius_;
        }
        /**
         * <code>required int32 radius = 1;</code>
         */
        public Builder setRadius(int value) {
          bitField0_ |= 0x00000001;
          radius_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 radius = 1;</code>
         */
        public Builder clearRadius() {
          bitField0_ = (bitField0_ & ~0x00000001);
          radius_ = 0;
          onChanged();
          return this;
        }
  
        private int length_ ;
        /**
         * <code>required int32 length = 2;</code>
         */
        public boolean hasLength() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public int getLength() {
          return length_;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder setLength(int value) {
          bitField0_ |= 0x00000002;
          length_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder clearLength() {
          bitField0_ = (bitField0_ & ~0x00000002);
          length_ = 0;
          onChanged();
          return this;
        }
  
        private int group_ ;
        /**
         * <code>required int32 group = 3;</code>
         */
        public boolean hasGroup() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required int32 group = 3;</code>
         */
        public int getGroup() {
          return group_;
        }
        /**
         * <code>required int32 group = 3;</code>
         */
        public Builder setGroup(int value) {
          bitField0_ |= 0x00000004;
          group_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 group = 3;</code>
         */
        public Builder clearGroup() {
          bitField0_ = (bitField0_ & ~0x00000004);
          group_ = 0;
          onChanged();
          return this;
        }
  
        // @@protoc_insertion_point(builder_scope:structure.Engine)
      }
  
      static {
        defaultInstance = new Engine(true);
        defaultInstance.initFields();
      }
  
      // @@protoc_insertion_point(class_scope:structure.Engine)
    }
  
    public interface PlatformOrBuilder extends
        // @@protoc_insertion_point(interface_extends:structure.Platform)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int32 width = 1;</code>
       */
      boolean hasWidth();
      /**
       * <code>required int32 width = 1;</code>
       */
      int getWidth();
  
      /**
       * <code>required int32 length = 2;</code>
       */
      boolean hasLength();
      /**
       * <code>required int32 length = 2;</code>
       */
      int getLength();
  
      /**
       * <code>required bool pressurized = 3;</code>
       */
      boolean hasPressurized();
      /**
       * <code>required bool pressurized = 3;</code>
       */
      boolean getPressurized();
  
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> 
          getPlacedItemsList();
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem getPlacedItems(int index);
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      int getPlacedItemsCount();
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      java.util.List<? extends com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder> 
          getPlacedItemsOrBuilderList();
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder getPlacedItemsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code structure.Platform}
     */
    public static final class Platform extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:structure.Platform)
        PlatformOrBuilder {
      // Use Platform.newBuilder() to construct.
      private Platform(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Platform(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
  
      private static final Platform defaultInstance;
      public static Platform getDefaultInstance() {
        return defaultInstance;
      }
  
      public Platform getDefaultInstanceForType() {
        return defaultInstance;
      }
  
      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Platform(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                width_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                length_ = input.readInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                pressurized_ = input.readBool();
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  placedItems_ = new java.util.ArrayList<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem>();
                  mutable_bitField0_ |= 0x00000008;
                }
                placedItems_.add(input.readMessage(com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            placedItems_ = java.util.Collections.unmodifiableList(placedItems_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Platform_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Platform_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.Builder.class);
      }
  
      public static com.google.protobuf.Parser<Platform> PARSER =
          new com.google.protobuf.AbstractParser<Platform>() {
        public Platform parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Platform(input, extensionRegistry);
        }
      };
  
      @java.lang.Override
      public com.google.protobuf.Parser<Platform> getParserForType() {
        return PARSER;
      }
  
      private int bitField0_;
      public static final int WIDTH_FIELD_NUMBER = 1;
      private int width_;
      /**
       * <code>required int32 width = 1;</code>
       */
      public boolean hasWidth() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 width = 1;</code>
       */
      public int getWidth() {
        return width_;
      }
  
      public static final int LENGTH_FIELD_NUMBER = 2;
      private int length_;
      /**
       * <code>required int32 length = 2;</code>
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 length = 2;</code>
       */
      public int getLength() {
        return length_;
      }
  
      public static final int PRESSURIZED_FIELD_NUMBER = 3;
      private boolean pressurized_;
      /**
       * <code>required bool pressurized = 3;</code>
       */
      public boolean hasPressurized() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool pressurized = 3;</code>
       */
      public boolean getPressurized() {
        return pressurized_;
      }
  
      public static final int PLACEDITEMS_FIELD_NUMBER = 4;
      private java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> placedItems_;
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      public java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> getPlacedItemsList() {
        return placedItems_;
      }
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      public java.util.List<? extends com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder> 
          getPlacedItemsOrBuilderList() {
        return placedItems_;
      }
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      public int getPlacedItemsCount() {
        return placedItems_.size();
      }
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem getPlacedItems(int index) {
        return placedItems_.get(index);
      }
      /**
       * <code>repeated .structure.PlacedItem placedItems = 4;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder getPlacedItemsOrBuilder(
          int index) {
        return placedItems_.get(index);
      }
  
      private void initFields() {
        width_ = 0;
        length_ = 0;
        pressurized_ = false;
        placedItems_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasWidth()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLength()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasPressurized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getPlacedItemsCount(); i++) {
          if (!getPlacedItems(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.writeInt32(1, width_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, length_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, pressurized_);
        }
        for (int i = 0; i < placedItems_.size(); i++) {
          output.writeMessage(4, placedItems_.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
            .computeInt32Size(1, width_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, length_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, pressurized_);
        }
        for (int i = 0; i < placedItems_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, placedItems_.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 com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
  
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform 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;
      }
      /**
       * Protobuf type {@code structure.Platform}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:structure.Platform)
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlatformOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Platform_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Platform_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.Builder.class);
        }
  
        // Construct using com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getPlacedItemsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
  
        public Builder clear() {
          super.clear();
          width_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          length_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          pressurized_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          if (placedItemsBuilder_ == null) {
            placedItems_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            placedItemsBuilder_.clear();
          }
          return this;
        }
  
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Platform_descriptor;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform getDefaultInstanceForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.getDefaultInstance();
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform build() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform buildPartial() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform result = new com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.width_ = width_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.length_ = length_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.pressurized_ = pressurized_;
          if (placedItemsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              placedItems_ = java.util.Collections.unmodifiableList(placedItems_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.placedItems_ = placedItems_;
          } else {
            result.placedItems_ = placedItemsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform) {
            return mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform other) {
          if (other == com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform.getDefaultInstance()) return this;
          if (other.hasWidth()) {
            setWidth(other.getWidth());
          }
          if (other.hasLength()) {
            setLength(other.getLength());
          }
          if (other.hasPressurized()) {
            setPressurized(other.getPressurized());
          }
          if (placedItemsBuilder_ == null) {
            if (!other.placedItems_.isEmpty()) {
              if (placedItems_.isEmpty()) {
                placedItems_ = other.placedItems_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensurePlacedItemsIsMutable();
                placedItems_.addAll(other.placedItems_);
              }
              onChanged();
            }
          } else {
            if (!other.placedItems_.isEmpty()) {
              if (placedItemsBuilder_.isEmpty()) {
                placedItemsBuilder_.dispose();
                placedItemsBuilder_ = null;
                placedItems_ = other.placedItems_;
                bitField0_ = (bitField0_ & ~0x00000008);
                placedItemsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPlacedItemsFieldBuilder() : null;
              } else {
                placedItemsBuilder_.addAllMessages(other.placedItems_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasWidth()) {
            
            return false;
          }
          if (!hasLength()) {
            
            return false;
          }
          if (!hasPressurized()) {
            
            return false;
          }
          for (int i = 0; i < getPlacedItemsCount(); i++) {
            if (!getPlacedItems(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Platform) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int width_ ;
        /**
         * <code>required int32 width = 1;</code>
         */
        public boolean hasWidth() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public int getWidth() {
          return width_;
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public Builder setWidth(int value) {
          bitField0_ |= 0x00000001;
          width_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 width = 1;</code>
         */
        public Builder clearWidth() {
          bitField0_ = (bitField0_ & ~0x00000001);
          width_ = 0;
          onChanged();
          return this;
        }
  
        private int length_ ;
        /**
         * <code>required int32 length = 2;</code>
         */
        public boolean hasLength() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public int getLength() {
          return length_;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder setLength(int value) {
          bitField0_ |= 0x00000002;
          length_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 length = 2;</code>
         */
        public Builder clearLength() {
          bitField0_ = (bitField0_ & ~0x00000002);
          length_ = 0;
          onChanged();
          return this;
        }
  
        private boolean pressurized_ ;
        /**
         * <code>required bool pressurized = 3;</code>
         */
        public boolean hasPressurized() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required bool pressurized = 3;</code>
         */
        public boolean getPressurized() {
          return pressurized_;
        }
        /**
         * <code>required bool pressurized = 3;</code>
         */
        public Builder setPressurized(boolean value) {
          bitField0_ |= 0x00000004;
          pressurized_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required bool pressurized = 3;</code>
         */
        public Builder clearPressurized() {
          bitField0_ = (bitField0_ & ~0x00000004);
          pressurized_ = false;
          onChanged();
          return this;
        }
  
        private java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> placedItems_ =
          java.util.Collections.emptyList();
        private void ensurePlacedItemsIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            placedItems_ = new java.util.ArrayList<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem>(placedItems_);
            bitField0_ |= 0x00000008;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilder<
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder> placedItemsBuilder_;
  
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> getPlacedItemsList() {
          if (placedItemsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(placedItems_);
          } else {
            return placedItemsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public int getPlacedItemsCount() {
          if (placedItemsBuilder_ == null) {
            return placedItems_.size();
          } else {
            return placedItemsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem getPlacedItems(int index) {
          if (placedItemsBuilder_ == null) {
            return placedItems_.get(index);
          } else {
            return placedItemsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder setPlacedItems(
            int index, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem value) {
          if (placedItemsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlacedItemsIsMutable();
            placedItems_.set(index, value);
            onChanged();
          } else {
            placedItemsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder setPlacedItems(
            int index, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder builderForValue) {
          if (placedItemsBuilder_ == null) {
            ensurePlacedItemsIsMutable();
            placedItems_.set(index, builderForValue.build());
            onChanged();
          } else {
            placedItemsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder addPlacedItems(com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem value) {
          if (placedItemsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlacedItemsIsMutable();
            placedItems_.add(value);
            onChanged();
          } else {
            placedItemsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder addPlacedItems(
            int index, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem value) {
          if (placedItemsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlacedItemsIsMutable();
            placedItems_.add(index, value);
            onChanged();
          } else {
            placedItemsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder addPlacedItems(
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder builderForValue) {
          if (placedItemsBuilder_ == null) {
            ensurePlacedItemsIsMutable();
            placedItems_.add(builderForValue.build());
            onChanged();
          } else {
            placedItemsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder addPlacedItems(
            int index, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder builderForValue) {
          if (placedItemsBuilder_ == null) {
            ensurePlacedItemsIsMutable();
            placedItems_.add(index, builderForValue.build());
            onChanged();
          } else {
            placedItemsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder addAllPlacedItems(
            java.lang.Iterable<? extends com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem> values) {
          if (placedItemsBuilder_ == null) {
            ensurePlacedItemsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, placedItems_);
            onChanged();
          } else {
            placedItemsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder clearPlacedItems() {
          if (placedItemsBuilder_ == null) {
            placedItems_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            placedItemsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public Builder removePlacedItems(int index) {
          if (placedItemsBuilder_ == null) {
            ensurePlacedItemsIsMutable();
            placedItems_.remove(index);
            onChanged();
          } else {
            placedItemsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder getPlacedItemsBuilder(
            int index) {
          return getPlacedItemsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder getPlacedItemsOrBuilder(
            int index) {
          if (placedItemsBuilder_ == null) {
            return placedItems_.get(index);  } else {
            return placedItemsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public java.util.List<? extends com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder> 
             getPlacedItemsOrBuilderList() {
          if (placedItemsBuilder_ != null) {
            return placedItemsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(placedItems_);
          }
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder addPlacedItemsBuilder() {
          return getPlacedItemsFieldBuilder().addBuilder(
              com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.getDefaultInstance());
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder addPlacedItemsBuilder(
            int index) {
          return getPlacedItemsFieldBuilder().addBuilder(
              index, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.getDefaultInstance());
        }
        /**
         * <code>repeated .structure.PlacedItem placedItems = 4;</code>
         */
        public java.util.List<com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder> 
             getPlacedItemsBuilderList() {
          return getPlacedItemsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder> 
            getPlacedItemsFieldBuilder() {
          if (placedItemsBuilder_ == null) {
            placedItemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder>(
                    placedItems_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            placedItems_ = null;
          }
          return placedItemsBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:structure.Platform)
      }
  
      static {
        defaultInstance = new Platform(true);
        defaultInstance.initFields();
      }
  
      // @@protoc_insertion_point(class_scope:structure.Platform)
    }
  
    public interface PlacedItemOrBuilder extends
        // @@protoc_insertion_point(interface_extends:structure.PlacedItem)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int32 offsetX = 1;</code>
       */
      boolean hasOffsetX();
      /**
       * <code>required int32 offsetX = 1;</code>
       */
      int getOffsetX();
  
      /**
       * <code>required int32 offsetY = 2;</code>
       */
      boolean hasOffsetY();
      /**
       * <code>required int32 offsetY = 2;</code>
       */
      int getOffsetY();
  
      /**
       * <code>required int32 orientation = 3;</code>
       */
      boolean hasOrientation();
      /**
       * <code>required int32 orientation = 3;</code>
       */
      int getOrientation();
  
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      boolean hasItem();
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item getItem();
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder getItemOrBuilder();
    }
    /**
     * Protobuf type {@code structure.PlacedItem}
     */
    public static final class PlacedItem extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:structure.PlacedItem)
        PlacedItemOrBuilder {
      // Use PlacedItem.newBuilder() to construct.
      private PlacedItem(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private PlacedItem(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
  
      private static final PlacedItem defaultInstance;
      public static PlacedItem getDefaultInstance() {
        return defaultInstance;
      }
  
      public PlacedItem getDefaultInstanceForType() {
        return defaultInstance;
      }
  
      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private PlacedItem(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                offsetX_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                offsetY_ = input.readInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                orientation_ = input.readInt32();
                break;
              }
              case 34: {
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) == 0x00000008)) {
                  subBuilder = item_.toBuilder();
                }
                item_ = input.readMessage(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(item_);
                  item_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_PlacedItem_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_PlacedItem_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder.class);
      }
  
      public static com.google.protobuf.Parser<PlacedItem> PARSER =
          new com.google.protobuf.AbstractParser<PlacedItem>() {
        public PlacedItem parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new PlacedItem(input, extensionRegistry);
        }
      };
  
      @java.lang.Override
      public com.google.protobuf.Parser<PlacedItem> getParserForType() {
        return PARSER;
      }
  
      private int bitField0_;
      public static final int OFFSETX_FIELD_NUMBER = 1;
      private int offsetX_;
      /**
       * <code>required int32 offsetX = 1;</code>
       */
      public boolean hasOffsetX() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 offsetX = 1;</code>
       */
      public int getOffsetX() {
        return offsetX_;
      }
  
      public static final int OFFSETY_FIELD_NUMBER = 2;
      private int offsetY_;
      /**
       * <code>required int32 offsetY = 2;</code>
       */
      public boolean hasOffsetY() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 offsetY = 2;</code>
       */
      public int getOffsetY() {
        return offsetY_;
      }
  
      public static final int ORIENTATION_FIELD_NUMBER = 3;
      private int orientation_;
      /**
       * <code>required int32 orientation = 3;</code>
       */
      public boolean hasOrientation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 orientation = 3;</code>
       */
      public int getOrientation() {
        return orientation_;
      }
  
      public static final int ITEM_FIELD_NUMBER = 4;
      private com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item item_;
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      public boolean hasItem() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item getItem() {
        return item_;
      }
      /**
       * <code>required .structure.Item item = 4;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder getItemOrBuilder() {
        return item_;
      }
  
      private void initFields() {
        offsetX_ = 0;
        offsetY_ = 0;
        orientation_ = 0;
        item_ = com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasOffsetX()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOffsetY()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrientation()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasItem()) {
          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.writeInt32(1, offsetX_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, offsetY_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, orientation_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, item_);
        }
        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
            .computeInt32Size(1, offsetX_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, offsetY_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, orientation_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, item_);
        }
        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 com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
  
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem 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;
      }
      /**
       * Protobuf type {@code structure.PlacedItem}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:structure.PlacedItem)
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItemOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_PlacedItem_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_PlacedItem_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.Builder.class);
        }
  
        // Construct using com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getItemFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
  
        public Builder clear() {
          super.clear();
          offsetX_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          offsetY_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          orientation_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          if (itemBuilder_ == null) {
            item_ = com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.getDefaultInstance();
          } else {
            itemBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_PlacedItem_descriptor;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem getDefaultInstanceForType() {
          return com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.getDefaultInstance();
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem build() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem buildPartial() {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem result = new com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.offsetX_ = offsetX_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.offsetY_ = offsetY_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.orientation_ = orientation_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (itemBuilder_ == null) {
            result.item_ = item_;
          } else {
            result.item_ = itemBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem) {
            return mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem other) {
          if (other == com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem.getDefaultInstance()) return this;
          if (other.hasOffsetX()) {
            setOffsetX(other.getOffsetX());
          }
          if (other.hasOffsetY()) {
            setOffsetY(other.getOffsetY());
          }
          if (other.hasOrientation()) {
            setOrientation(other.getOrientation());
          }
          if (other.hasItem()) {
            mergeItem(other.getItem());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasOffsetX()) {
            
            return false;
          }
          if (!hasOffsetY()) {
            
            return false;
          }
          if (!hasOrientation()) {
            
            return false;
          }
          if (!hasItem()) {
            
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.jmpspace.contracts.SpaceServer.StructureOuterClass.PlacedItem) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int offsetX_ ;
        /**
         * <code>required int32 offsetX = 1;</code>
         */
        public boolean hasOffsetX() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 offsetX = 1;</code>
         */
        public int getOffsetX() {
          return offsetX_;
        }
        /**
         * <code>required int32 offsetX = 1;</code>
         */
        public Builder setOffsetX(int value) {
          bitField0_ |= 0x00000001;
          offsetX_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 offsetX = 1;</code>
         */
        public Builder clearOffsetX() {
          bitField0_ = (bitField0_ & ~0x00000001);
          offsetX_ = 0;
          onChanged();
          return this;
        }
  
        private int offsetY_ ;
        /**
         * <code>required int32 offsetY = 2;</code>
         */
        public boolean hasOffsetY() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 offsetY = 2;</code>
         */
        public int getOffsetY() {
          return offsetY_;
        }
        /**
         * <code>required int32 offsetY = 2;</code>
         */
        public Builder setOffsetY(int value) {
          bitField0_ |= 0x00000002;
          offsetY_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 offsetY = 2;</code>
         */
        public Builder clearOffsetY() {
          bitField0_ = (bitField0_ & ~0x00000002);
          offsetY_ = 0;
          onChanged();
          return this;
        }
  
        private int orientation_ ;
        /**
         * <code>required int32 orientation = 3;</code>
         */
        public boolean hasOrientation() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required int32 orientation = 3;</code>
         */
        public int getOrientation() {
          return orientation_;
        }
        /**
         * <code>required int32 orientation = 3;</code>
         */
        public Builder setOrientation(int value) {
          bitField0_ |= 0x00000004;
          orientation_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 orientation = 3;</code>
         */
        public Builder clearOrientation() {
          bitField0_ = (bitField0_ & ~0x00000004);
          orientation_ = 0;
          onChanged();
          return this;
        }
  
        private com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item item_ = com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder> itemBuilder_;
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public boolean hasItem() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item getItem() {
          if (itemBuilder_ == null) {
            return item_;
          } else {
            return itemBuilder_.getMessage();
          }
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public Builder setItem(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item value) {
          if (itemBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            item_ = value;
            onChanged();
          } else {
            itemBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public Builder setItem(
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder builderForValue) {
          if (itemBuilder_ == null) {
            item_ = builderForValue.build();
            onChanged();
          } else {
            itemBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public Builder mergeItem(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item value) {
          if (itemBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                item_ != com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.getDefaultInstance()) {
              item_ =
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.newBuilder(item_).mergeFrom(value).buildPartial();
            } else {
              item_ = value;
            }
            onChanged();
          } else {
            itemBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public Builder clearItem() {
          if (itemBuilder_ == null) {
            item_ = com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.getDefaultInstance();
            onChanged();
          } else {
            itemBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder getItemBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getItemFieldBuilder().getBuilder();
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        public com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder getItemOrBuilder() {
          if (itemBuilder_ != null) {
            return itemBuilder_.getMessageOrBuilder();
          } else {
            return item_;
          }
        }
        /**
         * <code>required .structure.Item item = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder> 
            getItemFieldBuilder() {
          if (itemBuilder_ == null) {
            itemBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder, com.jmpspace.contracts.SpaceServer.StructureOuterClass.ItemOrBuilder>(
                    getItem(),
                    getParentForChildren(),
                    isClean());
            item_ = null;
          }
          return itemBuilder_;
        }
  
        // @@protoc_insertion_point(builder_scope:structure.PlacedItem)
      }
  
      static {
        defaultInstance = new PlacedItem(true);
        defaultInstance.initFields();
      }
  
      // @@protoc_insertion_point(class_scope:structure.PlacedItem)
    }
  
    public interface ItemOrBuilder extends
        // @@protoc_insertion_point(interface_extends:structure.Item)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      boolean hasChair();
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair getChair();
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.ChairOrBuilder getChairOrBuilder();
  
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      boolean hasCryoTube();
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube getCryoTube();
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTubeOrBuilder getCryoTubeOrBuilder();
  
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      boolean hasCrate();
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate getCrate();
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      com.jmpspace.contracts.SpaceServer.StructureOuterClass.CrateOrBuilder getCrateOrBuilder();
    }
    /**
     * Protobuf type {@code structure.Item}
     */
    public static final class Item extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:structure.Item)
        ItemOrBuilder {
      // Use Item.newBuilder() to construct.
      private Item(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Item(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
  
      private static final Item defaultInstance;
      public static Item getDefaultInstance() {
        return defaultInstance;
      }
  
      public Item getDefaultInstanceForType() {
        return defaultInstance;
      }
  
      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Item(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair.Builder subBuilder = null;
                if (itemCase_ == 1) {
                  subBuilder = ((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_).toBuilder();
                }
                item_ = input.readMessage(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_);
                  item_ = subBuilder.buildPartial();
                }
                itemCase_ = 1;
                break;
              }
              case 18: {
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube.Builder subBuilder = null;
                if (itemCase_ == 2) {
                  subBuilder = ((com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_).toBuilder();
                }
                item_ = input.readMessage(com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_);
                  item_ = subBuilder.buildPartial();
                }
                itemCase_ = 2;
                break;
              }
              case 26: {
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate.Builder subBuilder = null;
                if (itemCase_ == 3) {
                  subBuilder = ((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_).toBuilder();
                }
                item_ = input.readMessage(com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_);
                  item_ = subBuilder.buildPartial();
                }
                itemCase_ = 3;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Item_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.internal_static_structure_Item_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.class, com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item.Builder.class);
      }
  
      public static com.google.protobuf.Parser<Item> PARSER =
          new com.google.protobuf.AbstractParser<Item>() {
        public Item parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Item(input, extensionRegistry);
        }
      };
  
      @java.lang.Override
      public com.google.protobuf.Parser<Item> getParserForType() {
        return PARSER;
      }
  
      private int bitField0_;
      private int itemCase_ = 0;
      private java.lang.Object item_;
      public enum ItemCase
          implements com.google.protobuf.Internal.EnumLite {
        CHAIR(1),
        CRYOTUBE(2),
        CRATE(3),
        ITEM_NOT_SET(0);
        private int value = 0;
        private ItemCase(int value) {
          this.value = value;
        }
        public static ItemCase valueOf(int value) {
          switch (value) {
            case 1: return CHAIR;
            case 2: return CRYOTUBE;
            case 3: return CRATE;
            case 0: return ITEM_NOT_SET;
            default: throw new java.lang.IllegalArgumentException(
              "Value is undefined for this oneof enum.");
          }
        }
        public int getNumber() {
          return this.value;
        }
      };
  
      public ItemCase
      getItemCase() {
        return ItemCase.valueOf(
            itemCase_);
      }
  
      public static final int CHAIR_FIELD_NUMBER = 1;
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      public boolean hasChair() {
        return itemCase_ == 1;
      }
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair getChair() {
        if (itemCase_ == 1) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair.getDefaultInstance();
      }
      /**
       * <code>optional .structure.Chair chair = 1;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.ChairOrBuilder getChairOrBuilder() {
        if (itemCase_ == 1) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair.getDefaultInstance();
      }
  
      public static final int CRYOTUBE_FIELD_NUMBER = 2;
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      public boolean hasCryoTube() {
        return itemCase_ == 2;
      }
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube getCryoTube() {
        if (itemCase_ == 2) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube.getDefaultInstance();
      }
      /**
       * <code>optional .structure.CryoTube cryoTube = 2;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTubeOrBuilder getCryoTubeOrBuilder() {
        if (itemCase_ == 2) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube.getDefaultInstance();
      }
  
      public static final int CRATE_FIELD_NUMBER = 3;
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      public boolean hasCrate() {
        return itemCase_ == 3;
      }
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate getCrate() {
        if (itemCase_ == 3) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate.getDefaultInstance();
      }
      /**
       * <code>optional .structure.Crate crate = 3;</code>
       */
      public com.jmpspace.contracts.SpaceServer.StructureOuterClass.CrateOrBuilder getCrateOrBuilder() {
        if (itemCase_ == 3) {
           return (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_;
        }
        return com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate.getDefaultInstance();
      }
  
      private void initFields() {
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (itemCase_ == 1) {
          output.writeMessage(1, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_);
        }
        if (itemCase_ == 2) {
          output.writeMessage(2, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_);
        }
        if (itemCase_ == 3) {
          output.writeMessage(3, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_);
        }
        getUnknownFields().writeTo(output);
      }
  
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
  
        size = 0;
        if (itemCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Chair) item_);
        }
        if (itemCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.CryoTube) item_);
        }
        if (itemCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (com.jmpspace.contracts.SpaceServer.StructureOuterClass.Crate) item_);
        }
        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 com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.jmpspace.contracts.SpaceServer.StructureOuterClass.Item parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
  