// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: rexp.proto

package org.godhuli.rhipe;

public final class REXPProtos {
  private REXPProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface REXPOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .REXP.RClass rclass = 1;
    /**
     * <code>required .REXP.RClass rclass = 1;</code>
     */
    boolean hasRclass();
    /**
     * <code>required .REXP.RClass rclass = 1;</code>
     */
    REXP.RClass getRclass();

    // repeated double realValue = 2 [packed = true];
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    java.util.List<Double> getRealValueList();
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    int getRealValueCount();
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    double getRealValue(int index);

    // repeated sint32 intValue = 3 [packed = true];
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    java.util.List<Integer> getIntValueList();
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    int getIntValueCount();
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    int getIntValue(int index);

    // repeated .REXP.RBOOLEAN booleanValue = 4;
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    java.util.List<REXP.RBOOLEAN> getBooleanValueList();
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    int getBooleanValueCount();
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    REXP.RBOOLEAN getBooleanValue(int index);

    // repeated .STRING stringValue = 5;
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    java.util.List<STRING>
        getStringValueList();
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    STRING getStringValue(int index);
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    int getStringValueCount();
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    java.util.List<? extends STRINGOrBuilder>
        getStringValueOrBuilderList();
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    STRINGOrBuilder getStringValueOrBuilder(
                                               int index);

    // optional bytes rawValue = 6;
    /**
     * <code>optional bytes rawValue = 6;</code>
     */
    boolean hasRawValue();
    /**
     * <code>optional bytes rawValue = 6;</code>
     */
    com.google.protobuf.ByteString getRawValue();

    // repeated .CMPLX complexValue = 7;
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    java.util.List<CMPLX>
        getComplexValueList();
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    CMPLX getComplexValue(int index);
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    int getComplexValueCount();
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    java.util.List<? extends CMPLXOrBuilder>
        getComplexValueOrBuilderList();
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    CMPLXOrBuilder getComplexValueOrBuilder(
                                               int index);

    // repeated .REXP rexpValue = 8;
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    java.util.List<REXP>
        getRexpValueList();
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    REXP getRexpValue(int index);
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    int getRexpValueCount();
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    java.util.List<? extends REXPOrBuilder>
        getRexpValueOrBuilderList();
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    REXPOrBuilder getRexpValueOrBuilder(
                                           int index);

    // repeated string attrName = 11;
    /**
     * <code>repeated string attrName = 11;</code>
     */
    java.util.List<String>
    getAttrNameList();
    /**
     * <code>repeated string attrName = 11;</code>
     */
    int getAttrNameCount();
    /**
     * <code>repeated string attrName = 11;</code>
     */
    String getAttrName(int index);
    /**
     * <code>repeated string attrName = 11;</code>
     */
    com.google.protobuf.ByteString
        getAttrNameBytes(int index);

    // repeated .REXP attrValue = 12;
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    java.util.List<REXP>
        getAttrValueList();
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    REXP getAttrValue(int index);
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    int getAttrValueCount();
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    java.util.List<? extends REXPOrBuilder>
        getAttrValueOrBuilderList();
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    REXPOrBuilder getAttrValueOrBuilder(
                                           int index);
  }
  /**
   * Protobuf type {@code REXP}
   */
  public static final class REXP extends
      com.google.protobuf.GeneratedMessage
      implements REXPOrBuilder {
    // Use REXP.newBuilder() to construct.
    private REXP(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private REXP(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final REXP defaultInstance;
    public static REXP getDefaultInstance() {
      return defaultInstance;
    }

    public REXP getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private REXP(
        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: {
              int rawValue = input.readEnum();
              RClass value = RClass.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                rclass_ = value;
              }
              break;
            }
            case 17: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                realValue_ = new java.util.ArrayList<Double>();
                mutable_bitField0_ |= 0x00000002;
              }
              realValue_.add(input.readDouble());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                realValue_ = new java.util.ArrayList<Double>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                realValue_.add(input.readDouble());
              }
              input.popLimit(limit);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                intValue_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              intValue_.add(input.readSInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                intValue_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                intValue_.add(input.readSInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              RBOOLEAN value = RBOOLEAN.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(4, rawValue);
              } else {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  booleanValue_ = new java.util.ArrayList<RBOOLEAN>();
                  mutable_bitField0_ |= 0x00000008;
                }
                booleanValue_.add(value);
              }
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                RBOOLEAN value = RBOOLEAN.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(4, rawValue);
                } else {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    booleanValue_ = new java.util.ArrayList<RBOOLEAN>();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  booleanValue_.add(value);
                }
              }
              input.popLimit(oldLimit);
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                stringValue_ = new java.util.ArrayList<STRING>();
                mutable_bitField0_ |= 0x00000010;
              }
              stringValue_.add(input.readMessage(STRING.PARSER, extensionRegistry));
              break;
            }
            case 50: {
              bitField0_ |= 0x00000002;
              rawValue_ = input.readBytes();
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                complexValue_ = new java.util.ArrayList<CMPLX>();
                mutable_bitField0_ |= 0x00000040;
              }
              complexValue_.add(input.readMessage(CMPLX.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                rexpValue_ = new java.util.ArrayList<REXP>();
                mutable_bitField0_ |= 0x00000080;
              }
              rexpValue_.add(input.readMessage(REXP.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                attrName_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000100;
              }
              attrName_.add(input.readBytes());
              break;
            }
            case 98: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                attrValue_ = new java.util.ArrayList<REXP>();
                mutable_bitField0_ |= 0x00000200;
              }
              attrValue_.add(input.readMessage(REXP.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_ & 0x00000002) == 0x00000002)) {
          realValue_ = java.util.Collections.unmodifiableList(realValue_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = java.util.Collections.unmodifiableList(intValue_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          booleanValue_ = java.util.Collections.unmodifiableList(booleanValue_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          stringValue_ = java.util.Collections.unmodifiableList(stringValue_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          complexValue_ = java.util.Collections.unmodifiableList(complexValue_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          rexpValue_ = java.util.Collections.unmodifiableList(rexpValue_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          attrName_ = new com.google.protobuf.UnmodifiableLazyStringList(attrName_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          attrValue_ = java.util.Collections.unmodifiableList(attrValue_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return REXPProtos.internal_static_REXP_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return REXPProtos.internal_static_REXP_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              REXP.class, Builder.class);
    }

    public static com.google.protobuf.Parser<REXP> PARSER =
        new com.google.protobuf.AbstractParser<REXP>() {
      public REXP parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new REXP(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<REXP> getParserForType() {
      return PARSER;
    }

    /**
     * Protobuf enum {@code REXP.RClass}
     */
    public enum RClass
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>STRING = 0;</code>
       */
      STRING(0, 0),
      /**
       * <code>RAW = 1;</code>
       */
      RAW(1, 1),
      /**
       * <code>REAL = 2;</code>
       */
      REAL(2, 2),
      /**
       * <code>COMPLEX = 3;</code>
       */
      COMPLEX(3, 3),
      /**
       * <code>INTEGER = 4;</code>
       */
      INTEGER(4, 4),
      /**
       * <code>LIST = 5;</code>
       */
      LIST(5, 5),
      /**
       * <code>LOGICAL = 6;</code>
       */
      LOGICAL(6, 6),
      /**
       * <code>NULLTYPE = 7;</code>
       */
      NULLTYPE(7, 7),
      /**
       * <code>REAL1 = 8;</code>
       */
      REAL1(8, 8),
      /**
       * <code>INTEGER1 = 10;</code>
       */
      INTEGER1(9, 10),
      /**
       * <code>STRING1 = 9;</code>
       */
      STRING1(10, 9),
      ;

      /**
       * <code>STRING = 0;</code>
       */
      public static final int STRING_VALUE = 0;
      /**
       * <code>RAW = 1;</code>
       */
      public static final int RAW_VALUE = 1;
      /**
       * <code>REAL = 2;</code>
       */
      public static final int REAL_VALUE = 2;
      /**
       * <code>COMPLEX = 3;</code>
       */
      public static final int COMPLEX_VALUE = 3;
      /**
       * <code>INTEGER = 4;</code>
       */
      public static final int INTEGER_VALUE = 4;
      /**
       * <code>LIST = 5;</code>
       */
      public static final int LIST_VALUE = 5;
      /**
       * <code>LOGICAL = 6;</code>
       */
      public static final int LOGICAL_VALUE = 6;
      /**
       * <code>NULLTYPE = 7;</code>
       */
      public static final int NULLTYPE_VALUE = 7;
      /**
       * <code>REAL1 = 8;</code>
       */
      public static final int REAL1_VALUE = 8;
      /**
       * <code>INTEGER1 = 10;</code>
       */
      public static final int INTEGER1_VALUE = 10;
      /**
       * <code>STRING1 = 9;</code>
       */
      public static final int STRING1_VALUE = 9;


      public final int getNumber() { return value; }

      public static RClass valueOf(int value) {
        switch (value) {
          case 0: return STRING;
          case 1: return RAW;
          case 2: return REAL;
          case 3: return COMPLEX;
          case 4: return INTEGER;
          case 5: return LIST;
          case 6: return LOGICAL;
          case 7: return NULLTYPE;
          case 8: return REAL1;
          case 10: return INTEGER1;
          case 9: return STRING1;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<RClass>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<RClass>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<RClass>() {
              public RClass findValueByNumber(int number) {
                return RClass.valueOf(number);
              }
            };

      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 REXP.getDescriptor().getEnumTypes().get(0);
      }

      private static final RClass[] VALUES = values();

      public static RClass valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }

      private final int index;
      private final int value;

      private RClass(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:REXP.RClass)
    }

    /**
     * Protobuf enum {@code REXP.RBOOLEAN}
     */
    public enum RBOOLEAN
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>F = 0;</code>
       */
      F(0, 0),
      /**
       * <code>T = 1;</code>
       */
      T(1, 1),
      /**
       * <code>NA = 2;</code>
       */
      NA(2, 2),
      ;

      /**
       * <code>F = 0;</code>
       */
      public static final int F_VALUE = 0;
      /**
       * <code>T = 1;</code>
       */
      public static final int T_VALUE = 1;
      /**
       * <code>NA = 2;</code>
       */
      public static final int NA_VALUE = 2;


      public final int getNumber() { return value; }

      public static RBOOLEAN valueOf(int value) {
        switch (value) {
          case 0: return F;
          case 1: return T;
          case 2: return NA;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<RBOOLEAN>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<RBOOLEAN>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<RBOOLEAN>() {
              public RBOOLEAN findValueByNumber(int number) {
                return RBOOLEAN.valueOf(number);
              }
            };

      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 REXP.getDescriptor().getEnumTypes().get(1);
      }

      private static final RBOOLEAN[] VALUES = values();

      public static RBOOLEAN valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }

      private final int index;
      private final int value;

      private RBOOLEAN(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:REXP.RBOOLEAN)
    }

    private int bitField0_;
    // required .REXP.RClass rclass = 1;
    public static final int RCLASS_FIELD_NUMBER = 1;
    private RClass rclass_;
    /**
     * <code>required .REXP.RClass rclass = 1;</code>
     */
    public boolean hasRclass() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .REXP.RClass rclass = 1;</code>
     */
    public RClass getRclass() {
      return rclass_;
    }

    // repeated double realValue = 2 [packed = true];
    public static final int REALVALUE_FIELD_NUMBER = 2;
    private java.util.List<Double> realValue_;
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    public java.util.List<Double>
        getRealValueList() {
      return realValue_;
    }
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    public int getRealValueCount() {
      return realValue_.size();
    }
    /**
     * <code>repeated double realValue = 2 [packed = true];</code>
     */
    public double getRealValue(int index) {
      return realValue_.get(index);
    }
    private int realValueMemoizedSerializedSize = -1;

    // repeated sint32 intValue = 3 [packed = true];
    public static final int INTVALUE_FIELD_NUMBER = 3;
    private java.util.List<Integer> intValue_;
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    public java.util.List<Integer>
        getIntValueList() {
      return intValue_;
    }
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    public int getIntValueCount() {
      return intValue_.size();
    }
    /**
     * <code>repeated sint32 intValue = 3 [packed = true];</code>
     */
    public int getIntValue(int index) {
      return intValue_.get(index);
    }
    private int intValueMemoizedSerializedSize = -1;

    // repeated .REXP.RBOOLEAN booleanValue = 4;
    public static final int BOOLEANVALUE_FIELD_NUMBER = 4;
    private java.util.List<RBOOLEAN> booleanValue_;
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    public java.util.List<RBOOLEAN> getBooleanValueList() {
      return booleanValue_;
    }
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    public int getBooleanValueCount() {
      return booleanValue_.size();
    }
    /**
     * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
     */
    public RBOOLEAN getBooleanValue(int index) {
      return booleanValue_.get(index);
    }

    // repeated .STRING stringValue = 5;
    public static final int STRINGVALUE_FIELD_NUMBER = 5;
    private java.util.List<STRING> stringValue_;
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    public java.util.List<STRING> getStringValueList() {
      return stringValue_;
    }
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    public java.util.List<? extends STRINGOrBuilder>
        getStringValueOrBuilderList() {
      return stringValue_;
    }
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    public int getStringValueCount() {
      return stringValue_.size();
    }
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    public STRING getStringValue(int index) {
      return stringValue_.get(index);
    }
    /**
     * <code>repeated .STRING stringValue = 5;</code>
     */
    public STRINGOrBuilder getStringValueOrBuilder(
        int index) {
      return stringValue_.get(index);
    }

    // optional bytes rawValue = 6;
    public static final int RAWVALUE_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString rawValue_;
    /**
     * <code>optional bytes rawValue = 6;</code>
     */
    public boolean hasRawValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bytes rawValue = 6;</code>
     */
    public com.google.protobuf.ByteString getRawValue() {
      return rawValue_;
    }

    // repeated .CMPLX complexValue = 7;
    public static final int COMPLEXVALUE_FIELD_NUMBER = 7;
    private java.util.List<CMPLX> complexValue_;
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    public java.util.List<CMPLX> getComplexValueList() {
      return complexValue_;
    }
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    public java.util.List<? extends CMPLXOrBuilder>
        getComplexValueOrBuilderList() {
      return complexValue_;
    }
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    public int getComplexValueCount() {
      return complexValue_.size();
    }
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    public CMPLX getComplexValue(int index) {
      return complexValue_.get(index);
    }
    /**
     * <code>repeated .CMPLX complexValue = 7;</code>
     */
    public CMPLXOrBuilder getComplexValueOrBuilder(
        int index) {
      return complexValue_.get(index);
    }

    // repeated .REXP rexpValue = 8;
    public static final int REXPVALUE_FIELD_NUMBER = 8;
    private java.util.List<REXP> rexpValue_;
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    public java.util.List<REXP> getRexpValueList() {
      return rexpValue_;
    }
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    public java.util.List<? extends REXPOrBuilder>
        getRexpValueOrBuilderList() {
      return rexpValue_;
    }
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    public int getRexpValueCount() {
      return rexpValue_.size();
    }
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    public REXP getRexpValue(int index) {
      return rexpValue_.get(index);
    }
    /**
     * <code>repeated .REXP rexpValue = 8;</code>
     */
    public REXPOrBuilder getRexpValueOrBuilder(
        int index) {
      return rexpValue_.get(index);
    }

    // repeated string attrName = 11;
    public static final int ATTRNAME_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList attrName_;
    /**
     * <code>repeated string attrName = 11;</code>
     */
    public java.util.List<String>
        getAttrNameList() {
      return attrName_;
    }
    /**
     * <code>repeated string attrName = 11;</code>
     */
    public int getAttrNameCount() {
      return attrName_.size();
    }
    /**
     * <code>repeated string attrName = 11;</code>
     */
    public String getAttrName(int index) {
      return attrName_.get(index);
    }
    /**
     * <code>repeated string attrName = 11;</code>
     */
    public com.google.protobuf.ByteString
        getAttrNameBytes(int index) {
      return attrName_.getByteString(index);
    }

    // repeated .REXP attrValue = 12;
    public static final int ATTRVALUE_FIELD_NUMBER = 12;
    private java.util.List<REXP> attrValue_;
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    public java.util.List<REXP> getAttrValueList() {
      return attrValue_;
    }
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    public java.util.List<? extends REXPOrBuilder>
        getAttrValueOrBuilderList() {
      return attrValue_;
    }
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    public int getAttrValueCount() {
      return attrValue_.size();
    }
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    public REXP getAttrValue(int index) {
      return attrValue_.get(index);
    }
    /**
     * <code>repeated .REXP attrValue = 12;</code>
     */
    public REXPOrBuilder getAttrValueOrBuilder(
        int index) {
      return attrValue_.get(index);
    }

    private void initFields() {
      rclass_ = RClass.STRING;
      realValue_ = java.util.Collections.emptyList();
      intValue_ = java.util.Collections.emptyList();
      booleanValue_ = java.util.Collections.emptyList();
      stringValue_ = java.util.Collections.emptyList();
      rawValue_ = com.google.protobuf.ByteString.EMPTY;
      complexValue_ = java.util.Collections.emptyList();
      rexpValue_ = java.util.Collections.emptyList();
      attrName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      attrValue_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasRclass()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getComplexValueCount(); i++) {
        if (!getComplexValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getRexpValueCount(); i++) {
        if (!getRexpValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAttrValueCount(); i++) {
        if (!getAttrValue(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.writeEnum(1, rclass_.getNumber());
      }
      if (getRealValueList().size() > 0) {
        output.writeRawVarint32(18);
        output.writeRawVarint32(realValueMemoizedSerializedSize);
      }
      for (int i = 0; i < realValue_.size(); i++) {
        output.writeDoubleNoTag(realValue_.get(i));
      }
      if (getIntValueList().size() > 0) {
        output.writeRawVarint32(26);
        output.writeRawVarint32(intValueMemoizedSerializedSize);
      }
      for (int i = 0; i < intValue_.size(); i++) {
        output.writeSInt32NoTag(intValue_.get(i));
      }
      for (int i = 0; i < booleanValue_.size(); i++) {
        output.writeEnum(4, booleanValue_.get(i).getNumber());
      }
      for (int i = 0; i < stringValue_.size(); i++) {
        output.writeMessage(5, stringValue_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(6, rawValue_);
      }
      for (int i = 0; i < complexValue_.size(); i++) {
        output.writeMessage(7, complexValue_.get(i));
      }
      for (int i = 0; i < rexpValue_.size(); i++) {
        output.writeMessage(8, rexpValue_.get(i));
      }
      for (int i = 0; i < attrName_.size(); i++) {
        output.writeBytes(11, attrName_.getByteString(i));
      }
      for (int i = 0; i < attrValue_.size(); i++) {
        output.writeMessage(12, attrValue_.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
          .computeEnumSize(1, rclass_.getNumber());
      }
      {
        int dataSize = 0;
        dataSize = 8 * getRealValueList().size();
        size += dataSize;
        if (!getRealValueList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        realValueMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeSInt32SizeNoTag(intValue_.get(i));
        }
        size += dataSize;
        if (!getIntValueList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        intValueMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < booleanValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(booleanValue_.get(i).getNumber());
        }
        size += dataSize;
        size += 1 * booleanValue_.size();
      }
      for (int i = 0; i < stringValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, stringValue_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, rawValue_);
      }
      for (int i = 0; i < complexValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, complexValue_.get(i));
      }
      for (int i = 0; i < rexpValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, rexpValue_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < attrName_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(attrName_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getAttrNameList().size();
      }
      for (int i = 0; i < attrValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, attrValue_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static REXP parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static REXP parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static REXP parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static REXP parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static REXP parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static REXP parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static REXP parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static REXP parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static REXP parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static REXP 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(REXP prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code REXP}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements REXPOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return REXPProtos.internal_static_REXP_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return REXPProtos.internal_static_REXP_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                REXP.class, Builder.class);
      }

      // Construct using org.godhuli.rhipe.REXPProtos.REXP.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getStringValueFieldBuilder();
          getComplexValueFieldBuilder();
          getRexpValueFieldBuilder();
          getAttrValueFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        rclass_ = RClass.STRING;
        bitField0_ = (bitField0_ & ~0x00000001);
        realValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        intValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        booleanValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        if (stringValueBuilder_ == null) {
          stringValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          stringValueBuilder_.clear();
        }
        rawValue_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (complexValueBuilder_ == null) {
          complexValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          complexValueBuilder_.clear();
        }
        if (rexpValueBuilder_ == null) {
          rexpValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
        } else {
          rexpValueBuilder_.clear();
        }
        attrName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        if (attrValueBuilder_ == null) {
          attrValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
        } else {
          attrValueBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return REXPProtos.internal_static_REXP_descriptor;
      }

      public REXP getDefaultInstanceForType() {
        return REXP.getDefaultInstance();
      }

      public REXP build() {
        REXP result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public REXP buildPartial() {
        REXP result = new REXP(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.rclass_ = rclass_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          realValue_ = java.util.Collections.unmodifiableList(realValue_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.realValue_ = realValue_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = java.util.Collections.unmodifiableList(intValue_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.intValue_ = intValue_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          booleanValue_ = java.util.Collections.unmodifiableList(booleanValue_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.booleanValue_ = booleanValue_;
        if (stringValueBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            stringValue_ = java.util.Collections.unmodifiableList(stringValue_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.stringValue_ = stringValue_;
        } else {
          result.stringValue_ = stringValueBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000002;
        }
        result.rawValue_ = rawValue_;
        if (complexValueBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            complexValue_ = java.util.Collections.unmodifiableList(complexValue_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.complexValue_ = complexValue_;
        } else {
          result.complexValue_ = complexValueBuilder_.build();
        }
        if (rexpValueBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            rexpValue_ = java.util.Collections.unmodifiableList(rexpValue_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.rexpValue_ = rexpValue_;
        } else {
          result.rexpValue_ = rexpValueBuilder_.build();
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          attrName_ = new com.google.protobuf.UnmodifiableLazyStringList(
              attrName_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.attrName_ = attrName_;
        if (attrValueBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            attrValue_ = java.util.Collections.unmodifiableList(attrValue_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.attrValue_ = attrValue_;
        } else {
          result.attrValue_ = attrValueBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof REXP) {
          return mergeFrom((REXP)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(REXP other) {
        if (other == REXP.getDefaultInstance()) return this;
        if (other.hasRclass()) {
          setRclass(other.getRclass());
        }
        if (!other.realValue_.isEmpty()) {
          if (realValue_.isEmpty()) {
            realValue_ = other.realValue_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureRealValueIsMutable();
            realValue_.addAll(other.realValue_);
          }
          onChanged();
        }
        if (!other.intValue_.isEmpty()) {
          if (intValue_.isEmpty()) {
            intValue_ = other.intValue_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureIntValueIsMutable();
            intValue_.addAll(other.intValue_);
          }
          onChanged();
        }
        if (!other.booleanValue_.isEmpty()) {
          if (booleanValue_.isEmpty()) {
            booleanValue_ = other.booleanValue_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureBooleanValueIsMutable();
            booleanValue_.addAll(other.booleanValue_);
          }
          onChanged();
        }
        if (stringValueBuilder_ == null) {
          if (!other.stringValue_.isEmpty()) {
            if (stringValue_.isEmpty()) {
              stringValue_ = other.stringValue_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureStringValueIsMutable();
              stringValue_.addAll(other.stringValue_);
            }
            onChanged();
          }
        } else {
          if (!other.stringValue_.isEmpty()) {
            if (stringValueBuilder_.isEmpty()) {
              stringValueBuilder_.dispose();
              stringValueBuilder_ = null;
              stringValue_ = other.stringValue_;
              bitField0_ = (bitField0_ & ~0x00000010);
              stringValueBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getStringValueFieldBuilder() : null;
            } else {
              stringValueBuilder_.addAllMessages(other.stringValue_);
            }
          }
        }
        if (other.hasRawValue()) {
          setRawValue(other.getRawValue());
        }
        if (complexValueBuilder_ == null) {
          if (!other.complexValue_.isEmpty()) {
            if (complexValue_.isEmpty()) {
              complexValue_ = other.complexValue_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureComplexValueIsMutable();
              complexValue_.addAll(other.complexValue_);
            }
            onChanged();
          }
        } else {
          if (!other.complexValue_.isEmpty()) {
            if (complexValueBuilder_.isEmpty()) {
              complexValueBuilder_.dispose();
              complexValueBuilder_ = null;
              complexValue_ = other.complexValue_;
              bitField0_ = (bitField0_ & ~0x00000040);
              complexValueBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getComplexValueFieldBuilder() : null;
            } else {
              complexValueBuilder_.addAllMessages(other.complexValue_);
            }
          }
        }
        if (rexpValueBuilder_ == null) {
          if (!other.rexpValue_.isEmpty()) {
            if (rexpValue_.isEmpty()) {
              rexpValue_ = other.rexpValue_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureRexpValueIsMutable();
              rexpValue_.addAll(other.rexpValue_);
            }
            onChanged();
          }
        } else {
          if (!other.rexpValue_.isEmpty()) {
            if (rexpValueBuilder_.isEmpty()) {
              rexpValueBuilder_.dispose();
              rexpValueBuilder_ = null;
              rexpValue_ = other.rexpValue_;
              bitField0_ = (bitField0_ & ~0x00000080);
              rexpValueBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRexpValueFieldBuilder() : null;
            } else {
              rexpValueBuilder_.addAllMessages(other.rexpValue_);
            }
          }
        }
        if (!other.attrName_.isEmpty()) {
          if (attrName_.isEmpty()) {
            attrName_ = other.attrName_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureAttrNameIsMutable();
            attrName_.addAll(other.attrName_);
          }
          onChanged();
        }
        if (attrValueBuilder_ == null) {
          if (!other.attrValue_.isEmpty()) {
            if (attrValue_.isEmpty()) {
              attrValue_ = other.attrValue_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureAttrValueIsMutable();
              attrValue_.addAll(other.attrValue_);
            }
            onChanged();
          }
        } else {
          if (!other.attrValue_.isEmpty()) {
            if (attrValueBuilder_.isEmpty()) {
              attrValueBuilder_.dispose();
              attrValueBuilder_ = null;
              attrValue_ = other.attrValue_;
              bitField0_ = (bitField0_ & ~0x00000200);
              attrValueBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAttrValueFieldBuilder() : null;
            } else {
              attrValueBuilder_.addAllMessages(other.attrValue_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasRclass()) {

          return false;
        }
        for (int i = 0; i < getComplexValueCount(); i++) {
          if (!getComplexValue(i).isInitialized()) {

            return false;
          }
        }
        for (int i = 0; i < getRexpValueCount(); i++) {
          if (!getRexpValue(i).isInitialized()) {

            return false;
          }
        }
        for (int i = 0; i < getAttrValueCount(); i++) {
          if (!getAttrValue(i).isInitialized()) {

            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        REXP parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (REXP) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .REXP.RClass rclass = 1;
      private RClass rclass_ = RClass.STRING;
      /**
       * <code>required .REXP.RClass rclass = 1;</code>
       */
      public boolean hasRclass() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .REXP.RClass rclass = 1;</code>
       */
      public RClass getRclass() {
        return rclass_;
      }
      /**
       * <code>required .REXP.RClass rclass = 1;</code>
       */
      public Builder setRclass(RClass value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        rclass_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .REXP.RClass rclass = 1;</code>
       */
      public Builder clearRclass() {
        bitField0_ = (bitField0_ & ~0x00000001);
        rclass_ = RClass.STRING;
        onChanged();
        return this;
      }

      // repeated double realValue = 2 [packed = true];
      private java.util.List<Double> realValue_ = java.util.Collections.emptyList();
      private void ensureRealValueIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          realValue_ = new java.util.ArrayList<Double>(realValue_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public java.util.List<Double>
          getRealValueList() {
        return java.util.Collections.unmodifiableList(realValue_);
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public int getRealValueCount() {
        return realValue_.size();
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public double getRealValue(int index) {
        return realValue_.get(index);
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public Builder setRealValue(
          int index, double value) {
        ensureRealValueIsMutable();
        realValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public Builder addRealValue(double value) {
        ensureRealValueIsMutable();
        realValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public Builder addAllRealValue(
          Iterable<? extends Double> values) {
        ensureRealValueIsMutable();
        super.addAll(values, realValue_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double realValue = 2 [packed = true];</code>
       */
      public Builder clearRealValue() {
        realValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // repeated sint32 intValue = 3 [packed = true];
      private java.util.List<Integer> intValue_ = java.util.Collections.emptyList();
      private void ensureIntValueIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          intValue_ = new java.util.ArrayList<Integer>(intValue_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public java.util.List<Integer>
          getIntValueList() {
        return java.util.Collections.unmodifiableList(intValue_);
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public int getIntValueCount() {
        return intValue_.size();
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public int getIntValue(int index) {
        return intValue_.get(index);
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public Builder setIntValue(
          int index, int value) {
        ensureIntValueIsMutable();
        intValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public Builder addIntValue(int value) {
        ensureIntValueIsMutable();
        intValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public Builder addAllIntValue(
          Iterable<? extends Integer> values) {
        ensureIntValueIsMutable();
        super.addAll(values, intValue_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated sint32 intValue = 3 [packed = true];</code>
       */
      public Builder clearIntValue() {
        intValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // repeated .REXP.RBOOLEAN booleanValue = 4;
      private java.util.List<RBOOLEAN> booleanValue_ =
        java.util.Collections.emptyList();
      private void ensureBooleanValueIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          booleanValue_ = new java.util.ArrayList<RBOOLEAN>(booleanValue_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public java.util.List<RBOOLEAN> getBooleanValueList() {
        return java.util.Collections.unmodifiableList(booleanValue_);
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public int getBooleanValueCount() {
        return booleanValue_.size();
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public RBOOLEAN getBooleanValue(int index) {
        return booleanValue_.get(index);
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public Builder setBooleanValue(
          int index, RBOOLEAN value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBooleanValueIsMutable();
        booleanValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public Builder addBooleanValue(RBOOLEAN value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBooleanValueIsMutable();
        booleanValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public Builder addAllBooleanValue(
          Iterable<? extends RBOOLEAN> values) {
        ensureBooleanValueIsMutable();
        super.addAll(values, booleanValue_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .REXP.RBOOLEAN booleanValue = 4;</code>
       */
      public Builder clearBooleanValue() {
        booleanValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      // repeated .STRING stringValue = 5;
      private java.util.List<STRING> stringValue_ =
        java.util.Collections.emptyList();
      private void ensureStringValueIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          stringValue_ = new java.util.ArrayList<STRING>(stringValue_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          STRING, STRING.Builder, STRINGOrBuilder> stringValueBuilder_;

      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public java.util.List<STRING> getStringValueList() {
        if (stringValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(stringValue_);
        } else {
          return stringValueBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public int getStringValueCount() {
        if (stringValueBuilder_ == null) {
          return stringValue_.size();
        } else {
          return stringValueBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public STRING getStringValue(int index) {
        if (stringValueBuilder_ == null) {
          return stringValue_.get(index);
        } else {
          return stringValueBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder setStringValue(
          int index, STRING value) {
        if (stringValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringValueIsMutable();
          stringValue_.set(index, value);
          onChanged();
        } else {
          stringValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder setStringValue(
          int index, STRING.Builder builderForValue) {
        if (stringValueBuilder_ == null) {
          ensureStringValueIsMutable();
          stringValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          stringValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder addStringValue(STRING value) {
        if (stringValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringValueIsMutable();
          stringValue_.add(value);
          onChanged();
        } else {
          stringValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder addStringValue(
          int index, STRING value) {
        if (stringValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringValueIsMutable();
          stringValue_.add(index, value);
          onChanged();
        } else {
          stringValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder addStringValue(
          STRING.Builder builderForValue) {
        if (stringValueBuilder_ == null) {
          ensureStringValueIsMutable();
          stringValue_.add(builderForValue.build());
          onChanged();
        } else {
          stringValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder addStringValue(
          int index, STRING.Builder builderForValue) {
        if (stringValueBuilder_ == null) {
          ensureStringValueIsMutable();
          stringValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          stringValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder addAllStringValue(
          Iterable<? extends STRING> values) {
        if (stringValueBuilder_ == null) {
          ensureStringValueIsMutable();
          super.addAll(values, stringValue_);
          onChanged();
        } else {
          stringValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder clearStringValue() {
        if (stringValueBuilder_ == null) {
          stringValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          stringValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public Builder removeStringValue(int index) {
        if (stringValueBuilder_ == null) {
          ensureStringValueIsMutable();
          stringValue_.remove(index);
          onChanged();
        } else {
          stringValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public STRING.Builder getStringValueBuilder(
          int index) {
        return getStringValueFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public STRINGOrBuilder getStringValueOrBuilder(
          int index) {
        if (stringValueBuilder_ == null) {
          return stringValue_.get(index);  } else {
          return stringValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public java.util.List<? extends STRINGOrBuilder>
           getStringValueOrBuilderList() {
        if (stringValueBuilder_ != null) {
          return stringValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(stringValue_);
        }
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public STRING.Builder addStringValueBuilder() {
        return getStringValueFieldBuilder().addBuilder(
            STRING.getDefaultInstance());
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public STRING.Builder addStringValueBuilder(
          int index) {
        return getStringValueFieldBuilder().addBuilder(
            index, STRING.getDefaultInstance());
      }
      /**
       * <code>repeated .STRING stringValue = 5;</code>
       */
      public java.util.List<STRING.Builder>
           getStringValueBuilderList() {
        return getStringValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          STRING, STRING.Builder, STRINGOrBuilder>
          getStringValueFieldBuilder() {
        if (stringValueBuilder_ == null) {
          stringValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              STRING, STRING.Builder, STRINGOrBuilder>(
                  stringValue_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          stringValue_ = null;
        }
        return stringValueBuilder_;
      }

      // optional bytes rawValue = 6;
      private com.google.protobuf.ByteString rawValue_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes rawValue = 6;</code>
       */
      public boolean hasRawValue() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional bytes rawValue = 6;</code>
       */
      public com.google.protobuf.ByteString getRawValue() {
        return rawValue_;
      }
      /**
       * <code>optional bytes rawValue = 6;</code>
       */
      public Builder setRawValue(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        rawValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes rawValue = 6;</code>
       */
      public Builder clearRawValue() {
        bitField0_ = (bitField0_ & ~0x00000020);
        rawValue_ = getDefaultInstance().getRawValue();
        onChanged();
        return this;
      }

      // repeated .CMPLX complexValue = 7;
      private java.util.List<CMPLX> complexValue_ =
        java.util.Collections.emptyList();
      private void ensureComplexValueIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          complexValue_ = new java.util.ArrayList<CMPLX>(complexValue_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          CMPLX, CMPLX.Builder, CMPLXOrBuilder> complexValueBuilder_;

      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public java.util.List<CMPLX> getComplexValueList() {
        if (complexValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(complexValue_);
        } else {
          return complexValueBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public int getComplexValueCount() {
        if (complexValueBuilder_ == null) {
          return complexValue_.size();
        } else {
          return complexValueBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public CMPLX getComplexValue(int index) {
        if (complexValueBuilder_ == null) {
          return complexValue_.get(index);
        } else {
          return complexValueBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder setComplexValue(
          int index, CMPLX value) {
        if (complexValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComplexValueIsMutable();
          complexValue_.set(index, value);
          onChanged();
        } else {
          complexValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder setComplexValue(
          int index, CMPLX.Builder builderForValue) {
        if (complexValueBuilder_ == null) {
          ensureComplexValueIsMutable();
          complexValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          complexValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder addComplexValue(CMPLX value) {
        if (complexValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComplexValueIsMutable();
          complexValue_.add(value);
          onChanged();
        } else {
          complexValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder addComplexValue(
          int index, CMPLX value) {
        if (complexValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComplexValueIsMutable();
          complexValue_.add(index, value);
          onChanged();
        } else {
          complexValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder addComplexValue(
          CMPLX.Builder builderForValue) {
        if (complexValueBuilder_ == null) {
          ensureComplexValueIsMutable();
          complexValue_.add(builderForValue.build());
          onChanged();
        } else {
          complexValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder addComplexValue(
          int index, CMPLX.Builder builderForValue) {
        if (complexValueBuilder_ == null) {
          ensureComplexValueIsMutable();
          complexValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          complexValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder addAllComplexValue(
          Iterable<? extends CMPLX> values) {
        if (complexValueBuilder_ == null) {
          ensureComplexValueIsMutable();
          super.addAll(values, complexValue_);
          onChanged();
        } else {
          complexValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder clearComplexValue() {
        if (complexValueBuilder_ == null) {
          complexValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          complexValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public Builder removeComplexValue(int index) {
        if (complexValueBuilder_ == null) {
          ensureComplexValueIsMutable();
          complexValue_.remove(index);
          onChanged();
        } else {
          complexValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public CMPLX.Builder getComplexValueBuilder(
          int index) {
        return getComplexValueFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public CMPLXOrBuilder getComplexValueOrBuilder(
          int index) {
        if (complexValueBuilder_ == null) {
          return complexValue_.get(index);  } else {
          return complexValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public java.util.List<? extends CMPLXOrBuilder>
           getComplexValueOrBuilderList() {
        if (complexValueBuilder_ != null) {
          return complexValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(complexValue_);
        }
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public CMPLX.Builder addComplexValueBuilder() {
        return getComplexValueFieldBuilder().addBuilder(
            CMPLX.getDefaultInstance());
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public CMPLX.Builder addComplexValueBuilder(
          int index) {
        return getComplexValueFieldBuilder().addBuilder(
            index, CMPLX.getDefaultInstance());
      }
      /**
       * <code>repeated .CMPLX complexValue = 7;</code>
       */
      public java.util.List<CMPLX.Builder>
           getComplexValueBuilderList() {
        return getComplexValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          CMPLX, CMPLX.Builder, CMPLXOrBuilder>
          getComplexValueFieldBuilder() {
        if (complexValueBuilder_ == null) {
          complexValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              CMPLX, CMPLX.Builder, CMPLXOrBuilder>(
                  complexValue_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          complexValue_ = null;
        }
        return complexValueBuilder_;
      }

      // repeated .REXP rexpValue = 8;
      private java.util.List<REXP> rexpValue_ =
        java.util.Collections.emptyList();
      private void ensureRexpValueIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          rexpValue_ = new java.util.ArrayList<REXP>(rexpValue_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          REXP, Builder, REXPOrBuilder> rexpValueBuilder_;

      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public java.util.List<REXP> getRexpValueList() {
        if (rexpValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rexpValue_);
        } else {
          return rexpValueBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public int getRexpValueCount() {
        if (rexpValueBuilder_ == null) {
          return rexpValue_.size();
        } else {
          return rexpValueBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public REXP getRexpValue(int index) {
        if (rexpValueBuilder_ == null) {
          return rexpValue_.get(index);
        } else {
          return rexpValueBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder setRexpValue(
          int index, REXP value) {
        if (rexpValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRexpValueIsMutable();
          rexpValue_.set(index, value);
          onChanged();
        } else {
          rexpValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder setRexpValue(
          int index, Builder builderForValue) {
        if (rexpValueBuilder_ == null) {
          ensureRexpValueIsMutable();
          rexpValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          rexpValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValue(REXP value) {
        if (rexpValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRexpValueIsMutable();
          rexpValue_.add(value);
          onChanged();
        } else {
          rexpValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValue(
          int index, REXP value) {
        if (rexpValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRexpValueIsMutable();
          rexpValue_.add(index, value);
          onChanged();
        } else {
          rexpValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValue(
          Builder builderForValue) {
        if (rexpValueBuilder_ == null) {
          ensureRexpValueIsMutable();
          rexpValue_.add(builderForValue.build());
          onChanged();
        } else {
          rexpValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValue(
          int index, Builder builderForValue) {
        if (rexpValueBuilder_ == null) {
          ensureRexpValueIsMutable();
          rexpValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          rexpValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addAllRexpValue(
          Iterable<? extends REXP> values) {
        if (rexpValueBuilder_ == null) {
          ensureRexpValueIsMutable();
          super.addAll(values, rexpValue_);
          onChanged();
        } else {
          rexpValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder clearRexpValue() {
        if (rexpValueBuilder_ == null) {
          rexpValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          rexpValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder removeRexpValue(int index) {
        if (rexpValueBuilder_ == null) {
          ensureRexpValueIsMutable();
          rexpValue_.remove(index);
          onChanged();
        } else {
          rexpValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder getRexpValueBuilder(
          int index) {
        return getRexpValueFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public REXPOrBuilder getRexpValueOrBuilder(
          int index) {
        if (rexpValueBuilder_ == null) {
          return rexpValue_.get(index);  } else {
          return rexpValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public java.util.List<? extends REXPOrBuilder>
           getRexpValueOrBuilderList() {
        if (rexpValueBuilder_ != null) {
          return rexpValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rexpValue_);
        }
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValueBuilder() {
        return getRexpValueFieldBuilder().addBuilder(
            REXP.getDefaultInstance());
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public Builder addRexpValueBuilder(
          int index) {
        return getRexpValueFieldBuilder().addBuilder(
            index, REXP.getDefaultInstance());
      }
      /**
       * <code>repeated .REXP rexpValue = 8;</code>
       */
      public java.util.List<Builder>
           getRexpValueBuilderList() {
        return getRexpValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          REXP, Builder, REXPOrBuilder>
          getRexpValueFieldBuilder() {
        if (rexpValueBuilder_ == null) {
          rexpValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              REXP, Builder, REXPOrBuilder>(
                  rexpValue_,
                  ((bitField0_ & 0x00000080) == 0x00000080),
                  getParentForChildren(),
                  isClean());
          rexpValue_ = null;
        }
        return rexpValueBuilder_;
      }

      // repeated string attrName = 11;
      private com.google.protobuf.LazyStringList attrName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAttrNameIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          attrName_ = new com.google.protobuf.LazyStringArrayList(attrName_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public java.util.List<String>
          getAttrNameList() {
        return java.util.Collections.unmodifiableList(attrName_);
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public int getAttrNameCount() {
        return attrName_.size();
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public String getAttrName(int index) {
        return attrName_.get(index);
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public com.google.protobuf.ByteString
          getAttrNameBytes(int index) {
        return attrName_.getByteString(index);
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public Builder setAttrName(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAttrNameIsMutable();
        attrName_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public Builder addAttrName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAttrNameIsMutable();
        attrName_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public Builder addAllAttrName(
          Iterable<String> values) {
        ensureAttrNameIsMutable();
        super.addAll(values, attrName_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public Builder clearAttrName() {
        attrName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string attrName = 11;</code>
       */
      public Builder addAttrNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAttrNameIsMutable();
        attrName_.add(value);
        onChanged();
        return this;
      }

      // repeated .REXP attrValue = 12;
      private java.util.List<REXP> attrValue_ =
        java.util.Collections.emptyList();
      private void ensureAttrValueIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          attrValue_ = new java.util.ArrayList<REXP>(attrValue_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          REXP, Builder, REXPOrBuilder> attrValueBuilder_;

      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public java.util.List<REXP> getAttrValueList() {
        if (attrValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attrValue_);
        } else {
          return attrValueBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public int getAttrValueCount() {
        if (attrValueBuilder_ == null) {
          return attrValue_.size();
        } else {
          return attrValueBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public REXP getAttrValue(int index) {
        if (attrValueBuilder_ == null) {
          return attrValue_.get(index);
        } else {
          return attrValueBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder setAttrValue(
          int index, REXP value) {
        if (attrValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrValueIsMutable();
          attrValue_.set(index, value);
          onChanged();
        } else {
          attrValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder setAttrValue(
          int index, Builder builderForValue) {
        if (attrValueBuilder_ == null) {
          ensureAttrValueIsMutable();
          attrValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          attrValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValue(REXP value) {
        if (attrValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrValueIsMutable();
          attrValue_.add(value);
          onChanged();
        } else {
          attrValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValue(
          int index, REXP value) {
        if (attrValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrValueIsMutable();
          attrValue_.add(index, value);
          onChanged();
        } else {
          attrValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValue(
          Builder builderForValue) {
        if (attrValueBuilder_ == null) {
          ensureAttrValueIsMutable();
          attrValue_.add(builderForValue.build());
          onChanged();
        } else {
          attrValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValue(
          int index, Builder builderForValue) {
        if (attrValueBuilder_ == null) {
          ensureAttrValueIsMutable();
          attrValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          attrValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAllAttrValue(
          Iterable<? extends REXP> values) {
        if (attrValueBuilder_ == null) {
          ensureAttrValueIsMutable();
          super.addAll(values, attrValue_);
          onChanged();
        } else {
          attrValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder clearAttrValue() {
        if (attrValueBuilder_ == null) {
          attrValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          attrValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder removeAttrValue(int index) {
        if (attrValueBuilder_ == null) {
          ensureAttrValueIsMutable();
          attrValue_.remove(index);
          onChanged();
        } else {
          attrValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder getAttrValueBuilder(
          int index) {
        return getAttrValueFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public REXPOrBuilder getAttrValueOrBuilder(
          int index) {
        if (attrValueBuilder_ == null) {
          return attrValue_.get(index);  } else {
          return attrValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public java.util.List<? extends REXPOrBuilder>
           getAttrValueOrBuilderList() {
        if (attrValueBuilder_ != null) {
          return attrValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attrValue_);
        }
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValueBuilder() {
        return getAttrValueFieldBuilder().addBuilder(
            REXP.getDefaultInstance());
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public Builder addAttrValueBuilder(
          int index) {
        return getAttrValueFieldBuilder().addBuilder(
            index, REXP.getDefaultInstance());
      }
      /**
       * <code>repeated .REXP attrValue = 12;</code>
       */
      public java.util.List<Builder>
           getAttrValueBuilderList() {
        return getAttrValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          REXP, Builder, REXPOrBuilder>
          getAttrValueFieldBuilder() {
        if (attrValueBuilder_ == null) {
          attrValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              REXP, Builder, REXPOrBuilder>(
                  attrValue_,
                  ((bitField0_ & 0x00000200) == 0x00000200),
                  getParentForChildren(),
                  isClean());
          attrValue_ = null;
        }
        return attrValueBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:REXP)
    }

    static {
      defaultInstance = new REXP(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:REXP)
  }

  public interface STRINGOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string strval = 1;
    /**
     * <code>optional string strval = 1;</code>
     */
    boolean hasStrval();
    /**
     * <code>optional string strval = 1;</code>
     */
    String getStrval();
    /**
     * <code>optional string strval = 1;</code>
     */
    com.google.protobuf.ByteString
        getStrvalBytes();

    // optional bool isNA = 2 [default = false];
    /**
     * <code>optional bool isNA = 2 [default = false];</code>
     */
    boolean hasIsNA();
    /**
     * <code>optional bool isNA = 2 [default = false];</code>
     */
    boolean getIsNA();
  }
  /**
   * Protobuf type {@code STRING}
   */
  public static final class STRING extends
      com.google.protobuf.GeneratedMessage
      implements STRINGOrBuilder {
    // Use STRING.newBuilder() to construct.
    private STRING(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private STRING(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final STRING defaultInstance;
    public static STRING getDefaultInstance() {
      return defaultInstance;
    }

    public STRING getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private STRING(
        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: {
              bitField0_ |= 0x00000001;
              strval_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              isNA_ = input.readBool();
              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 REXPProtos.internal_static_STRING_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return REXPProtos.internal_static_STRING_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              STRING.class, Builder.class);
    }

    public static com.google.protobuf.Parser<STRING> PARSER =
        new com.google.protobuf.AbstractParser<STRING>() {
      public STRING parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new STRING(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<STRING> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional string strval = 1;
    public static final int STRVAL_FIELD_NUMBER = 1;
    private Object strval_;
    /**
     * <code>optional string strval = 1;</code>
     */
    public boolean hasStrval() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string strval = 1;</code>
     */
    public String getStrval() {
      Object ref = strval_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          strval_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string strval = 1;</code>
     */
    public com.google.protobuf.ByteString
        getStrvalBytes() {
      Object ref = strval_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        strval_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional bool isNA = 2 [default = false];
    public static final int ISNA_FIELD_NUMBER = 2;
    private boolean isNA_;
    /**
     * <code>optional bool isNA = 2 [default = false];</code>
     */
    public boolean hasIsNA() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool isNA = 2 [default = false];</code>
     */
    public boolean getIsNA() {
      return isNA_;
    }

    private void initFields() {
      strval_ = "";
      isNA_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getStrvalBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(2, isNA_);
      }
      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
          .computeBytesSize(1, getStrvalBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isNA_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static STRING parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static STRING parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static STRING parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static STRING parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static STRING parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static STRING parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static STRING parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static STRING parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static STRING parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static STRING 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(STRING prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code STRING}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements STRINGOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return REXPProtos.internal_static_STRING_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return REXPProtos.internal_static_STRING_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                STRING.class, Builder.class);
      }

      // Construct using org.godhuli.rhipe.REXPProtos.STRING.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          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();
        strval_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        isNA_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return REXPProtos.internal_static_STRING_descriptor;
      }

      public STRING getDefaultInstanceForType() {
        return STRING.getDefaultInstance();
      }

      public STRING build() {
        STRING result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public STRING buildPartial() {
        STRING result = new STRING(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.strval_ = strval_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.isNA_ = isNA_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof STRING) {
          return mergeFrom((STRING)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(STRING other) {
        if (other == STRING.getDefaultInstance()) return this;
        if (other.hasStrval()) {
          bitField0_ |= 0x00000001;
          strval_ = other.strval_;
          onChanged();
        }
        if (other.hasIsNA()) {
          setIsNA(other.getIsNA());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        STRING parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (STRING) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string strval = 1;
      private Object strval_ = "";
      /**
       * <code>optional string strval = 1;</code>
       */
      public boolean hasStrval() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string strval = 1;</code>
       */
      public String getStrval() {
        Object ref = strval_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          strval_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>optional string strval = 1;</code>
       */
      public com.google.protobuf.ByteString
          getStrvalBytes() {
        Object ref = strval_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          strval_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string strval = 1;</code>
       */
      public Builder setStrval(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        strval_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string strval = 1;</code>
       */
      public Builder clearStrval() {
        bitField0_ = (bitField0_ & ~0x00000001);
        strval_ = getDefaultInstance().getStrval();
        onChanged();
        return this;
      }
      /**
       * <code>optional string strval = 1;</code>
       */
      public Builder setStrvalBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        strval_ = value;
        onChanged();
        return this;
      }

      // optional bool isNA = 2 [default = false];
      private boolean isNA_ ;
      /**
       * <code>optional bool isNA = 2 [default = false];</code>
       */
      public boolean hasIsNA() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool isNA = 2 [default = false];</code>
       */
      public boolean getIsNA() {
        return isNA_;
      }
      /**
       * <code>optional bool isNA = 2 [default = false];</code>
       */
      public Builder setIsNA(boolean value) {
        bitField0_ |= 0x00000002;
        isNA_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isNA = 2 [default = false];</code>
       */
      public Builder clearIsNA() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isNA_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:STRING)
    }

    static {
      defaultInstance = new STRING(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:STRING)
  }

  public interface CMPLXOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional double real = 1 [default = 0];
    /**
     * <code>optional double real = 1 [default = 0];</code>
     */
    boolean hasReal();
    /**
     * <code>optional double real = 1 [default = 0];</code>
     */
    double getReal();

    // required double imag = 2;
    /**
     * <code>required double imag = 2;</code>
     */
    boolean hasImag();
    /**
     * <code>required double imag = 2;</code>
     */
    double getImag();
  }
  /**
   * Protobuf type {@code CMPLX}
   */
  public static final class CMPLX extends
      com.google.protobuf.GeneratedMessage
      implements CMPLXOrBuilder {
    // Use CMPLX.newBuilder() to construct.
    private CMPLX(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMPLX(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CMPLX defaultInstance;
    public static CMPLX getDefaultInstance() {
      return defaultInstance;
    }

    public CMPLX getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMPLX(
        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 9: {
              bitField0_ |= 0x00000001;
              real_ = input.readDouble();
              break;
            }
            case 17: {
              bitField0_ |= 0x00000002;
              imag_ = input.readDouble();
              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 REXPProtos.internal_static_CMPLX_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return REXPProtos.internal_static_CMPLX_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              CMPLX.class, Builder.class);
    }

    public static com.google.protobuf.Parser<CMPLX> PARSER =
        new com.google.protobuf.AbstractParser<CMPLX>() {
      public CMPLX parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CMPLX(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<CMPLX> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional double real = 1 [default = 0];
    public static final int REAL_FIELD_NUMBER = 1;
    private double real_;
    /**
     * <code>optional double real = 1 [default = 0];</code>
     */
    public boolean hasReal() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional double real = 1 [default = 0];</code>
     */
    public double getReal() {
      return real_;
    }

    // required double imag = 2;
    public static final int IMAG_FIELD_NUMBER = 2;
    private double imag_;
    /**
     * <code>required double imag = 2;</code>
     */
    public boolean hasImag() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required double imag = 2;</code>
     */
    public double getImag() {
      return imag_;
    }

    private void initFields() {
      real_ = 0D;
      imag_ = 0D;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasImag()) {
        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.writeDouble(1, real_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeDouble(2, imag_);
      }
      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
          .computeDoubleSize(1, real_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, imag_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static CMPLX parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static CMPLX parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static CMPLX parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static CMPLX parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static CMPLX parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static CMPLX parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static CMPLX parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static CMPLX parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static CMPLX parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static CMPLX 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(CMPLX prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CMPLX}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements CMPLXOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return REXPProtos.internal_static_CMPLX_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return REXPProtos.internal_static_CMPLX_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                CMPLX.class, Builder.class);
      }

      // Construct using org.godhuli.rhipe.REXPProtos.CMPLX.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          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();
        real_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000001);
        imag_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return REXPProtos.internal_static_CMPLX_descriptor;
      }

      public CMPLX getDefaultInstanceForType() {
        return CMPLX.getDefaultInstance();
      }

      public CMPLX build() {
        CMPLX result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public CMPLX buildPartial() {
        CMPLX result = new CMPLX(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.real_ = real_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.imag_ = imag_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof CMPLX) {
          return mergeFrom((CMPLX)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(CMPLX other) {
        if (other == CMPLX.getDefaultInstance()) return this;
        if (other.hasReal()) {
          setReal(other.getReal());
        }
        if (other.hasImag()) {
          setImag(other.getImag());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasImag()) {

          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        CMPLX parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (CMPLX) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional double real = 1 [default = 0];
      private double real_ ;
      /**
       * <code>optional double real = 1 [default = 0];</code>
       */
      public boolean hasReal() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional double real = 1 [default = 0];</code>
       */
      public double getReal() {
        return real_;
      }
      /**
       * <code>optional double real = 1 [default = 0];</code>
       */
      public Builder setReal(double value) {
        bitField0_ |= 0x00000001;
        real_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional double real = 1 [default = 0];</code>
       */
      public Builder clearReal() {
        bitField0_ = (bitField0_ & ~0x00000001);
        real_ = 0D;
        onChanged();
        return this;
      }

      // required double imag = 2;
      private double imag_ ;
      /**
       * <code>required double imag = 2;</code>
       */
      public boolean hasImag() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required double imag = 2;</code>
       */
      public double getImag() {
        return imag_;
      }
      /**
       * <code>required double imag = 2;</code>
       */
      public Builder setImag(double value) {
        bitField0_ |= 0x00000002;
        imag_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required double imag = 2;</code>
       */
      public Builder clearImag() {
        bitField0_ = (bitField0_ & ~0x00000002);
        imag_ = 0D;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMPLX)
    }

    static {
      defaultInstance = new CMPLX(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CMPLX)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_REXP_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_REXP_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_STRING_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_STRING_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_CMPLX_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMPLX_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\nrexp.proto\"\274\003\n\004REXP\022\034\n\006rclass\030\001 \002(\0162\014." +
      "REXP.RClass\022\025\n\trealValue\030\002 \003(\001B\002\020\001\022\024\n\010in" +
      "tValue\030\003 \003(\021B\002\020\001\022$\n\014booleanValue\030\004 \003(\0162\016" +
      ".REXP.RBOOLEAN\022\034\n\013stringValue\030\005 \003(\0132\007.ST" +
      "RING\022\020\n\010rawValue\030\006 \001(\014\022\034\n\014complexValue\030\007" +
      " \003(\0132\006.CMPLX\022\030\n\trexpValue\030\010 \003(\0132\005.REXP\022\020" +
      "\n\010attrName\030\013 \003(\t\022\030\n\tattrValue\030\014 \003(\0132\005.RE" +
      "XP\"\214\001\n\006RClass\022\n\n\006STRING\020\000\022\007\n\003RAW\020\001\022\010\n\004RE" +
      "AL\020\002\022\013\n\007COMPLEX\020\003\022\013\n\007INTEGER\020\004\022\010\n\004LIST\020\005" +
      "\022\013\n\007LOGICAL\020\006\022\014\n\010NULLTYPE\020\007\022\t\n\005REAL1\020\010\022\014",
      "\n\010INTEGER1\020\n\022\013\n\007STRING1\020\t\" \n\010RBOOLEAN\022\005\n" +
      "\001F\020\000\022\005\n\001T\020\001\022\006\n\002NA\020\002\"-\n\006STRING\022\016\n\006strval\030" +
      "\001 \001(\t\022\023\n\004isNA\030\002 \001(\010:\005false\"&\n\005CMPLX\022\017\n\004r" +
      "eal\030\001 \001(\001:\0010\022\014\n\004imag\030\002 \002(\001B\037\n\021org.godhul" +
      "i.rhipeB\nREXPProtos"
    };
    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_REXP_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_REXP_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_REXP_descriptor,
              new String[] { "Rclass", "RealValue", "IntValue", "BooleanValue", "StringValue", "RawValue", "ComplexValue", "RexpValue", "AttrName", "AttrValue", });
          internal_static_STRING_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_STRING_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_STRING_descriptor,
              new String[] { "Strval", "IsNA", });
          internal_static_CMPLX_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_CMPLX_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_CMPLX_descriptor,
              new String[] { "Real", "Imag", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
