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

package eu.dnetlib.data.proto;

public final class FieldTypeProtos {
  private FieldTypeProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface StringFieldOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string value = 1;
    boolean hasValue();
    String getValue();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class StringField extends
      com.google.protobuf.GeneratedMessage
      implements StringFieldOrBuilder {
    // Use StringField.newBuilder() to construct.
    private StringField(Builder builder) {
      super(builder);
    }
    private StringField(boolean noInit) {}
    
    private static final StringField defaultInstance;
    public static StringField getDefaultInstance() {
      return defaultInstance;
    }
    
    public StringField getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StringField_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StringField_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string value = 1;
    public static final int VALUE_FIELD_NUMBER = 1;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    public static final int DATAINFO_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      value_ = "";
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDataInfo()) {
        if (!getDataInfo().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.writeBytes(1, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, dataInfo_);
      }
      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, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StringField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.StringField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StringField_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StringField_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField build() {
        eu.dnetlib.data.proto.FieldTypeProtos.StringField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.StringField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.StringField result = new eu.dnetlib.data.proto.FieldTypeProtos.StringField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.StringField) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.StringField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.StringField other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasValue()) {
          
          return false;
        }
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              value_ = input.readBytes();
              break;
            }
            case 18: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string value = 1;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.StringField)
    }
    
    static {
      defaultInstance = new StringField(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.StringField)
  }
  
  public interface BoolFieldOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required bool value = 1;
    boolean hasValue();
    boolean getValue();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class BoolField extends
      com.google.protobuf.GeneratedMessage
      implements BoolFieldOrBuilder {
    // Use BoolField.newBuilder() to construct.
    private BoolField(Builder builder) {
      super(builder);
    }
    private BoolField(boolean noInit) {}
    
    private static final BoolField defaultInstance;
    public static BoolField getDefaultInstance() {
      return defaultInstance;
    }
    
    public BoolField getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_BoolField_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_BoolField_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required bool value = 1;
    public static final int VALUE_FIELD_NUMBER = 1;
    private boolean value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public boolean getValue() {
      return value_;
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    public static final int DATAINFO_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      value_ = false;
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDataInfo()) {
        if (!getDataInfo().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.writeBool(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, dataInfo_);
      }
      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
          .computeBoolSize(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.BoolField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.BoolField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.BoolFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_BoolField_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_BoolField_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.BoolField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        value_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.BoolField.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.BoolField getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.BoolField.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.BoolField build() {
        eu.dnetlib.data.proto.FieldTypeProtos.BoolField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.BoolField buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.BoolField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.BoolField buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.BoolField result = new eu.dnetlib.data.proto.FieldTypeProtos.BoolField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.BoolField) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.BoolField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.BoolField other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.BoolField.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasValue()) {
          
          return false;
        }
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              value_ = input.readBool();
              break;
            }
            case 18: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required bool value = 1;
      private boolean value_ ;
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public boolean getValue() {
        return value_;
      }
      public Builder setValue(boolean value) {
        bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = false;
        onChanged();
        return this;
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.BoolField)
    }
    
    static {
      defaultInstance = new BoolField(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.BoolField)
  }
  
  public interface IntFieldOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required int32 value = 1;
    boolean hasValue();
    int getValue();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class IntField extends
      com.google.protobuf.GeneratedMessage
      implements IntFieldOrBuilder {
    // Use IntField.newBuilder() to construct.
    private IntField(Builder builder) {
      super(builder);
    }
    private IntField(boolean noInit) {}
    
    private static final IntField defaultInstance;
    public static IntField getDefaultInstance() {
      return defaultInstance;
    }
    
    public IntField getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_IntField_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_IntField_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required int32 value = 1;
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getValue() {
      return value_;
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
    public static final int DATAINFO_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      value_ = 0;
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDataInfo()) {
        if (!getDataInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, dataInfo_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.IntField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.IntField prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.IntFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_IntField_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_IntField_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.IntField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        value_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.IntField.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.IntField getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.IntField.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.IntField build() {
        eu.dnetlib.data.proto.FieldTypeProtos.IntField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.IntField buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.IntField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.IntField buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.IntField result = new eu.dnetlib.data.proto.FieldTypeProtos.IntField(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.IntField) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.IntField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.IntField other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.IntField.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasValue()) {
          
          return false;
        }
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              value_ = input.readInt32();
              break;
            }
            case 18: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required int32 value = 1;
      private int value_ ;
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getValue() {
        return value_;
      }
      public Builder setValue(int value) {
        bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = 0;
        onChanged();
        return this;
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.IntField)
    }
    
    static {
      defaultInstance = new IntField(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.IntField)
  }
  
  public interface StructuredPropertyOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string value = 1;
    boolean hasValue();
    String getValue();
    
    // optional .eu.dnetlib.data.proto.Qualifier qualifier = 2;
    boolean hasQualifier();
    eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getQualifier();
    eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getQualifierOrBuilder();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class StructuredProperty extends
      com.google.protobuf.GeneratedMessage
      implements StructuredPropertyOrBuilder {
    // Use StructuredProperty.newBuilder() to construct.
    private StructuredProperty(Builder builder) {
      super(builder);
    }
    private StructuredProperty(boolean noInit) {}
    
    private static final StructuredProperty defaultInstance;
    public static StructuredProperty getDefaultInstance() {
      return defaultInstance;
    }
    
    public StructuredProperty getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StructuredProperty_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StructuredProperty_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string value = 1;
    public static final int VALUE_FIELD_NUMBER = 1;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .eu.dnetlib.data.proto.Qualifier qualifier = 2;
    public static final int QUALIFIER_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier qualifier_;
    public boolean hasQualifier() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getQualifier() {
      return qualifier_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getQualifierOrBuilder() {
      return qualifier_;
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
    public static final int DATAINFO_FIELD_NUMBER = 3;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      value_ = "";
      qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasQualifier()) {
        if (!getQualifier().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDataInfo()) {
        if (!getDataInfo().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.writeBytes(1, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, qualifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, dataInfo_);
      }
      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, getValueBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, qualifier_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StructuredProperty_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_StructuredProperty_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getQualifierFieldBuilder();
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (qualifierBuilder_ == null) {
          qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        } else {
          qualifierBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty build() {
        eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty result = new eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (qualifierBuilder_ == null) {
          result.qualifier_ = qualifier_;
        } else {
          result.qualifier_ = qualifierBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasQualifier()) {
          mergeQualifier(other.getQualifier());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasValue()) {
          
          return false;
        }
        if (hasQualifier()) {
          if (!getQualifier().isInitialized()) {
            
            return false;
          }
        }
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              value_ = input.readBytes();
              break;
            }
            case 18: {
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
              if (hasQualifier()) {
                subBuilder.mergeFrom(getQualifier());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setQualifier(subBuilder.buildPartial());
              break;
            }
            case 26: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string value = 1;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier qualifier = 2;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> qualifierBuilder_;
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getQualifier() {
        if (qualifierBuilder_ == null) {
          return qualifier_;
        } else {
          return qualifierBuilder_.getMessage();
        }
      }
      public Builder setQualifier(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
        if (qualifierBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          qualifier_ = value;
          onChanged();
        } else {
          qualifierBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder setQualifier(
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
        if (qualifierBuilder_ == null) {
          qualifier_ = builderForValue.build();
          onChanged();
        } else {
          qualifierBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder mergeQualifier(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
        if (qualifierBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              qualifier_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
            qualifier_ =
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(qualifier_).mergeFrom(value).buildPartial();
          } else {
            qualifier_ = value;
          }
          onChanged();
        } else {
          qualifierBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      public Builder clearQualifier() {
        if (qualifierBuilder_ == null) {
          qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          onChanged();
        } else {
          qualifierBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getQualifierBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getQualifierFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getQualifierOrBuilder() {
        if (qualifierBuilder_ != null) {
          return qualifierBuilder_.getMessageOrBuilder();
        } else {
          return qualifier_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
          getQualifierFieldBuilder() {
        if (qualifierBuilder_ == null) {
          qualifierBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                  qualifier_,
                  getParentForChildren(),
                  isClean());
          qualifier_ = null;
        }
        return qualifierBuilder_;
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.StructuredProperty)
    }
    
    static {
      defaultInstance = new StructuredProperty(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.StructuredProperty)
  }
  
  public interface KeyValueOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string key = 1;
    boolean hasKey();
    String getKey();
    
    // optional string value = 2;
    boolean hasValue();
    String getValue();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class KeyValue extends
      com.google.protobuf.GeneratedMessage
      implements KeyValueOrBuilder {
    // Use KeyValue.newBuilder() to construct.
    private KeyValue(Builder builder) {
      super(builder);
    }
    private KeyValue(boolean noInit) {}
    
    private static final KeyValue defaultInstance;
    public static KeyValue getDefaultInstance() {
      return defaultInstance;
    }
    
    public KeyValue getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_KeyValue_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_KeyValue_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string key = 1;
    public static final int KEY_FIELD_NUMBER = 1;
    private java.lang.Object key_;
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          key_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
    public static final int DATAINFO_FIELD_NUMBER = 3;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      key_ = "";
      value_ = "";
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasDataInfo()) {
        if (!getDataInfo().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.writeBytes(1, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, dataInfo_);
      }
      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, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getValueBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.KeyValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_KeyValue_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_KeyValue_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue build() {
        eu.dnetlib.data.proto.FieldTypeProtos.KeyValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.KeyValue buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.KeyValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.KeyValue result = new eu.dnetlib.data.proto.FieldTypeProtos.KeyValue(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.KeyValue) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.KeyValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance()) return this;
        if (other.hasKey()) {
          setKey(other.getKey());
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasKey()) {
          
          return false;
        }
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              key_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = input.readBytes();
              break;
            }
            case 26: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string key = 1;
      private java.lang.Object key_ = "";
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setKey(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      void setKey(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
      }
      
      // optional string value = 2;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 3;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.KeyValue)
    }
    
    static {
      defaultInstance = new KeyValue(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.KeyValue)
  }
  
  public interface QualifierOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional string classid = 1;
    boolean hasClassid();
    String getClassid();
    
    // optional string classname = 2;
    boolean hasClassname();
    String getClassname();
    
    // optional string schemeid = 3;
    boolean hasSchemeid();
    String getSchemeid();
    
    // optional string schemename = 4;
    boolean hasSchemename();
    String getSchemename();
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 5;
    boolean hasDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
    eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
  }
  public static final class Qualifier extends
      com.google.protobuf.GeneratedMessage
      implements QualifierOrBuilder {
    // Use Qualifier.newBuilder() to construct.
    private Qualifier(Builder builder) {
      super(builder);
    }
    private Qualifier(boolean noInit) {}
    
    private static final Qualifier defaultInstance;
    public static Qualifier getDefaultInstance() {
      return defaultInstance;
    }
    
    public Qualifier getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Qualifier_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Qualifier_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional string classid = 1;
    public static final int CLASSID_FIELD_NUMBER = 1;
    private java.lang.Object classid_;
    public boolean hasClassid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getClassid() {
      java.lang.Object ref = classid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          classid_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getClassidBytes() {
      java.lang.Object ref = classid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        classid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string classname = 2;
    public static final int CLASSNAME_FIELD_NUMBER = 2;
    private java.lang.Object classname_;
    public boolean hasClassname() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getClassname() {
      java.lang.Object ref = classname_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          classname_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getClassnameBytes() {
      java.lang.Object ref = classname_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        classname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string schemeid = 3;
    public static final int SCHEMEID_FIELD_NUMBER = 3;
    private java.lang.Object schemeid_;
    public boolean hasSchemeid() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public String getSchemeid() {
      java.lang.Object ref = schemeid_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          schemeid_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getSchemeidBytes() {
      java.lang.Object ref = schemeid_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        schemeid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string schemename = 4;
    public static final int SCHEMENAME_FIELD_NUMBER = 4;
    private java.lang.Object schemename_;
    public boolean hasSchemename() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public String getSchemename() {
      java.lang.Object ref = schemename_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          schemename_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getSchemenameBytes() {
      java.lang.Object ref = schemename_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        schemename_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 5;
    public static final int DATAINFO_FIELD_NUMBER = 5;
    private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
    public boolean hasDataInfo() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
      return dataInfo_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
      return dataInfo_;
    }
    
    private void initFields() {
      classid_ = "";
      classname_ = "";
      schemeid_ = "";
      schemename_ = "";
      dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasDataInfo()) {
        if (!getDataInfo().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.writeBytes(1, getClassidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getClassnameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getSchemeidBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getSchemenameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, dataInfo_);
      }
      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, getClassidBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getClassnameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getSchemeidBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getSchemenameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, dataInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Qualifier parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Qualifier_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Qualifier_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getDataInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        classid_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        classname_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        schemeid_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        schemename_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier build() {
        eu.dnetlib.data.proto.FieldTypeProtos.Qualifier result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.Qualifier result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.Qualifier result = new eu.dnetlib.data.proto.FieldTypeProtos.Qualifier(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.classid_ = classid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.classname_ = classname_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.schemeid_ = schemeid_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.schemename_ = schemename_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (dataInfoBuilder_ == null) {
          result.dataInfo_ = dataInfo_;
        } else {
          result.dataInfo_ = dataInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.Qualifier) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.Qualifier)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) return this;
        if (other.hasClassid()) {
          setClassid(other.getClassid());
        }
        if (other.hasClassname()) {
          setClassname(other.getClassname());
        }
        if (other.hasSchemeid()) {
          setSchemeid(other.getSchemeid());
        }
        if (other.hasSchemename()) {
          setSchemename(other.getSchemename());
        }
        if (other.hasDataInfo()) {
          mergeDataInfo(other.getDataInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasDataInfo()) {
          if (!getDataInfo().isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              classid_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              classname_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              schemeid_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              schemename_ = input.readBytes();
              break;
            }
            case 42: {
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
              if (hasDataInfo()) {
                subBuilder.mergeFrom(getDataInfo());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setDataInfo(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional string classid = 1;
      private java.lang.Object classid_ = "";
      public boolean hasClassid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getClassid() {
        java.lang.Object ref = classid_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          classid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setClassid(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        classid_ = value;
        onChanged();
        return this;
      }
      public Builder clearClassid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        classid_ = getDefaultInstance().getClassid();
        onChanged();
        return this;
      }
      void setClassid(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        classid_ = value;
        onChanged();
      }
      
      // optional string classname = 2;
      private java.lang.Object classname_ = "";
      public boolean hasClassname() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getClassname() {
        java.lang.Object ref = classname_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          classname_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setClassname(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        classname_ = value;
        onChanged();
        return this;
      }
      public Builder clearClassname() {
        bitField0_ = (bitField0_ & ~0x00000002);
        classname_ = getDefaultInstance().getClassname();
        onChanged();
        return this;
      }
      void setClassname(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        classname_ = value;
        onChanged();
      }
      
      // optional string schemeid = 3;
      private java.lang.Object schemeid_ = "";
      public boolean hasSchemeid() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getSchemeid() {
        java.lang.Object ref = schemeid_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          schemeid_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setSchemeid(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        schemeid_ = value;
        onChanged();
        return this;
      }
      public Builder clearSchemeid() {
        bitField0_ = (bitField0_ & ~0x00000004);
        schemeid_ = getDefaultInstance().getSchemeid();
        onChanged();
        return this;
      }
      void setSchemeid(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000004;
        schemeid_ = value;
        onChanged();
      }
      
      // optional string schemename = 4;
      private java.lang.Object schemename_ = "";
      public boolean hasSchemename() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getSchemename() {
        java.lang.Object ref = schemename_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          schemename_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setSchemename(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        schemename_ = value;
        onChanged();
        return this;
      }
      public Builder clearSchemename() {
        bitField0_ = (bitField0_ & ~0x00000008);
        schemename_ = getDefaultInstance().getSchemename();
        onChanged();
        return this;
      }
      void setSchemename(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000008;
        schemename_ = value;
        onChanged();
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        if (dataInfoBuilder_ == null) {
          return dataInfo_;
        } else {
          return dataInfoBuilder_.getMessage();
        }
      }
      public Builder setDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataInfo_ = value;
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder setDataInfo(
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = builderForValue.build();
          onChanged();
        } else {
          dataInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
        if (dataInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              dataInfo_ != eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) {
            dataInfo_ =
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder(dataInfo_).mergeFrom(value).buildPartial();
          } else {
            dataInfo_ = value;
          }
          onChanged();
        } else {
          dataInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      public Builder clearDataInfo() {
        if (dataInfoBuilder_ == null) {
          dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          onChanged();
        } else {
          dataInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getDataInfoFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        if (dataInfoBuilder_ != null) {
          return dataInfoBuilder_.getMessageOrBuilder();
        } else {
          return dataInfo_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoFieldBuilder() {
        if (dataInfoBuilder_ == null) {
          dataInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                  dataInfo_,
                  getParentForChildren(),
                  isClean());
          dataInfo_ = null;
        }
        return dataInfoBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Qualifier)
    }
    
    static {
      defaultInstance = new Qualifier(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Qualifier)
  }
  
  public interface DataInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional bool invisible = 6 [default = false];
    boolean hasInvisible();
    boolean getInvisible();
    
    // optional bool inferred = 1;
    boolean hasInferred();
    boolean getInferred();
    
    // optional bool deletedbyinference = 2;
    boolean hasDeletedbyinference();
    boolean getDeletedbyinference();
    
    // optional string trust = 3;
    boolean hasTrust();
    String getTrust();
    
    // optional string inferenceprovenance = 4;
    boolean hasInferenceprovenance();
    String getInferenceprovenance();
    
    // required .eu.dnetlib.data.proto.Qualifier provenanceaction = 5;
    boolean hasProvenanceaction();
    eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProvenanceaction();
    eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProvenanceactionOrBuilder();
  }
  public static final class DataInfo extends
      com.google.protobuf.GeneratedMessage
      implements DataInfoOrBuilder {
    // Use DataInfo.newBuilder() to construct.
    private DataInfo(Builder builder) {
      super(builder);
    }
    private DataInfo(boolean noInit) {}
    
    private static final DataInfo defaultInstance;
    public static DataInfo getDefaultInstance() {
      return defaultInstance;
    }
    
    public DataInfo getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_DataInfo_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_DataInfo_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional bool invisible = 6 [default = false];
    public static final int INVISIBLE_FIELD_NUMBER = 6;
    private boolean invisible_;
    public boolean hasInvisible() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public boolean getInvisible() {
      return invisible_;
    }
    
    // optional bool inferred = 1;
    public static final int INFERRED_FIELD_NUMBER = 1;
    private boolean inferred_;
    public boolean hasInferred() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public boolean getInferred() {
      return inferred_;
    }
    
    // optional bool deletedbyinference = 2;
    public static final int DELETEDBYINFERENCE_FIELD_NUMBER = 2;
    private boolean deletedbyinference_;
    public boolean hasDeletedbyinference() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public boolean getDeletedbyinference() {
      return deletedbyinference_;
    }
    
    // optional string trust = 3;
    public static final int TRUST_FIELD_NUMBER = 3;
    private java.lang.Object trust_;
    public boolean hasTrust() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public String getTrust() {
      java.lang.Object ref = trust_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          trust_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getTrustBytes() {
      java.lang.Object ref = trust_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        trust_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string inferenceprovenance = 4;
    public static final int INFERENCEPROVENANCE_FIELD_NUMBER = 4;
    private java.lang.Object inferenceprovenance_;
    public boolean hasInferenceprovenance() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public String getInferenceprovenance() {
      java.lang.Object ref = inferenceprovenance_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          inferenceprovenance_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getInferenceprovenanceBytes() {
      java.lang.Object ref = inferenceprovenance_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        inferenceprovenance_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required .eu.dnetlib.data.proto.Qualifier provenanceaction = 5;
    public static final int PROVENANCEACTION_FIELD_NUMBER = 5;
    private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier provenanceaction_;
    public boolean hasProvenanceaction() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProvenanceaction() {
      return provenanceaction_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProvenanceactionOrBuilder() {
      return provenanceaction_;
    }
    
    private void initFields() {
      invisible_ = false;
      inferred_ = false;
      deletedbyinference_ = false;
      trust_ = "";
      inferenceprovenance_ = "";
      provenanceaction_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasProvenanceaction()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getProvenanceaction().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(1, inferred_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(2, deletedbyinference_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(3, getTrustBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(4, getInferenceprovenanceBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(5, provenanceaction_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(6, invisible_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, inferred_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, deletedbyinference_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getTrustBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getInferenceprovenanceBytes());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, provenanceaction_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, invisible_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.DataInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_DataInfo_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_DataInfo_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getProvenanceactionFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        invisible_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        inferred_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        deletedbyinference_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        trust_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        inferenceprovenance_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        if (provenanceactionBuilder_ == null) {
          provenanceaction_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        } else {
          provenanceactionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo build() {
        eu.dnetlib.data.proto.FieldTypeProtos.DataInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.DataInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.DataInfo result = new eu.dnetlib.data.proto.FieldTypeProtos.DataInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.invisible_ = invisible_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.inferred_ = inferred_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.deletedbyinference_ = deletedbyinference_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.trust_ = trust_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.inferenceprovenance_ = inferenceprovenance_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        if (provenanceactionBuilder_ == null) {
          result.provenanceaction_ = provenanceaction_;
        } else {
          result.provenanceaction_ = provenanceactionBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.DataInfo) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.DataInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance()) return this;
        if (other.hasInvisible()) {
          setInvisible(other.getInvisible());
        }
        if (other.hasInferred()) {
          setInferred(other.getInferred());
        }
        if (other.hasDeletedbyinference()) {
          setDeletedbyinference(other.getDeletedbyinference());
        }
        if (other.hasTrust()) {
          setTrust(other.getTrust());
        }
        if (other.hasInferenceprovenance()) {
          setInferenceprovenance(other.getInferenceprovenance());
        }
        if (other.hasProvenanceaction()) {
          mergeProvenanceaction(other.getProvenanceaction());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasProvenanceaction()) {
          
          return false;
        }
        if (!getProvenanceaction().isInitialized()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000002;
              inferred_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000004;
              deletedbyinference_ = input.readBool();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000008;
              trust_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000010;
              inferenceprovenance_ = input.readBytes();
              break;
            }
            case 42: {
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
              if (hasProvenanceaction()) {
                subBuilder.mergeFrom(getProvenanceaction());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setProvenanceaction(subBuilder.buildPartial());
              break;
            }
            case 48: {
              bitField0_ |= 0x00000001;
              invisible_ = input.readBool();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional bool invisible = 6 [default = false];
      private boolean invisible_ ;
      public boolean hasInvisible() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public boolean getInvisible() {
        return invisible_;
      }
      public Builder setInvisible(boolean value) {
        bitField0_ |= 0x00000001;
        invisible_ = value;
        onChanged();
        return this;
      }
      public Builder clearInvisible() {
        bitField0_ = (bitField0_ & ~0x00000001);
        invisible_ = false;
        onChanged();
        return this;
      }
      
      // optional bool inferred = 1;
      private boolean inferred_ ;
      public boolean hasInferred() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public boolean getInferred() {
        return inferred_;
      }
      public Builder setInferred(boolean value) {
        bitField0_ |= 0x00000002;
        inferred_ = value;
        onChanged();
        return this;
      }
      public Builder clearInferred() {
        bitField0_ = (bitField0_ & ~0x00000002);
        inferred_ = false;
        onChanged();
        return this;
      }
      
      // optional bool deletedbyinference = 2;
      private boolean deletedbyinference_ ;
      public boolean hasDeletedbyinference() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getDeletedbyinference() {
        return deletedbyinference_;
      }
      public Builder setDeletedbyinference(boolean value) {
        bitField0_ |= 0x00000004;
        deletedbyinference_ = value;
        onChanged();
        return this;
      }
      public Builder clearDeletedbyinference() {
        bitField0_ = (bitField0_ & ~0x00000004);
        deletedbyinference_ = false;
        onChanged();
        return this;
      }
      
      // optional string trust = 3;
      private java.lang.Object trust_ = "";
      public boolean hasTrust() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getTrust() {
        java.lang.Object ref = trust_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          trust_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setTrust(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        trust_ = value;
        onChanged();
        return this;
      }
      public Builder clearTrust() {
        bitField0_ = (bitField0_ & ~0x00000008);
        trust_ = getDefaultInstance().getTrust();
        onChanged();
        return this;
      }
      void setTrust(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000008;
        trust_ = value;
        onChanged();
      }
      
      // optional string inferenceprovenance = 4;
      private java.lang.Object inferenceprovenance_ = "";
      public boolean hasInferenceprovenance() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getInferenceprovenance() {
        java.lang.Object ref = inferenceprovenance_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          inferenceprovenance_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setInferenceprovenance(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        inferenceprovenance_ = value;
        onChanged();
        return this;
      }
      public Builder clearInferenceprovenance() {
        bitField0_ = (bitField0_ & ~0x00000010);
        inferenceprovenance_ = getDefaultInstance().getInferenceprovenance();
        onChanged();
        return this;
      }
      void setInferenceprovenance(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000010;
        inferenceprovenance_ = value;
        onChanged();
      }
      
      // required .eu.dnetlib.data.proto.Qualifier provenanceaction = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier provenanceaction_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> provenanceactionBuilder_;
      public boolean hasProvenanceaction() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProvenanceaction() {
        if (provenanceactionBuilder_ == null) {
          return provenanceaction_;
        } else {
          return provenanceactionBuilder_.getMessage();
        }
      }
      public Builder setProvenanceaction(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
        if (provenanceactionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          provenanceaction_ = value;
          onChanged();
        } else {
          provenanceactionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder setProvenanceaction(
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
        if (provenanceactionBuilder_ == null) {
          provenanceaction_ = builderForValue.build();
          onChanged();
        } else {
          provenanceactionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder mergeProvenanceaction(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
        if (provenanceactionBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              provenanceaction_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
            provenanceaction_ =
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(provenanceaction_).mergeFrom(value).buildPartial();
          } else {
            provenanceaction_ = value;
          }
          onChanged();
        } else {
          provenanceactionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      public Builder clearProvenanceaction() {
        if (provenanceactionBuilder_ == null) {
          provenanceaction_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          onChanged();
        } else {
          provenanceactionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getProvenanceactionBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getProvenanceactionFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProvenanceactionOrBuilder() {
        if (provenanceactionBuilder_ != null) {
          return provenanceactionBuilder_.getMessageOrBuilder();
        } else {
          return provenanceaction_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
          getProvenanceactionFieldBuilder() {
        if (provenanceactionBuilder_ == null) {
          provenanceactionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                  provenanceaction_,
                  getParentForChildren(),
                  isClean());
          provenanceaction_ = null;
        }
        return provenanceactionBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.DataInfo)
    }
    
    static {
      defaultInstance = new DataInfo(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.DataInfo)
  }
  
  public interface OAIProvenanceOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 1;
    boolean hasOriginDescription();
    eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription();
    eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder();
  }
  public static final class OAIProvenance extends
      com.google.protobuf.GeneratedMessage
      implements OAIProvenanceOrBuilder {
    // Use OAIProvenance.newBuilder() to construct.
    private OAIProvenance(Builder builder) {
      super(builder);
    }
    private OAIProvenance(boolean noInit) {}
    
    private static final OAIProvenance defaultInstance;
    public static OAIProvenance getDefaultInstance() {
      return defaultInstance;
    }
    
    public OAIProvenance getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_fieldAccessorTable;
    }
    
    public interface OriginDescriptionOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional string harvestDate = 1;
      boolean hasHarvestDate();
      String getHarvestDate();
      
      // optional bool altered = 2 [default = true];
      boolean hasAltered();
      boolean getAltered();
      
      // optional string baseURL = 3;
      boolean hasBaseURL();
      String getBaseURL();
      
      // optional string identifier = 4;
      boolean hasIdentifier();
      String getIdentifier();
      
      // optional string datestamp = 5;
      boolean hasDatestamp();
      String getDatestamp();
      
      // optional string metadataNamespace = 6;
      boolean hasMetadataNamespace();
      String getMetadataNamespace();
      
      // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 7;
      boolean hasOriginDescription();
      eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription();
      eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder();
    }
    public static final class OriginDescription extends
        com.google.protobuf.GeneratedMessage
        implements OriginDescriptionOrBuilder {
      // Use OriginDescription.newBuilder() to construct.
      private OriginDescription(Builder builder) {
        super(builder);
      }
      private OriginDescription(boolean noInit) {}
      
      private static final OriginDescription defaultInstance;
      public static OriginDescription getDefaultInstance() {
        return defaultInstance;
      }
      
      public OriginDescription getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional string harvestDate = 1;
      public static final int HARVESTDATE_FIELD_NUMBER = 1;
      private java.lang.Object harvestDate_;
      public boolean hasHarvestDate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getHarvestDate() {
        java.lang.Object ref = harvestDate_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            harvestDate_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getHarvestDateBytes() {
        java.lang.Object ref = harvestDate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          harvestDate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bool altered = 2 [default = true];
      public static final int ALTERED_FIELD_NUMBER = 2;
      private boolean altered_;
      public boolean hasAltered() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public boolean getAltered() {
        return altered_;
      }
      
      // optional string baseURL = 3;
      public static final int BASEURL_FIELD_NUMBER = 3;
      private java.lang.Object baseURL_;
      public boolean hasBaseURL() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getBaseURL() {
        java.lang.Object ref = baseURL_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            baseURL_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getBaseURLBytes() {
        java.lang.Object ref = baseURL_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          baseURL_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string identifier = 4;
      public static final int IDENTIFIER_FIELD_NUMBER = 4;
      private java.lang.Object identifier_;
      public boolean hasIdentifier() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getIdentifier() {
        java.lang.Object ref = identifier_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            identifier_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIdentifierBytes() {
        java.lang.Object ref = identifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          identifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string datestamp = 5;
      public static final int DATESTAMP_FIELD_NUMBER = 5;
      private java.lang.Object datestamp_;
      public boolean hasDatestamp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getDatestamp() {
        java.lang.Object ref = datestamp_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            datestamp_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getDatestampBytes() {
        java.lang.Object ref = datestamp_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          datestamp_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string metadataNamespace = 6;
      public static final int METADATANAMESPACE_FIELD_NUMBER = 6;
      private java.lang.Object metadataNamespace_;
      public boolean hasMetadataNamespace() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public String getMetadataNamespace() {
        java.lang.Object ref = metadataNamespace_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            metadataNamespace_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getMetadataNamespaceBytes() {
        java.lang.Object ref = metadataNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          metadataNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 7;
      public static final int ORIGINDESCRIPTION_FIELD_NUMBER = 7;
      private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription originDescription_;
      public boolean hasOriginDescription() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription() {
        return originDescription_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder() {
        return originDescription_;
      }
      
      private void initFields() {
        harvestDate_ = "";
        altered_ = true;
        baseURL_ = "";
        identifier_ = "";
        datestamp_ = "";
        metadataNamespace_ = "";
        originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
      }
      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, getHarvestDateBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(2, altered_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getBaseURLBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getIdentifierBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(5, getDatestampBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBytes(6, getMetadataNamespaceBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(7, originDescription_);
        }
        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, getHarvestDateBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, altered_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getBaseURLBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getIdentifierBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getDatestampBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(6, getMetadataNamespaceBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, originDescription_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getOriginDescriptionFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          harvestDate_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          altered_ = true;
          bitField0_ = (bitField0_ & ~0x00000002);
          baseURL_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          identifier_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          datestamp_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          metadataNamespace_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          if (originDescriptionBuilder_ == null) {
            originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
          } else {
            originDescriptionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription build() {
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription buildPartial() {
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription result = new eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.harvestDate_ = harvestDate_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.altered_ = altered_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.baseURL_ = baseURL_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.identifier_ = identifier_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.datestamp_ = datestamp_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.metadataNamespace_ = metadataNamespace_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          if (originDescriptionBuilder_ == null) {
            result.originDescription_ = originDescription_;
          } else {
            result.originDescription_ = originDescriptionBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription) {
            return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription other) {
          if (other == eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance()) return this;
          if (other.hasHarvestDate()) {
            setHarvestDate(other.getHarvestDate());
          }
          if (other.hasAltered()) {
            setAltered(other.getAltered());
          }
          if (other.hasBaseURL()) {
            setBaseURL(other.getBaseURL());
          }
          if (other.hasIdentifier()) {
            setIdentifier(other.getIdentifier());
          }
          if (other.hasDatestamp()) {
            setDatestamp(other.getDatestamp());
          }
          if (other.hasMetadataNamespace()) {
            setMetadataNamespace(other.getMetadataNamespace());
          }
          if (other.hasOriginDescription()) {
            mergeOriginDescription(other.getOriginDescription());
          }
          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 {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                harvestDate_ = input.readBytes();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                altered_ = input.readBool();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                baseURL_ = input.readBytes();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                identifier_ = input.readBytes();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                datestamp_ = input.readBytes();
                break;
              }
              case 50: {
                bitField0_ |= 0x00000020;
                metadataNamespace_ = input.readBytes();
                break;
              }
              case 58: {
                eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.newBuilder();
                if (hasOriginDescription()) {
                  subBuilder.mergeFrom(getOriginDescription());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setOriginDescription(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional string harvestDate = 1;
        private java.lang.Object harvestDate_ = "";
        public boolean hasHarvestDate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getHarvestDate() {
          java.lang.Object ref = harvestDate_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            harvestDate_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setHarvestDate(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          harvestDate_ = value;
          onChanged();
          return this;
        }
        public Builder clearHarvestDate() {
          bitField0_ = (bitField0_ & ~0x00000001);
          harvestDate_ = getDefaultInstance().getHarvestDate();
          onChanged();
          return this;
        }
        void setHarvestDate(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          harvestDate_ = value;
          onChanged();
        }
        
        // optional bool altered = 2 [default = true];
        private boolean altered_ = true;
        public boolean hasAltered() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public boolean getAltered() {
          return altered_;
        }
        public Builder setAltered(boolean value) {
          bitField0_ |= 0x00000002;
          altered_ = value;
          onChanged();
          return this;
        }
        public Builder clearAltered() {
          bitField0_ = (bitField0_ & ~0x00000002);
          altered_ = true;
          onChanged();
          return this;
        }
        
        // optional string baseURL = 3;
        private java.lang.Object baseURL_ = "";
        public boolean hasBaseURL() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getBaseURL() {
          java.lang.Object ref = baseURL_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            baseURL_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setBaseURL(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          baseURL_ = value;
          onChanged();
          return this;
        }
        public Builder clearBaseURL() {
          bitField0_ = (bitField0_ & ~0x00000004);
          baseURL_ = getDefaultInstance().getBaseURL();
          onChanged();
          return this;
        }
        void setBaseURL(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          baseURL_ = value;
          onChanged();
        }
        
        // optional string identifier = 4;
        private java.lang.Object identifier_ = "";
        public boolean hasIdentifier() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getIdentifier() {
          java.lang.Object ref = identifier_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            identifier_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIdentifier(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          identifier_ = value;
          onChanged();
          return this;
        }
        public Builder clearIdentifier() {
          bitField0_ = (bitField0_ & ~0x00000008);
          identifier_ = getDefaultInstance().getIdentifier();
          onChanged();
          return this;
        }
        void setIdentifier(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          identifier_ = value;
          onChanged();
        }
        
        // optional string datestamp = 5;
        private java.lang.Object datestamp_ = "";
        public boolean hasDatestamp() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getDatestamp() {
          java.lang.Object ref = datestamp_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            datestamp_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setDatestamp(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          datestamp_ = value;
          onChanged();
          return this;
        }
        public Builder clearDatestamp() {
          bitField0_ = (bitField0_ & ~0x00000010);
          datestamp_ = getDefaultInstance().getDatestamp();
          onChanged();
          return this;
        }
        void setDatestamp(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          datestamp_ = value;
          onChanged();
        }
        
        // optional string metadataNamespace = 6;
        private java.lang.Object metadataNamespace_ = "";
        public boolean hasMetadataNamespace() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getMetadataNamespace() {
          java.lang.Object ref = metadataNamespace_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            metadataNamespace_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setMetadataNamespace(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
          metadataNamespace_ = value;
          onChanged();
          return this;
        }
        public Builder clearMetadataNamespace() {
          bitField0_ = (bitField0_ & ~0x00000020);
          metadataNamespace_ = getDefaultInstance().getMetadataNamespace();
          onChanged();
          return this;
        }
        void setMetadataNamespace(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000020;
          metadataNamespace_ = value;
          onChanged();
        }
        
        // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 7;
        private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder> originDescriptionBuilder_;
        public boolean hasOriginDescription() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription() {
          if (originDescriptionBuilder_ == null) {
            return originDescription_;
          } else {
            return originDescriptionBuilder_.getMessage();
          }
        }
        public Builder setOriginDescription(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription value) {
          if (originDescriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            originDescription_ = value;
            onChanged();
          } else {
            originDescriptionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder setOriginDescription(
            eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder builderForValue) {
          if (originDescriptionBuilder_ == null) {
            originDescription_ = builderForValue.build();
            onChanged();
          } else {
            originDescriptionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder mergeOriginDescription(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription value) {
          if (originDescriptionBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040) &&
                originDescription_ != eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance()) {
              originDescription_ =
                eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.newBuilder(originDescription_).mergeFrom(value).buildPartial();
            } else {
              originDescription_ = value;
            }
            onChanged();
          } else {
            originDescriptionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder clearOriginDescription() {
          if (originDescriptionBuilder_ == null) {
            originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
            onChanged();
          } else {
            originDescriptionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder getOriginDescriptionBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getOriginDescriptionFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder() {
          if (originDescriptionBuilder_ != null) {
            return originDescriptionBuilder_.getMessageOrBuilder();
          } else {
            return originDescription_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder> 
            getOriginDescriptionFieldBuilder() {
          if (originDescriptionBuilder_ == null) {
            originDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder>(
                    originDescription_,
                    getParentForChildren(),
                    isClean());
            originDescription_ = null;
          }
          return originDescriptionBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.OAIProvenance.OriginDescription)
      }
      
      static {
        defaultInstance = new OriginDescription(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.OAIProvenance.OriginDescription)
    }
    
    private int bitField0_;
    // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 1;
    public static final int ORIGINDESCRIPTION_FIELD_NUMBER = 1;
    private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription originDescription_;
    public boolean hasOriginDescription() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription() {
      return originDescription_;
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder() {
      return originDescription_;
    }
    
    private void initFields() {
      originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
    }
    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.writeMessage(1, originDescription_);
      }
      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
          .computeMessageSize(1, originDescription_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenanceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_OAIProvenance_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getOriginDescriptionFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (originDescriptionBuilder_ == null) {
          originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
        } else {
          originDescriptionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance build() {
        eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance result = new eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (originDescriptionBuilder_ == null) {
          result.originDescription_ = originDescription_;
        } else {
          result.originDescription_ = originDescriptionBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.getDefaultInstance()) return this;
        if (other.hasOriginDescription()) {
          mergeOriginDescription(other.getOriginDescription());
        }
        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 {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.newBuilder();
              if (hasOriginDescription()) {
                subBuilder.mergeFrom(getOriginDescription());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setOriginDescription(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .eu.dnetlib.data.proto.OAIProvenance.OriginDescription originDescription = 1;
      private eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder> originDescriptionBuilder_;
      public boolean hasOriginDescription() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription getOriginDescription() {
        if (originDescriptionBuilder_ == null) {
          return originDescription_;
        } else {
          return originDescriptionBuilder_.getMessage();
        }
      }
      public Builder setOriginDescription(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription value) {
        if (originDescriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          originDescription_ = value;
          onChanged();
        } else {
          originDescriptionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setOriginDescription(
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder builderForValue) {
        if (originDescriptionBuilder_ == null) {
          originDescription_ = builderForValue.build();
          onChanged();
        } else {
          originDescriptionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeOriginDescription(eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription value) {
        if (originDescriptionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              originDescription_ != eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance()) {
            originDescription_ =
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.newBuilder(originDescription_).mergeFrom(value).buildPartial();
          } else {
            originDescription_ = value;
          }
          onChanged();
        } else {
          originDescriptionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearOriginDescription() {
        if (originDescriptionBuilder_ == null) {
          originDescription_ = eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.getDefaultInstance();
          onChanged();
        } else {
          originDescriptionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder getOriginDescriptionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getOriginDescriptionFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder getOriginDescriptionOrBuilder() {
        if (originDescriptionBuilder_ != null) {
          return originDescriptionBuilder_.getMessageOrBuilder();
        } else {
          return originDescription_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder> 
          getOriginDescriptionFieldBuilder() {
        if (originDescriptionBuilder_ == null) {
          originDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder, eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescriptionOrBuilder>(
                  originDescription_,
                  getParentForChildren(),
                  isClean());
          originDescription_ = null;
        }
        return originDescriptionBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.OAIProvenance)
    }
    
    static {
      defaultInstance = new OAIProvenance(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.OAIProvenance)
  }
  
  public interface ExtraInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string name = 1;
    boolean hasName();
    String getName();
    
    // required string typology = 2;
    boolean hasTypology();
    String getTypology();
    
    // required string provenance = 3;
    boolean hasProvenance();
    String getProvenance();
    
    // optional string trust = 4;
    boolean hasTrust();
    String getTrust();
    
    // optional string value = 5;
    boolean hasValue();
    String getValue();
  }
  public static final class ExtraInfo extends
      com.google.protobuf.GeneratedMessage
      implements ExtraInfoOrBuilder {
    // Use ExtraInfo.newBuilder() to construct.
    private ExtraInfo(Builder builder) {
      super(builder);
    }
    private ExtraInfo(boolean noInit) {}
    
    private static final ExtraInfo defaultInstance;
    public static ExtraInfo getDefaultInstance() {
      return defaultInstance;
    }
    
    public ExtraInfo getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_ExtraInfo_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_ExtraInfo_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required string typology = 2;
    public static final int TYPOLOGY_FIELD_NUMBER = 2;
    private java.lang.Object typology_;
    public boolean hasTypology() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getTypology() {
      java.lang.Object ref = typology_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          typology_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getTypologyBytes() {
      java.lang.Object ref = typology_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        typology_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required string provenance = 3;
    public static final int PROVENANCE_FIELD_NUMBER = 3;
    private java.lang.Object provenance_;
    public boolean hasProvenance() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public String getProvenance() {
      java.lang.Object ref = provenance_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          provenance_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getProvenanceBytes() {
      java.lang.Object ref = provenance_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        provenance_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string trust = 4;
    public static final int TRUST_FIELD_NUMBER = 4;
    private java.lang.Object trust_;
    public boolean hasTrust() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public String getTrust() {
      java.lang.Object ref = trust_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          trust_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getTrustBytes() {
      java.lang.Object ref = trust_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        trust_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string value = 5;
    public static final int VALUE_FIELD_NUMBER = 5;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      name_ = "";
      typology_ = "";
      provenance_ = "";
      trust_ = "";
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTypology()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProvenance()) {
        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.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getTypologyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getProvenanceBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getTrustBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getValueBytes());
      }
      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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getTypologyBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getProvenanceBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getTrustBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getValueBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_ExtraInfo_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_ExtraInfo_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.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();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        typology_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        provenance_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        trust_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo build() {
        eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo result = new eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.typology_ = typology_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.provenance_ = provenance_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.trust_ = trust_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasTypology()) {
          setTypology(other.getTypology());
        }
        if (other.hasProvenance()) {
          setProvenance(other.getProvenance());
        }
        if (other.hasTrust()) {
          setTrust(other.getTrust());
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasTypology()) {
          
          return false;
        }
        if (!hasProvenance()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              name_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              typology_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              provenance_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              trust_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              value_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string name = 1;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
      }
      
      // required string typology = 2;
      private java.lang.Object typology_ = "";
      public boolean hasTypology() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTypology() {
        java.lang.Object ref = typology_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          typology_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setTypology(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        typology_ = value;
        onChanged();
        return this;
      }
      public Builder clearTypology() {
        bitField0_ = (bitField0_ & ~0x00000002);
        typology_ = getDefaultInstance().getTypology();
        onChanged();
        return this;
      }
      void setTypology(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        typology_ = value;
        onChanged();
      }
      
      // required string provenance = 3;
      private java.lang.Object provenance_ = "";
      public boolean hasProvenance() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getProvenance() {
        java.lang.Object ref = provenance_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          provenance_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setProvenance(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        provenance_ = value;
        onChanged();
        return this;
      }
      public Builder clearProvenance() {
        bitField0_ = (bitField0_ & ~0x00000004);
        provenance_ = getDefaultInstance().getProvenance();
        onChanged();
        return this;
      }
      void setProvenance(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000004;
        provenance_ = value;
        onChanged();
      }
      
      // optional string trust = 4;
      private java.lang.Object trust_ = "";
      public boolean hasTrust() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getTrust() {
        java.lang.Object ref = trust_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          trust_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setTrust(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        trust_ = value;
        onChanged();
        return this;
      }
      public Builder clearTrust() {
        bitField0_ = (bitField0_ & ~0x00000008);
        trust_ = getDefaultInstance().getTrust();
        onChanged();
        return this;
      }
      void setTrust(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000008;
        trust_ = value;
        onChanged();
      }
      
      // optional string value = 5;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000010);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000010;
        value_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.ExtraInfo)
    }
    
    static {
      defaultInstance = new ExtraInfo(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.ExtraInfo)
  }
  
  public interface AuthorOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string fullname = 1;
    boolean hasFullname();
    String getFullname();
    
    // optional string name = 2;
    boolean hasName();
    String getName();
    
    // optional string surname = 3;
    boolean hasSurname();
    String getSurname();
    
    // required int32 rank = 4;
    boolean hasRank();
    int getRank();
    
    // repeated .eu.dnetlib.data.proto.KeyValue pid = 5;
    java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> 
        getPidList();
    eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getPid(int index);
    int getPidCount();
    java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
        getPidOrBuilderList();
    eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getPidOrBuilder(
        int index);
    
    // repeated .eu.dnetlib.data.proto.StringField affiliation = 6;
    java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
        getAffiliationList();
    eu.dnetlib.data.proto.FieldTypeProtos.StringField getAffiliation(int index);
    int getAffiliationCount();
    java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
        getAffiliationOrBuilderList();
    eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAffiliationOrBuilder(
        int index);
  }
  public static final class Author extends
      com.google.protobuf.GeneratedMessage
      implements AuthorOrBuilder {
    // Use Author.newBuilder() to construct.
    private Author(Builder builder) {
      super(builder);
    }
    private Author(boolean noInit) {}
    
    private static final Author defaultInstance;
    public static Author getDefaultInstance() {
      return defaultInstance;
    }
    
    public Author getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Author_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Author_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string fullname = 1;
    public static final int FULLNAME_FIELD_NUMBER = 1;
    private java.lang.Object fullname_;
    public boolean hasFullname() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getFullname() {
      java.lang.Object ref = fullname_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          fullname_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getFullnameBytes() {
      java.lang.Object ref = fullname_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        fullname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string surname = 3;
    public static final int SURNAME_FIELD_NUMBER = 3;
    private java.lang.Object surname_;
    public boolean hasSurname() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public String getSurname() {
      java.lang.Object ref = surname_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          surname_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getSurnameBytes() {
      java.lang.Object ref = surname_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        surname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required int32 rank = 4;
    public static final int RANK_FIELD_NUMBER = 4;
    private int rank_;
    public boolean hasRank() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public int getRank() {
      return rank_;
    }
    
    // repeated .eu.dnetlib.data.proto.KeyValue pid = 5;
    public static final int PID_FIELD_NUMBER = 5;
    private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> pid_;
    public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> getPidList() {
      return pid_;
    }
    public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
        getPidOrBuilderList() {
      return pid_;
    }
    public int getPidCount() {
      return pid_.size();
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getPid(int index) {
      return pid_.get(index);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getPidOrBuilder(
        int index) {
      return pid_.get(index);
    }
    
    // repeated .eu.dnetlib.data.proto.StringField affiliation = 6;
    public static final int AFFILIATION_FIELD_NUMBER = 6;
    private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> affiliation_;
    public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getAffiliationList() {
      return affiliation_;
    }
    public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
        getAffiliationOrBuilderList() {
      return affiliation_;
    }
    public int getAffiliationCount() {
      return affiliation_.size();
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.StringField getAffiliation(int index) {
      return affiliation_.get(index);
    }
    public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAffiliationOrBuilder(
        int index) {
      return affiliation_.get(index);
    }
    
    private void initFields() {
      fullname_ = "";
      name_ = "";
      surname_ = "";
      rank_ = 0;
      pid_ = java.util.Collections.emptyList();
      affiliation_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasFullname()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRank()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getPidCount(); i++) {
        if (!getPid(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getAffiliationCount(); i++) {
        if (!getAffiliation(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.writeBytes(1, getFullnameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getSurnameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, rank_);
      }
      for (int i = 0; i < pid_.size(); i++) {
        output.writeMessage(5, pid_.get(i));
      }
      for (int i = 0; i < affiliation_.size(); i++) {
        output.writeMessage(6, affiliation_.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
          .computeBytesSize(1, getFullnameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getSurnameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, rank_);
      }
      for (int i = 0; i < pid_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, pid_.get(i));
      }
      for (int i = 0; i < affiliation_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, affiliation_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }
    
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.FieldTypeProtos.Author parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(eu.dnetlib.data.proto.FieldTypeProtos.Author prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Author_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.FieldTypeProtos.internal_static_eu_dnetlib_data_proto_Author_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.FieldTypeProtos.Author.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getPidFieldBuilder();
          getAffiliationFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        fullname_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        surname_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        rank_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (pidBuilder_ == null) {
          pid_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          pidBuilder_.clear();
        }
        if (affiliationBuilder_ == null) {
          affiliation_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          affiliationBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.Author.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Author getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.FieldTypeProtos.Author.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Author build() {
        eu.dnetlib.data.proto.FieldTypeProtos.Author result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.FieldTypeProtos.Author buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.FieldTypeProtos.Author result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.FieldTypeProtos.Author buildPartial() {
        eu.dnetlib.data.proto.FieldTypeProtos.Author result = new eu.dnetlib.data.proto.FieldTypeProtos.Author(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.fullname_ = fullname_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.surname_ = surname_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.rank_ = rank_;
        if (pidBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            pid_ = java.util.Collections.unmodifiableList(pid_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.pid_ = pid_;
        } else {
          result.pid_ = pidBuilder_.build();
        }
        if (affiliationBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            affiliation_ = java.util.Collections.unmodifiableList(affiliation_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.affiliation_ = affiliation_;
        } else {
          result.affiliation_ = affiliationBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.FieldTypeProtos.Author) {
          return mergeFrom((eu.dnetlib.data.proto.FieldTypeProtos.Author)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.FieldTypeProtos.Author other) {
        if (other == eu.dnetlib.data.proto.FieldTypeProtos.Author.getDefaultInstance()) return this;
        if (other.hasFullname()) {
          setFullname(other.getFullname());
        }
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasSurname()) {
          setSurname(other.getSurname());
        }
        if (other.hasRank()) {
          setRank(other.getRank());
        }
        if (pidBuilder_ == null) {
          if (!other.pid_.isEmpty()) {
            if (pid_.isEmpty()) {
              pid_ = other.pid_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensurePidIsMutable();
              pid_.addAll(other.pid_);
            }
            onChanged();
          }
        } else {
          if (!other.pid_.isEmpty()) {
            if (pidBuilder_.isEmpty()) {
              pidBuilder_.dispose();
              pidBuilder_ = null;
              pid_ = other.pid_;
              bitField0_ = (bitField0_ & ~0x00000010);
              pidBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPidFieldBuilder() : null;
            } else {
              pidBuilder_.addAllMessages(other.pid_);
            }
          }
        }
        if (affiliationBuilder_ == null) {
          if (!other.affiliation_.isEmpty()) {
            if (affiliation_.isEmpty()) {
              affiliation_ = other.affiliation_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureAffiliationIsMutable();
              affiliation_.addAll(other.affiliation_);
            }
            onChanged();
          }
        } else {
          if (!other.affiliation_.isEmpty()) {
            if (affiliationBuilder_.isEmpty()) {
              affiliationBuilder_.dispose();
              affiliationBuilder_ = null;
              affiliation_ = other.affiliation_;
              bitField0_ = (bitField0_ & ~0x00000020);
              affiliationBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAffiliationFieldBuilder() : null;
            } else {
              affiliationBuilder_.addAllMessages(other.affiliation_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasFullname()) {
          
          return false;
        }
        if (!hasRank()) {
          
          return false;
        }
        for (int i = 0; i < getPidCount(); i++) {
          if (!getPid(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getAffiliationCount(); i++) {
          if (!getAffiliation(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              fullname_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              name_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              surname_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              rank_ = input.readInt32();
              break;
            }
            case 42: {
              eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addPid(subBuilder.buildPartial());
              break;
            }
            case 50: {
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addAffiliation(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string fullname = 1;
      private java.lang.Object fullname_ = "";
      public boolean hasFullname() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getFullname() {
        java.lang.Object ref = fullname_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          fullname_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setFullname(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        fullname_ = value;
        onChanged();
        return this;
      }
      public Builder clearFullname() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fullname_ = getDefaultInstance().getFullname();
        onChanged();
        return this;
      }
      void setFullname(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        fullname_ = value;
        onChanged();
      }
      
      // optional string name = 2;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
      }
      
      // optional string surname = 3;
      private java.lang.Object surname_ = "";
      public boolean hasSurname() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getSurname() {
        java.lang.Object ref = surname_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          surname_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setSurname(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        surname_ = value;
        onChanged();
        return this;
      }
      public Builder clearSurname() {
        bitField0_ = (bitField0_ & ~0x00000004);
        surname_ = getDefaultInstance().getSurname();
        onChanged();
        return this;
      }
      void setSurname(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000004;
        surname_ = value;
        onChanged();
      }
      
      // required int32 rank = 4;
      private int rank_ ;
      public boolean hasRank() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public int getRank() {
        return rank_;
      }
      public Builder setRank(int value) {
        bitField0_ |= 0x00000008;
        rank_ = value;
        onChanged();
        return this;
      }
      public Builder clearRank() {
        bitField0_ = (bitField0_ & ~0x00000008);
        rank_ = 0;
        onChanged();
        return this;
      }
      
      // repeated .eu.dnetlib.data.proto.KeyValue pid = 5;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> pid_ =
        java.util.Collections.emptyList();
      private void ensurePidIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          pid_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue>(pid_);
          bitField0_ |= 0x00000010;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> pidBuilder_;
      
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> getPidList() {
        if (pidBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pid_);
        } else {
          return pidBuilder_.getMessageList();
        }
      }
      public int getPidCount() {
        if (pidBuilder_ == null) {
          return pid_.size();
        } else {
          return pidBuilder_.getCount();
        }
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getPid(int index) {
        if (pidBuilder_ == null) {
          return pid_.get(index);
        } else {
          return pidBuilder_.getMessage(index);
        }
      }
      public Builder setPid(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
        if (pidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePidIsMutable();
          pid_.set(index, value);
          onChanged();
        } else {
          pidBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setPid(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder builderForValue) {
        if (pidBuilder_ == null) {
          ensurePidIsMutable();
          pid_.set(index, builderForValue.build());
          onChanged();
        } else {
          pidBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addPid(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
        if (pidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePidIsMutable();
          pid_.add(value);
          onChanged();
        } else {
          pidBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addPid(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
        if (pidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePidIsMutable();
          pid_.add(index, value);
          onChanged();
        } else {
          pidBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addPid(
          eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder builderForValue) {
        if (pidBuilder_ == null) {
          ensurePidIsMutable();
          pid_.add(builderForValue.build());
          onChanged();
        } else {
          pidBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addPid(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder builderForValue) {
        if (pidBuilder_ == null) {
          ensurePidIsMutable();
          pid_.add(index, builderForValue.build());
          onChanged();
        } else {
          pidBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllPid(
          java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.KeyValue> values) {
        if (pidBuilder_ == null) {
          ensurePidIsMutable();
          super.addAll(values, pid_);
          onChanged();
        } else {
          pidBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearPid() {
        if (pidBuilder_ == null) {
          pid_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          pidBuilder_.clear();
        }
        return this;
      }
      public Builder removePid(int index) {
        if (pidBuilder_ == null) {
          ensurePidIsMutable();
          pid_.remove(index);
          onChanged();
        } else {
          pidBuilder_.remove(index);
        }
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder getPidBuilder(
          int index) {
        return getPidFieldBuilder().getBuilder(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getPidOrBuilder(
          int index) {
        if (pidBuilder_ == null) {
          return pid_.get(index);  } else {
          return pidBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
           getPidOrBuilderList() {
        if (pidBuilder_ != null) {
          return pidBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pid_);
        }
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder addPidBuilder() {
        return getPidFieldBuilder().addBuilder(
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance());
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder addPidBuilder(
          int index) {
        return getPidFieldBuilder().addBuilder(
            index, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance());
      }
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder> 
           getPidBuilderList() {
        return getPidFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
          getPidFieldBuilder() {
        if (pidBuilder_ == null) {
          pidBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder>(
                  pid_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          pid_ = null;
        }
        return pidBuilder_;
      }
      
      // repeated .eu.dnetlib.data.proto.StringField affiliation = 6;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> affiliation_ =
        java.util.Collections.emptyList();
      private void ensureAffiliationIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          affiliation_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(affiliation_);
          bitField0_ |= 0x00000020;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> affiliationBuilder_;
      
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getAffiliationList() {
        if (affiliationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(affiliation_);
        } else {
          return affiliationBuilder_.getMessageList();
        }
      }
      public int getAffiliationCount() {
        if (affiliationBuilder_ == null) {
          return affiliation_.size();
        } else {
          return affiliationBuilder_.getCount();
        }
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getAffiliation(int index) {
        if (affiliationBuilder_ == null) {
          return affiliation_.get(index);
        } else {
          return affiliationBuilder_.getMessage(index);
        }
      }
      public Builder setAffiliation(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
        if (affiliationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAffiliationIsMutable();
          affiliation_.set(index, value);
          onChanged();
        } else {
          affiliationBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setAffiliation(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
        if (affiliationBuilder_ == null) {
          ensureAffiliationIsMutable();
          affiliation_.set(index, builderForValue.build());
          onChanged();
        } else {
          affiliationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAffiliation(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
        if (affiliationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAffiliationIsMutable();
          affiliation_.add(value);
          onChanged();
        } else {
          affiliationBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addAffiliation(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
        if (affiliationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAffiliationIsMutable();
          affiliation_.add(index, value);
          onChanged();
        } else {
          affiliationBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addAffiliation(
          eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
        if (affiliationBuilder_ == null) {
          ensureAffiliationIsMutable();
          affiliation_.add(builderForValue.build());
          onChanged();
        } else {
          affiliationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addAffiliation(
          int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
        if (affiliationBuilder_ == null) {
          ensureAffiliationIsMutable();
          affiliation_.add(index, builderForValue.build());
          onChanged();
        } else {
          affiliationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllAffiliation(
          java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
        if (affiliationBuilder_ == null) {
          ensureAffiliationIsMutable();
          super.addAll(values, affiliation_);
          onChanged();
        } else {
          affiliationBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearAffiliation() {
        if (affiliationBuilder_ == null) {
          affiliation_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          affiliationBuilder_.clear();
        }
        return this;
      }
      public Builder removeAffiliation(int index) {
        if (affiliationBuilder_ == null) {
          ensureAffiliationIsMutable();
          affiliation_.remove(index);
          onChanged();
        } else {
          affiliationBuilder_.remove(index);
        }
        return this;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getAffiliationBuilder(
          int index) {
        return getAffiliationFieldBuilder().getBuilder(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAffiliationOrBuilder(
          int index) {
        if (affiliationBuilder_ == null) {
          return affiliation_.get(index);  } else {
          return affiliationBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
           getAffiliationOrBuilderList() {
        if (affiliationBuilder_ != null) {
          return affiliationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(affiliation_);
        }
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addAffiliationBuilder() {
        return getAffiliationFieldBuilder().addBuilder(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addAffiliationBuilder(
          int index) {
        return getAffiliationFieldBuilder().addBuilder(
            index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
      }
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
           getAffiliationBuilderList() {
        return getAffiliationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getAffiliationFieldBuilder() {
        if (affiliationBuilder_ == null) {
          affiliationBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                  affiliation_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          affiliation_ = null;
        }
        return affiliationBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Author)
    }
    
    static {
      defaultInstance = new Author(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Author)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_StringField_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_StringField_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_BoolField_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_BoolField_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_IntField_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_IntField_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_StructuredProperty_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_StructuredProperty_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_KeyValue_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_KeyValue_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Qualifier_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Qualifier_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_DataInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_DataInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_OAIProvenance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_ExtraInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_ExtraInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Author_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Author_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\017FieldType.proto\022\025eu.dnetlib.data.proto" +
      "\"O\n\013StringField\022\r\n\005value\030\001 \002(\t\0221\n\010dataIn" +
      "fo\030\002 \001(\0132\037.eu.dnetlib.data.proto.DataInf" +
      "o\"M\n\tBoolField\022\r\n\005value\030\001 \002(\010\0221\n\010dataInf" +
      "o\030\002 \001(\0132\037.eu.dnetlib.data.proto.DataInfo" +
      "\"L\n\010IntField\022\r\n\005value\030\001 \002(\005\0221\n\010dataInfo\030" +
      "\002 \001(\0132\037.eu.dnetlib.data.proto.DataInfo\"\213" +
      "\001\n\022StructuredProperty\022\r\n\005value\030\001 \002(\t\0223\n\t" +
      "qualifier\030\002 \001(\0132 .eu.dnetlib.data.proto." +
      "Qualifier\0221\n\010dataInfo\030\003 \001(\0132\037.eu.dnetlib",
      ".data.proto.DataInfo\"Y\n\010KeyValue\022\013\n\003key\030" +
      "\001 \002(\t\022\r\n\005value\030\002 \001(\t\0221\n\010dataInfo\030\003 \001(\0132\037" +
      ".eu.dnetlib.data.proto.DataInfo\"\210\001\n\tQual" +
      "ifier\022\017\n\007classid\030\001 \001(\t\022\021\n\tclassname\030\002 \001(" +
      "\t\022\020\n\010schemeid\030\003 \001(\t\022\022\n\nschemename\030\004 \001(\t\022" +
      "1\n\010dataInfo\030\005 \001(\0132\037.eu.dnetlib.data.prot" +
      "o.DataInfo\"\272\001\n\010DataInfo\022\030\n\tinvisible\030\006 \001" +
      "(\010:\005false\022\020\n\010inferred\030\001 \001(\010\022\032\n\022deletedby" +
      "inference\030\002 \001(\010\022\r\n\005trust\030\003 \001(\t\022\033\n\023infere" +
      "nceprovenance\030\004 \001(\t\022:\n\020provenanceaction\030",
      "\005 \002(\0132 .eu.dnetlib.data.proto.Qualifier\"" +
      "\312\002\n\rOAIProvenance\022Q\n\021originDescription\030\001" +
      " \001(\01326.eu.dnetlib.data.proto.OAIProvenan" +
      "ce.OriginDescription\032\345\001\n\021OriginDescripti" +
      "on\022\023\n\013harvestDate\030\001 \001(\t\022\025\n\007altered\030\002 \001(\010" +
      ":\004true\022\017\n\007baseURL\030\003 \001(\t\022\022\n\nidentifier\030\004 " +
      "\001(\t\022\021\n\tdatestamp\030\005 \001(\t\022\031\n\021metadataNamesp" +
      "ace\030\006 \001(\t\022Q\n\021originDescription\030\007 \001(\01326.e" +
      "u.dnetlib.data.proto.OAIProvenance.Origi" +
      "nDescription\"]\n\tExtraInfo\022\014\n\004name\030\001 \002(\t\022",
      "\020\n\010typology\030\002 \002(\t\022\022\n\nprovenance\030\003 \002(\t\022\r\n" +
      "\005trust\030\004 \001(\t\022\r\n\005value\030\005 \001(\t\"\256\001\n\006Author\022\020" +
      "\n\010fullname\030\001 \002(\t\022\014\n\004name\030\002 \001(\t\022\017\n\007surnam" +
      "e\030\003 \001(\t\022\014\n\004rank\030\004 \002(\005\022,\n\003pid\030\005 \003(\0132\037.eu." +
      "dnetlib.data.proto.KeyValue\0227\n\013affiliati" +
      "on\030\006 \003(\0132\".eu.dnetlib.data.proto.StringF" +
      "ieldB(\n\025eu.dnetlib.data.protoB\017FieldType" +
      "Protos"
    };
    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_eu_dnetlib_data_proto_StringField_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_eu_dnetlib_data_proto_StringField_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_StringField_descriptor,
              new java.lang.String[] { "Value", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.class,
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder.class);
          internal_static_eu_dnetlib_data_proto_BoolField_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_eu_dnetlib_data_proto_BoolField_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_BoolField_descriptor,
              new java.lang.String[] { "Value", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.BoolField.class,
              eu.dnetlib.data.proto.FieldTypeProtos.BoolField.Builder.class);
          internal_static_eu_dnetlib_data_proto_IntField_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_eu_dnetlib_data_proto_IntField_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_IntField_descriptor,
              new java.lang.String[] { "Value", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.IntField.class,
              eu.dnetlib.data.proto.FieldTypeProtos.IntField.Builder.class);
          internal_static_eu_dnetlib_data_proto_StructuredProperty_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_eu_dnetlib_data_proto_StructuredProperty_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_StructuredProperty_descriptor,
              new java.lang.String[] { "Value", "Qualifier", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.class,
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder.class);
          internal_static_eu_dnetlib_data_proto_KeyValue_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_eu_dnetlib_data_proto_KeyValue_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_KeyValue_descriptor,
              new java.lang.String[] { "Key", "Value", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.class,
              eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder.class);
          internal_static_eu_dnetlib_data_proto_Qualifier_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_eu_dnetlib_data_proto_Qualifier_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Qualifier_descriptor,
              new java.lang.String[] { "Classid", "Classname", "Schemeid", "Schemename", "DataInfo", },
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.class,
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder.class);
          internal_static_eu_dnetlib_data_proto_DataInfo_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_eu_dnetlib_data_proto_DataInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_DataInfo_descriptor,
              new java.lang.String[] { "Invisible", "Inferred", "Deletedbyinference", "Trust", "Inferenceprovenance", "Provenanceaction", },
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.class,
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder.class);
          internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_eu_dnetlib_data_proto_OAIProvenance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor,
              new java.lang.String[] { "OriginDescription", },
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.class,
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.Builder.class);
          internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_descriptor =
            internal_static_eu_dnetlib_data_proto_OAIProvenance_descriptor.getNestedTypes().get(0);
          internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_OAIProvenance_OriginDescription_descriptor,
              new java.lang.String[] { "HarvestDate", "Altered", "BaseURL", "Identifier", "Datestamp", "MetadataNamespace", "OriginDescription", },
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.class,
              eu.dnetlib.data.proto.FieldTypeProtos.OAIProvenance.OriginDescription.Builder.class);
          internal_static_eu_dnetlib_data_proto_ExtraInfo_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_eu_dnetlib_data_proto_ExtraInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_ExtraInfo_descriptor,
              new java.lang.String[] { "Name", "Typology", "Provenance", "Trust", "Value", },
              eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.class,
              eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo.Builder.class);
          internal_static_eu_dnetlib_data_proto_Author_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_eu_dnetlib_data_proto_Author_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Author_descriptor,
              new java.lang.String[] { "Fullname", "Name", "Surname", "Rank", "Pid", "Affiliation", },
              eu.dnetlib.data.proto.FieldTypeProtos.Author.class,
              eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
