// Generated by the protocol buffer compiler.  DO NOT EDIT!

package com.ociweb.jnb.protobuf.gen;

public final class CourseProtos {
  private CourseProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public static final class Person extends
      com.google.protobuf.GeneratedMessage {
    // Use Person.newBuilder() to construct.
    private Person() {}
    
    private static final Person defaultInstance = new Person();
    public static Person getDefaultInstance() {
      return defaultInstance;
    }
    
    public Person getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Person_descriptor;
    }
    
    @Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Person_fieldAccessorTable;
    }
    
    public static enum PhoneType {
      HOME(0, 0),
      WORK(1, 1),
      MOBILE(2, 2),
      OTHER(3, 3),
      ;
      
      
      public final int getNumber() { return value; }
      
      public static PhoneType valueOf(int value) {
        switch (value) {
          case 0: return HOME;
          case 1: return WORK;
          case 2: return MOBILE;
          case 3: return OTHER;
          default: return null;
        }
      }
      
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final PhoneType[] VALUES = {
        HOME, WORK, MOBILE, OTHER, 
      };
      public static PhoneType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int index;
      private final int value;
      private PhoneType(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.ociweb.jnb.protobuf.gen.CourseProtos.getDescriptor();
      }
    }
    
    public static final class Phone extends
        com.google.protobuf.GeneratedMessage {
      // Use Phone.newBuilder() to construct.
      private Phone() {}
      
      private static final Phone defaultInstance = new Phone();
      public static Phone getDefaultInstance() {
        return defaultInstance;
      }
      
      public Phone getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Person_Phone_descriptor;
      }
      
      @Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Person_Phone_fieldAccessorTable;
      }
      
      // required int32 id = 1;
      private boolean hasId;
      private int id_ = 0;
      public boolean hasId() { return hasId; }
      public int getId() { return id_; }
      
      // required string number = 2;
      private boolean hasNumber;
      private java.lang.String number_ = "";
      public boolean hasNumber() { return hasNumber; }
      public java.lang.String getNumber() { return number_; }
      
      // required .jnb.Person.PhoneType type = 3 [default = HOME];
      private boolean hasType;
      private com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType type_ = com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType.HOME;
      public boolean hasType() { return hasType; }
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType getType() { return type_; }
      
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistry extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistry extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistry extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistry extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return new Builder(); }
      public Builder newBuilderForType() { return new Builder(); }
      public static Builder newBuilder(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone prototype) {
        return new Builder().mergeFrom(prototype);
      }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        // Construct using com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.newBuilder()
        private Builder() {}
        
        com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone();
        
        @Override
        protected com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone internalGetResult() {
          return result;
        }
        
        @Override
        public Builder clear() {
          result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone();
          return this;
        }
        
        @Override
        public Builder clone() {
          return new Builder().mergeFrom(result);
        }
        
        @Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.getDescriptor();
        }
        
        public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone getDefaultInstanceForType() {
          return com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.getDefaultInstance();
        }
        
        public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone build() {
          if (!isInitialized()) {
            throw new com.google.protobuf.UninitializedMessageException(
              result);
          }
          return buildPartial();
        }
        
        private com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw new com.google.protobuf.UninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone buildPartial() {
          com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone returnMe = result;
          result = null;
          return returnMe;
        }
        
        
        // required int32 id = 1;
        public boolean hasId() {
          return result.hasId();
        }
        public int getId() {
          return result.getId();
        }
        public Builder setId(int value) {
          result.hasId = true;
          result.id_ = value;
          return this;
        }
        public Builder clearId() {
          result.hasId = false;
          result.id_ = 0;
          return this;
        }
        
        // required string number = 2;
        public boolean hasNumber() {
          return result.hasNumber();
        }
        public java.lang.String getNumber() {
          return result.getNumber();
        }
        public Builder setNumber(java.lang.String value) {
          result.hasNumber = true;
          result.number_ = value;
          return this;
        }
        public Builder clearNumber() {
          result.hasNumber = false;
          result.number_ = "";
          return this;
        }
        
        // required .jnb.Person.PhoneType type = 3 [default = HOME];
        public boolean hasType() {
          return result.hasType();
        }
        public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType getType() {
          return result.getType();
        }
        public Builder setType(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType value) {
          result.hasType = true;
          result.type_ = value;
          return this;
        }
        public Builder clearType() {
          result.hasType = false;
          result.type_ = com.ociweb.jnb.protobuf.gen.CourseProtos.Person.PhoneType.HOME;
          return this;
        }
      }
      
      static {
        com.ociweb.jnb.protobuf.gen.CourseProtos.getDescriptor();
      }
    }
    
    // required int32 id = 1;
    private boolean hasId;
    private int id_ = 0;
    public boolean hasId() { return hasId; }
    public int getId() { return id_; }
    
    // required string first_name = 2;
    private boolean hasFirstName;
    private java.lang.String firstName_ = "";
    public boolean hasFirstName() { return hasFirstName; }
    public java.lang.String getFirstName() { return firstName_; }
    
    // required string last_name = 3;
    private boolean hasLastName;
    private java.lang.String lastName_ = "";
    public boolean hasLastName() { return hasLastName; }
    public java.lang.String getLastName() { return lastName_; }
    
    // optional string email = 4;
    private boolean hasEmail;
    private java.lang.String email_ = "";
    public boolean hasEmail() { return hasEmail; }
    public java.lang.String getEmail() { return email_; }
    
    // repeated .jnb.Person.Phone phone = 5;
    private java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone> phone_ =
      java.util.Collections.emptyList();
    public java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone> getPhoneList() {
      return phone_;
    }
    public int getPhoneCount() { return phone_.size(); }
    public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone getPhone(int index) {
      return phone_.get(index);
    }
    
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Person parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return new Builder(); }
    public Builder newBuilderForType() { return new Builder(); }
    public static Builder newBuilder(com.ociweb.jnb.protobuf.gen.CourseProtos.Person prototype) {
      return new Builder().mergeFrom(prototype);
    }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      // Construct using com.ociweb.jnb.protobuf.gen.CourseProtos.Person.newBuilder()
      private Builder() {}
      
      com.ociweb.jnb.protobuf.gen.CourseProtos.Person result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Person();
      
      @Override
      protected com.ociweb.jnb.protobuf.gen.CourseProtos.Person internalGetResult() {
        return result;
      }
      
      @Override
      public Builder clear() {
        result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Person();
        return this;
      }
      
      @Override
      public Builder clone() {
        return new Builder().mergeFrom(result);
      }
      
      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDescriptor();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person getDefaultInstanceForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDefaultInstance();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person build() {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result);
        }
        return buildPartial();
      }
      
      private com.ociweb.jnb.protobuf.gen.CourseProtos.Person buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person buildPartial() {
        if (result.phone_ != java.util.Collections.EMPTY_LIST) {
          result.phone_ =
            java.util.Collections.unmodifiableList(result.phone_);
        }
        com.ociweb.jnb.protobuf.gen.CourseProtos.Person returnMe = result;
        result = null;
        return returnMe;
      }
      
      
      // required int32 id = 1;
      public boolean hasId() {
        return result.hasId();
      }
      public int getId() {
        return result.getId();
      }
      public Builder setId(int value) {
        result.hasId = true;
        result.id_ = value;
        return this;
      }
      public Builder clearId() {
        result.hasId = false;
        result.id_ = 0;
        return this;
      }
      
      // required string first_name = 2;
      public boolean hasFirstName() {
        return result.hasFirstName();
      }
      public java.lang.String getFirstName() {
        return result.getFirstName();
      }
      public Builder setFirstName(java.lang.String value) {
        result.hasFirstName = true;
        result.firstName_ = value;
        return this;
      }
      public Builder clearFirstName() {
        result.hasFirstName = false;
        result.firstName_ = "";
        return this;
      }
      
      // required string last_name = 3;
      public boolean hasLastName() {
        return result.hasLastName();
      }
      public java.lang.String getLastName() {
        return result.getLastName();
      }
      public Builder setLastName(java.lang.String value) {
        result.hasLastName = true;
        result.lastName_ = value;
        return this;
      }
      public Builder clearLastName() {
        result.hasLastName = false;
        result.lastName_ = "";
        return this;
      }
      
      // optional string email = 4;
      public boolean hasEmail() {
        return result.hasEmail();
      }
      public java.lang.String getEmail() {
        return result.getEmail();
      }
      public Builder setEmail(java.lang.String value) {
        result.hasEmail = true;
        result.email_ = value;
        return this;
      }
      public Builder clearEmail() {
        result.hasEmail = false;
        result.email_ = "";
        return this;
      }
      
      // repeated .jnb.Person.Phone phone = 5;
      public java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone> getPhoneList() {
        return java.util.Collections.unmodifiableList(result.phone_);
      }
      public int getPhoneCount() {
        return result.getPhoneCount();
      }
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone getPhone(int index) {
        return result.getPhone(index);
      }
      public Builder setPhone(int index, com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone value) {
        result.phone_.set(index, value);
        return this;
      }
      public Builder setPhone(int index, com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.Builder builderForValue) {
        result.phone_.set(index, builderForValue.build());
        return this;
      }
      public Builder addPhone(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone value) {
        if (result.phone_.isEmpty()) {
          result.phone_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone>();
        }
        result.phone_.add(value);
        return this;
      }
      public Builder addPhone(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.Builder builderForValue) {
        if (result.phone_.isEmpty()) {
          result.phone_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone>();
        }
        result.phone_.add(builderForValue.build());
        return this;
      }
      public Builder addAllPhone(
          java.lang.Iterable<? extends com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone> values) {
        if (result.phone_.isEmpty()) {
          result.phone_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone>();
        }
        super.addAll(values, result.phone_);
        return this;
      }
      public Builder clearPhone() {
        result.phone_ = java.util.Collections.emptyList();
        return this;
      }
    }
    
    static {
      com.ociweb.jnb.protobuf.gen.CourseProtos.getDescriptor();
    }
  }
  
  public static final class Course extends
      com.google.protobuf.GeneratedMessage {
    // Use Course.newBuilder() to construct.
    private Course() {}
    
    private static final Course defaultInstance = new Course();
    public static Course getDefaultInstance() {
      return defaultInstance;
    }
    
    public Course getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Course_descriptor;
    }
    
    @Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_Course_fieldAccessorTable;
    }
    
    // required int32 id = 1;
    private boolean hasId;
    private int id_ = 0;
    public boolean hasId() { return hasId; }
    public int getId() { return id_; }
    
    // required string number = 2;
    private boolean hasNumber;
    private java.lang.String number_ = "";
    public boolean hasNumber() { return hasNumber; }
    public java.lang.String getNumber() { return number_; }
    
    // required string name = 3;
    private boolean hasName;
    private java.lang.String name_ = "";
    public boolean hasName() { return hasName; }
    public java.lang.String getName() { return name_; }
    
    // required .jnb.Person instructor = 4;
    private boolean hasInstructor;
    private com.ociweb.jnb.protobuf.gen.CourseProtos.Person instructor_ = com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDefaultInstance();
    public boolean hasInstructor() { return hasInstructor; }
    public com.ociweb.jnb.protobuf.gen.CourseProtos.Person getInstructor() { return instructor_; }
    
    // optional string room_number = 5;
    private boolean hasRoomNumber;
    private java.lang.String roomNumber_ = "";
    public boolean hasRoomNumber() { return hasRoomNumber; }
    public java.lang.String getRoomNumber() { return roomNumber_; }
    
    // repeated .jnb.Person student = 6;
    private java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person> student_ =
      java.util.Collections.emptyList();
    public java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person> getStudentList() {
      return student_;
    }
    public int getStudentCount() { return student_.size(); }
    public com.ociweb.jnb.protobuf.gen.CourseProtos.Person getStudent(int index) {
      return student_.get(index);
    }
    
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.Course parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return new Builder(); }
    public Builder newBuilderForType() { return new Builder(); }
    public static Builder newBuilder(com.ociweb.jnb.protobuf.gen.CourseProtos.Course prototype) {
      return new Builder().mergeFrom(prototype);
    }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      // Construct using com.ociweb.jnb.protobuf.gen.CourseProtos.Course.newBuilder()
      private Builder() {}
      
      com.ociweb.jnb.protobuf.gen.CourseProtos.Course result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Course();
      
      @Override
      protected com.ociweb.jnb.protobuf.gen.CourseProtos.Course internalGetResult() {
        return result;
      }
      
      @Override
      public Builder clear() {
        result = new com.ociweb.jnb.protobuf.gen.CourseProtos.Course();
        return this;
      }
      
      @Override
      public Builder clone() {
        return new Builder().mergeFrom(result);
      }
      
      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.Course.getDescriptor();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Course getDefaultInstanceForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.Course.getDefaultInstance();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Course build() {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result);
        }
        return buildPartial();
      }
      
      private com.ociweb.jnb.protobuf.gen.CourseProtos.Course buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Course buildPartial() {
        if (result.student_ != java.util.Collections.EMPTY_LIST) {
          result.student_ =
            java.util.Collections.unmodifiableList(result.student_);
        }
        com.ociweb.jnb.protobuf.gen.CourseProtos.Course returnMe = result;
        result = null;
        return returnMe;
      }
      
      
      // required int32 id = 1;
      public boolean hasId() {
        return result.hasId();
      }
      public int getId() {
        return result.getId();
      }
      public Builder setId(int value) {
        result.hasId = true;
        result.id_ = value;
        return this;
      }
      public Builder clearId() {
        result.hasId = false;
        result.id_ = 0;
        return this;
      }
      
      // required string number = 2;
      public boolean hasNumber() {
        return result.hasNumber();
      }
      public java.lang.String getNumber() {
        return result.getNumber();
      }
      public Builder setNumber(java.lang.String value) {
        result.hasNumber = true;
        result.number_ = value;
        return this;
      }
      public Builder clearNumber() {
        result.hasNumber = false;
        result.number_ = "";
        return this;
      }
      
      // required string name = 3;
      public boolean hasName() {
        return result.hasName();
      }
      public java.lang.String getName() {
        return result.getName();
      }
      public Builder setName(java.lang.String value) {
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder clearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      // required .jnb.Person instructor = 4;
      public boolean hasInstructor() {
        return result.hasInstructor();
      }
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person getInstructor() {
        return result.getInstructor();
      }
      public Builder setInstructor(com.ociweb.jnb.protobuf.gen.CourseProtos.Person value) {
        result.hasInstructor = true;
        result.instructor_ = value;
        return this;
      }
      public Builder setInstructor(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Builder builderForValue) {
        result.hasInstructor = true;
        result.instructor_ = builderForValue.build();
        return this;
      }
      public Builder mergeInstructor(com.ociweb.jnb.protobuf.gen.CourseProtos.Person value) {
        if (result.hasInstructor() &&
            result.instructor_ != com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDefaultInstance()) {
          result.instructor_ =
            com.ociweb.jnb.protobuf.gen.CourseProtos.Person.newBuilder(result.instructor_).mergeFrom(value).buildPartial();
        } else {
          result.instructor_ = value;
        }
        result.hasInstructor = true;
        return this;
      }
      public Builder clearInstructor() {
        result.hasInstructor = false;
        result.instructor_ = com.ociweb.jnb.protobuf.gen.CourseProtos.Person.getDefaultInstance();
        return this;
      }
      
      // optional string room_number = 5;
      public boolean hasRoomNumber() {
        return result.hasRoomNumber();
      }
      public java.lang.String getRoomNumber() {
        return result.getRoomNumber();
      }
      public Builder setRoomNumber(java.lang.String value) {
        result.hasRoomNumber = true;
        result.roomNumber_ = value;
        return this;
      }
      public Builder clearRoomNumber() {
        result.hasRoomNumber = false;
        result.roomNumber_ = "";
        return this;
      }
      
      // repeated .jnb.Person student = 6;
      public java.util.List<com.ociweb.jnb.protobuf.gen.CourseProtos.Person> getStudentList() {
        return java.util.Collections.unmodifiableList(result.student_);
      }
      public int getStudentCount() {
        return result.getStudentCount();
      }
      public com.ociweb.jnb.protobuf.gen.CourseProtos.Person getStudent(int index) {
        return result.getStudent(index);
      }
      public Builder setStudent(int index, com.ociweb.jnb.protobuf.gen.CourseProtos.Person value) {
        result.student_.set(index, value);
        return this;
      }
      public Builder setStudent(int index, com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Builder builderForValue) {
        result.student_.set(index, builderForValue.build());
        return this;
      }
      public Builder addStudent(com.ociweb.jnb.protobuf.gen.CourseProtos.Person value) {
        if (result.student_.isEmpty()) {
          result.student_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person>();
        }
        result.student_.add(value);
        return this;
      }
      public Builder addStudent(com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Builder builderForValue) {
        if (result.student_.isEmpty()) {
          result.student_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person>();
        }
        result.student_.add(builderForValue.build());
        return this;
      }
      public Builder addAllStudent(
          java.lang.Iterable<? extends com.ociweb.jnb.protobuf.gen.CourseProtos.Person> values) {
        if (result.student_.isEmpty()) {
          result.student_ = new java.util.ArrayList<com.ociweb.jnb.protobuf.gen.CourseProtos.Person>();
        }
        super.addAll(values, result.student_);
        return this;
      }
      public Builder clearStudent() {
        result.student_ = java.util.Collections.emptyList();
        return this;
      }
    }
    
    static {
      com.ociweb.jnb.protobuf.gen.CourseProtos.getDescriptor();
    }
  }
  
  public static final class CourseList extends
      com.google.protobuf.GeneratedMessage {
    // Use CourseList.newBuilder() to construct.
    private CourseList() {}
    
    private static final CourseList defaultInstance = new CourseList();
    public static CourseList getDefaultInstance() {
      return defaultInstance;
    }
    
    public CourseList getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_CourseList_descriptor;
    }
    
    @Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.ociweb.jnb.protobuf.gen.CourseProtos.internal_static_jnb_CourseList_fieldAccessorTable;
    }
    
    // repeated string number = 1;
    private java.util.List<java.lang.String> number_ =
      java.util.Collections.emptyList();
    public java.util.List<java.lang.String> getNumberList() {
      return number_;
    }
    public int getNumberCount() { return number_.size(); }
    public java.lang.String getNumber(int index) {
      return number_.get(index);
    }
    
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistry extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return new Builder(); }
    public Builder newBuilderForType() { return new Builder(); }
    public static Builder newBuilder(com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList prototype) {
      return new Builder().mergeFrom(prototype);
    }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      // Construct using com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList.newBuilder()
      private Builder() {}
      
      com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList result = new com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList();
      
      @Override
      protected com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList internalGetResult() {
        return result;
      }
      
      @Override
      public Builder clear() {
        result = new com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList();
        return this;
      }
      
      @Override
      public Builder clone() {
        return new Builder().mergeFrom(result);
      }
      
      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList.getDescriptor();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList getDefaultInstanceForType() {
        return com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList.getDefaultInstance();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList build() {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result);
        }
        return buildPartial();
      }
      
      private com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw new com.google.protobuf.UninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList buildPartial() {
        if (result.number_ != java.util.Collections.EMPTY_LIST) {
          result.number_ =
            java.util.Collections.unmodifiableList(result.number_);
        }
        com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList returnMe = result;
        result = null;
        return returnMe;
      }
      
      
      // repeated string number = 1;
      public java.util.List<java.lang.String> getNumberList() {
        return java.util.Collections.unmodifiableList(result.number_);
      }
      public int getNumberCount() {
        return result.getNumberCount();
      }
      public java.lang.String getNumber(int index) {
        return result.getNumber(index);
      }
      public Builder setNumber(int index, java.lang.String value) {
        result.number_.set(index, value);
        return this;
      }
      public Builder addNumber(java.lang.String value) {
        if (result.number_.isEmpty()) {
          result.number_ = new java.util.ArrayList<java.lang.String>();
        }
        result.number_.add(value);
        return this;
      }
      public Builder addAllNumber(
          java.lang.Iterable<? extends java.lang.String> values) {
        if (result.number_.isEmpty()) {
          result.number_ = new java.util.ArrayList<java.lang.String>();
        }
        super.addAll(values, result.number_);
        return this;
      }
      public Builder clearNumber() {
        result.number_ = java.util.Collections.emptyList();
        return this;
      }
    }
    
    static {
      com.ociweb.jnb.protobuf.gen.CourseProtos.getDescriptor();
    }
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_jnb_Person_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_jnb_Person_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_jnb_Person_Phone_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_jnb_Person_Phone_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_jnb_Course_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_jnb_Course_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_jnb_CourseList_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_jnb_CourseList_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String descriptorData =
      "\n\014course.proto\022\003jnb\"\364\001\n\006Person\022\n\n\002id\030\001 \002" +
      "(\005\022\022\n\nfirst_name\030\002 \002(\t\022\021\n\tlast_name\030\003 \002(" +
      "\t\022\r\n\005email\030\004 \001(\t\022 \n\005phone\030\005 \003(\0132\021.jnb.Pe" +
      "rson.Phone\032N\n\005Phone\022\n\n\002id\030\001 \002(\005\022\016\n\006numbe" +
      "r\030\002 \002(\t\022)\n\004type\030\003 \002(\0162\025.jnb.Person.Phone" +
      "Type:\004HOME\"6\n\tPhoneType\022\010\n\004HOME\020\000\022\010\n\004WOR" +
      "K\020\001\022\n\n\006MOBILE\020\002\022\t\n\005OTHER\020\003\"\206\001\n\006Course\022\n\n" +
      "\002id\030\001 \002(\005\022\016\n\006number\030\002 \002(\t\022\014\n\004name\030\003 \002(\t\022" +
      "\037\n\ninstructor\030\004 \002(\0132\013.jnb.Person\022\023\n\013room" +
      "_number\030\005 \001(\t\022\034\n\007student\030\006 \003(\0132\013.jnb.Per" +
      "son\"\034\n\nCourseList\022\016\n\006number\030\001 \003(\tB+\n\033com" +
      ".ociweb.jnb.protobuf.genB\014CourseProtos";
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_jnb_Person_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_jnb_Person_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_jnb_Person_descriptor,
              new java.lang.String[] { "Id", "FirstName", "LastName", "Email", "Phone", },
              com.ociweb.jnb.protobuf.gen.CourseProtos.Person.class,
              com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Builder.class);
          internal_static_jnb_Person_Phone_descriptor =
            internal_static_jnb_Person_descriptor.getNestedTypes().get(0);
          internal_static_jnb_Person_Phone_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_jnb_Person_Phone_descriptor,
              new java.lang.String[] { "Id", "Number", "Type", },
              com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.class,
              com.ociweb.jnb.protobuf.gen.CourseProtos.Person.Phone.Builder.class);
          internal_static_jnb_Course_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_jnb_Course_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_jnb_Course_descriptor,
              new java.lang.String[] { "Id", "Number", "Name", "Instructor", "RoomNumber", "Student", },
              com.ociweb.jnb.protobuf.gen.CourseProtos.Course.class,
              com.ociweb.jnb.protobuf.gen.CourseProtos.Course.Builder.class);
          internal_static_jnb_CourseList_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_jnb_CourseList_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_jnb_CourseList_descriptor,
              new java.lang.String[] { "Number", },
              com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList.class,
              com.ociweb.jnb.protobuf.gen.CourseProtos.CourseList.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
}
