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

package eu.dnetlib.data.proto;

public final class ResultProtos {
  private ResultProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface ResultOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .eu.dnetlib.data.proto.Result.Metadata metadata = 2;
    boolean hasMetadata();
    eu.dnetlib.data.proto.ResultProtos.Result.Metadata getMetadata();
    eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder getMetadataOrBuilder();
    
    // repeated .eu.dnetlib.data.proto.Result.Instance instance = 6;
    java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance> 
        getInstanceList();
    eu.dnetlib.data.proto.ResultProtos.Result.Instance getInstance(int index);
    int getInstanceCount();
    java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder> 
        getInstanceOrBuilderList();
    eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder getInstanceOrBuilder(
        int index);
    
    // repeated .eu.dnetlib.data.proto.Result.ExternalReference externalReference = 7;
    java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> 
        getExternalReferenceList();
    eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference getExternalReference(int index);
    int getExternalReferenceCount();
    java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder> 
        getExternalReferenceOrBuilderList();
    eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder getExternalReferenceOrBuilder(
        int index);
  }
  public static final class Result extends
      com.google.protobuf.GeneratedMessage
      implements ResultOrBuilder {
    // Use Result.newBuilder() to construct.
    private Result(Builder builder) {
      super(builder);
    }
    private Result(boolean noInit) {}
    
    private static final Result defaultInstance;
    public static Result getDefaultInstance() {
      return defaultInstance;
    }
    
    public Result getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_fieldAccessorTable;
    }
    
    public interface MetadataOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // repeated .eu.dnetlib.data.proto.Author author = 40;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author> 
          getAuthorList();
      eu.dnetlib.data.proto.FieldTypeProtos.Author getAuthor(int index);
      int getAuthorCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder> 
          getAuthorOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder getAuthorOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.Qualifier resulttype = 8;
      boolean hasResulttype();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResulttype();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResulttypeOrBuilder();
      
      // optional .eu.dnetlib.data.proto.Qualifier language = 12;
      boolean hasLanguage();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getLanguage();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getLanguageOrBuilder();
      
      // repeated .eu.dnetlib.data.proto.Qualifier country = 33;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> 
          getCountryList();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getCountry(int index);
      int getCountryCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
          getCountryOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getCountryOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty subject = 1;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> 
          getSubjectList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubject(int index);
      int getSubjectCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getSubjectOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty title = 2;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> 
          getTitleList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getTitle(int index);
      int getTitleCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getTitleOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getTitleOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty relevantdate = 3;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> 
          getRelevantdateList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getRelevantdate(int index);
      int getRelevantdateCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getRelevantdateOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getRelevantdateOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField description = 25;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getDescriptionList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDescription(int index);
      int getDescriptionCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getDescriptionOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDescriptionOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 4;
      boolean hasDateofacceptance();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField publisher = 5;
      boolean hasPublisher();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getPublisher();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getPublisherOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField embargoenddate = 6;
      boolean hasEmbargoenddate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getEmbargoenddate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEmbargoenddateOrBuilder();
      
      // repeated .eu.dnetlib.data.proto.StringField source = 27;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getSourceList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getSource(int index);
      int getSourceCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getSourceOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSourceOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField fulltext = 29;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getFulltextList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getFulltext(int index);
      int getFulltextCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFulltextOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFulltextOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField format = 21;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getFormatList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getFormat(int index);
      int getFormatCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFormatOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFormatOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField contributor = 30;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getContributorList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContributor(int index);
      int getContributorCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContributorOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContributorOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.Qualifier resourcetype = 19;
      boolean hasResourcetype();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResourcetype();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResourcetypeOrBuilder();
      
      // repeated .eu.dnetlib.data.proto.StringField coverage = 43;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getCoverageList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getCoverage(int index);
      int getCoverageCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getCoverageOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCoverageOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.Result.Context context = 28;
      java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context> 
          getContextList();
      eu.dnetlib.data.proto.ResultProtos.Result.Context getContext(int index);
      int getContextCount();
      java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder> 
          getContextOrBuilderList();
      eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder getContextOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.Result.Journal journal = 18;
      boolean hasJournal();
      eu.dnetlib.data.proto.ResultProtos.Result.Journal getJournal();
      eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder getJournalOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField storagedate = 9;
      boolean hasStoragedate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getStoragedate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStoragedateOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField device = 26;
      boolean hasDevice();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDevice();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDeviceOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField size = 20;
      boolean hasSize();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getSize();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSizeOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField version = 22;
      boolean hasVersion();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getVersion();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getVersionOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField lastmetadataupdate = 23;
      boolean hasLastmetadataupdate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getLastmetadataupdate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLastmetadataupdateOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField metadataversionnumber = 24;
      boolean hasMetadataversionnumber();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getMetadataversionnumber();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getMetadataversionnumberOrBuilder();
      
      // repeated .eu.dnetlib.data.proto.Result.GeoLocation geolocation = 44;
      java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> 
          getGeolocationList();
      eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation getGeolocation(int index);
      int getGeolocationCount();
      java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder> 
          getGeolocationOrBuilderList();
      eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder getGeolocationOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField documentationUrl = 35;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getDocumentationUrlList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDocumentationUrl(int index);
      int getDocumentationUrlCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getDocumentationUrlOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDocumentationUrlOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty license = 36;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> 
          getLicenseList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getLicense(int index);
      int getLicenseCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getLicenseOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getLicenseOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.StringField codeRepositoryUrl = 38;
      boolean hasCodeRepositoryUrl();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getCodeRepositoryUrl();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeRepositoryUrlOrBuilder();
      
      // optional .eu.dnetlib.data.proto.Qualifier programmingLanguage = 39;
      boolean hasProgrammingLanguage();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProgrammingLanguage();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProgrammingLanguageOrBuilder();
      
      // repeated .eu.dnetlib.data.proto.StringField contactperson = 45;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getContactpersonList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactperson(int index);
      int getContactpersonCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContactpersonOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactpersonOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField contactgroup = 41;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getContactgroupList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactgroup(int index);
      int getContactgroupCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContactgroupOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactgroupOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField tool = 42;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getToolList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getTool(int index);
      int getToolCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getToolOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getToolOrBuilder(
          int index);
    }
    public static final class Metadata extends
        com.google.protobuf.GeneratedMessage
        implements MetadataOrBuilder {
      // Use Metadata.newBuilder() to construct.
      private Metadata(Builder builder) {
        super(builder);
      }
      private Metadata(boolean noInit) {}
      
      private static final Metadata defaultInstance;
      public static Metadata getDefaultInstance() {
        return defaultInstance;
      }
      
      public Metadata getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Metadata_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Metadata_fieldAccessorTable;
      }
      
      private int bitField0_;
      // repeated .eu.dnetlib.data.proto.Author author = 40;
      public static final int AUTHOR_FIELD_NUMBER = 40;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author> author_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author> getAuthorList() {
        return author_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder> 
          getAuthorOrBuilderList() {
        return author_;
      }
      public int getAuthorCount() {
        return author_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Author getAuthor(int index) {
        return author_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder getAuthorOrBuilder(
          int index) {
        return author_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier resulttype = 8;
      public static final int RESULTTYPE_FIELD_NUMBER = 8;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier resulttype_;
      public boolean hasResulttype() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResulttype() {
        return resulttype_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResulttypeOrBuilder() {
        return resulttype_;
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier language = 12;
      public static final int LANGUAGE_FIELD_NUMBER = 12;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier language_;
      public boolean hasLanguage() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getLanguage() {
        return language_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getLanguageOrBuilder() {
        return language_;
      }
      
      // repeated .eu.dnetlib.data.proto.Qualifier country = 33;
      public static final int COUNTRY_FIELD_NUMBER = 33;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> country_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> getCountryList() {
        return country_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
          getCountryOrBuilderList() {
        return country_;
      }
      public int getCountryCount() {
        return country_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getCountry(int index) {
        return country_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getCountryOrBuilder(
          int index) {
        return country_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty subject = 1;
      public static final int SUBJECT_FIELD_NUMBER = 1;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> subject_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getSubjectList() {
        return subject_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getSubjectOrBuilderList() {
        return subject_;
      }
      public int getSubjectCount() {
        return subject_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubject(int index) {
        return subject_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectOrBuilder(
          int index) {
        return subject_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty title = 2;
      public static final int TITLE_FIELD_NUMBER = 2;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> title_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getTitleList() {
        return title_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getTitleOrBuilderList() {
        return title_;
      }
      public int getTitleCount() {
        return title_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getTitle(int index) {
        return title_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getTitleOrBuilder(
          int index) {
        return title_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty relevantdate = 3;
      public static final int RELEVANTDATE_FIELD_NUMBER = 3;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> relevantdate_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getRelevantdateList() {
        return relevantdate_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getRelevantdateOrBuilderList() {
        return relevantdate_;
      }
      public int getRelevantdateCount() {
        return relevantdate_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getRelevantdate(int index) {
        return relevantdate_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getRelevantdateOrBuilder(
          int index) {
        return relevantdate_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField description = 25;
      public static final int DESCRIPTION_FIELD_NUMBER = 25;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> description_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getDescriptionList() {
        return description_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getDescriptionOrBuilderList() {
        return description_;
      }
      public int getDescriptionCount() {
        return description_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDescription(int index) {
        return description_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDescriptionOrBuilder(
          int index) {
        return description_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 4;
      public static final int DATEOFACCEPTANCE_FIELD_NUMBER = 4;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField dateofacceptance_;
      public boolean hasDateofacceptance() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance() {
        return dateofacceptance_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder() {
        return dateofacceptance_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField publisher = 5;
      public static final int PUBLISHER_FIELD_NUMBER = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField publisher_;
      public boolean hasPublisher() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getPublisher() {
        return publisher_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getPublisherOrBuilder() {
        return publisher_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField embargoenddate = 6;
      public static final int EMBARGOENDDATE_FIELD_NUMBER = 6;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField embargoenddate_;
      public boolean hasEmbargoenddate() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEmbargoenddate() {
        return embargoenddate_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEmbargoenddateOrBuilder() {
        return embargoenddate_;
      }
      
      // repeated .eu.dnetlib.data.proto.StringField source = 27;
      public static final int SOURCE_FIELD_NUMBER = 27;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> source_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getSourceList() {
        return source_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getSourceOrBuilderList() {
        return source_;
      }
      public int getSourceCount() {
        return source_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getSource(int index) {
        return source_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSourceOrBuilder(
          int index) {
        return source_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField fulltext = 29;
      public static final int FULLTEXT_FIELD_NUMBER = 29;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> fulltext_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFulltextList() {
        return fulltext_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFulltextOrBuilderList() {
        return fulltext_;
      }
      public int getFulltextCount() {
        return fulltext_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFulltext(int index) {
        return fulltext_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFulltextOrBuilder(
          int index) {
        return fulltext_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField format = 21;
      public static final int FORMAT_FIELD_NUMBER = 21;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> format_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFormatList() {
        return format_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFormatOrBuilderList() {
        return format_;
      }
      public int getFormatCount() {
        return format_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFormat(int index) {
        return format_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFormatOrBuilder(
          int index) {
        return format_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField contributor = 30;
      public static final int CONTRIBUTOR_FIELD_NUMBER = 30;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contributor_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContributorList() {
        return contributor_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContributorOrBuilderList() {
        return contributor_;
      }
      public int getContributorCount() {
        return contributor_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContributor(int index) {
        return contributor_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContributorOrBuilder(
          int index) {
        return contributor_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier resourcetype = 19;
      public static final int RESOURCETYPE_FIELD_NUMBER = 19;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier resourcetype_;
      public boolean hasResourcetype() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResourcetype() {
        return resourcetype_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResourcetypeOrBuilder() {
        return resourcetype_;
      }
      
      // repeated .eu.dnetlib.data.proto.StringField coverage = 43;
      public static final int COVERAGE_FIELD_NUMBER = 43;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> coverage_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getCoverageList() {
        return coverage_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getCoverageOrBuilderList() {
        return coverage_;
      }
      public int getCoverageCount() {
        return coverage_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCoverage(int index) {
        return coverage_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCoverageOrBuilder(
          int index) {
        return coverage_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.Result.Context context = 28;
      public static final int CONTEXT_FIELD_NUMBER = 28;
      private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context> context_;
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context> getContextList() {
        return context_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder> 
          getContextOrBuilderList() {
        return context_;
      }
      public int getContextCount() {
        return context_.size();
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Context getContext(int index) {
        return context_.get(index);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder getContextOrBuilder(
          int index) {
        return context_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.Result.Journal journal = 18;
      public static final int JOURNAL_FIELD_NUMBER = 18;
      private eu.dnetlib.data.proto.ResultProtos.Result.Journal journal_;
      public boolean hasJournal() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Journal getJournal() {
        return journal_;
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder getJournalOrBuilder() {
        return journal_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField storagedate = 9;
      public static final int STORAGEDATE_FIELD_NUMBER = 9;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField storagedate_;
      public boolean hasStoragedate() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getStoragedate() {
        return storagedate_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStoragedateOrBuilder() {
        return storagedate_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField device = 26;
      public static final int DEVICE_FIELD_NUMBER = 26;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField device_;
      public boolean hasDevice() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDevice() {
        return device_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDeviceOrBuilder() {
        return device_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField size = 20;
      public static final int SIZE_FIELD_NUMBER = 20;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField size_;
      public boolean hasSize() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getSize() {
        return size_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSizeOrBuilder() {
        return size_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField version = 22;
      public static final int VERSION_FIELD_NUMBER = 22;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField version_;
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getVersion() {
        return version_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getVersionOrBuilder() {
        return version_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField lastmetadataupdate = 23;
      public static final int LASTMETADATAUPDATE_FIELD_NUMBER = 23;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField lastmetadataupdate_;
      public boolean hasLastmetadataupdate() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getLastmetadataupdate() {
        return lastmetadataupdate_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLastmetadataupdateOrBuilder() {
        return lastmetadataupdate_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField metadataversionnumber = 24;
      public static final int METADATAVERSIONNUMBER_FIELD_NUMBER = 24;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField metadataversionnumber_;
      public boolean hasMetadataversionnumber() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getMetadataversionnumber() {
        return metadataversionnumber_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getMetadataversionnumberOrBuilder() {
        return metadataversionnumber_;
      }
      
      // repeated .eu.dnetlib.data.proto.Result.GeoLocation geolocation = 44;
      public static final int GEOLOCATION_FIELD_NUMBER = 44;
      private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> geolocation_;
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> getGeolocationList() {
        return geolocation_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder> 
          getGeolocationOrBuilderList() {
        return geolocation_;
      }
      public int getGeolocationCount() {
        return geolocation_.size();
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation getGeolocation(int index) {
        return geolocation_.get(index);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder getGeolocationOrBuilder(
          int index) {
        return geolocation_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField documentationUrl = 35;
      public static final int DOCUMENTATIONURL_FIELD_NUMBER = 35;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> documentationUrl_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getDocumentationUrlList() {
        return documentationUrl_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getDocumentationUrlOrBuilderList() {
        return documentationUrl_;
      }
      public int getDocumentationUrlCount() {
        return documentationUrl_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDocumentationUrl(int index) {
        return documentationUrl_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDocumentationUrlOrBuilder(
          int index) {
        return documentationUrl_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty license = 36;
      public static final int LICENSE_FIELD_NUMBER = 36;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> license_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getLicenseList() {
        return license_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getLicenseOrBuilderList() {
        return license_;
      }
      public int getLicenseCount() {
        return license_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getLicense(int index) {
        return license_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getLicenseOrBuilder(
          int index) {
        return license_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.StringField codeRepositoryUrl = 38;
      public static final int CODEREPOSITORYURL_FIELD_NUMBER = 38;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField codeRepositoryUrl_;
      public boolean hasCodeRepositoryUrl() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCodeRepositoryUrl() {
        return codeRepositoryUrl_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeRepositoryUrlOrBuilder() {
        return codeRepositoryUrl_;
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier programmingLanguage = 39;
      public static final int PROGRAMMINGLANGUAGE_FIELD_NUMBER = 39;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier programmingLanguage_;
      public boolean hasProgrammingLanguage() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProgrammingLanguage() {
        return programmingLanguage_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProgrammingLanguageOrBuilder() {
        return programmingLanguage_;
      }
      
      // repeated .eu.dnetlib.data.proto.StringField contactperson = 45;
      public static final int CONTACTPERSON_FIELD_NUMBER = 45;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contactperson_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContactpersonList() {
        return contactperson_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContactpersonOrBuilderList() {
        return contactperson_;
      }
      public int getContactpersonCount() {
        return contactperson_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactperson(int index) {
        return contactperson_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactpersonOrBuilder(
          int index) {
        return contactperson_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField contactgroup = 41;
      public static final int CONTACTGROUP_FIELD_NUMBER = 41;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contactgroup_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContactgroupList() {
        return contactgroup_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getContactgroupOrBuilderList() {
        return contactgroup_;
      }
      public int getContactgroupCount() {
        return contactgroup_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactgroup(int index) {
        return contactgroup_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactgroupOrBuilder(
          int index) {
        return contactgroup_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField tool = 42;
      public static final int TOOL_FIELD_NUMBER = 42;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> tool_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getToolList() {
        return tool_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getToolOrBuilderList() {
        return tool_;
      }
      public int getToolCount() {
        return tool_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getTool(int index) {
        return tool_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getToolOrBuilder(
          int index) {
        return tool_.get(index);
      }
      
      private void initFields() {
        author_ = java.util.Collections.emptyList();
        resulttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        language_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        country_ = java.util.Collections.emptyList();
        subject_ = java.util.Collections.emptyList();
        title_ = java.util.Collections.emptyList();
        relevantdate_ = java.util.Collections.emptyList();
        description_ = java.util.Collections.emptyList();
        dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        publisher_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        embargoenddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        source_ = java.util.Collections.emptyList();
        fulltext_ = java.util.Collections.emptyList();
        format_ = java.util.Collections.emptyList();
        contributor_ = java.util.Collections.emptyList();
        resourcetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        coverage_ = java.util.Collections.emptyList();
        context_ = java.util.Collections.emptyList();
        journal_ = eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance();
        storagedate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        device_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        size_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        version_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        lastmetadataupdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        metadataversionnumber_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        geolocation_ = java.util.Collections.emptyList();
        documentationUrl_ = java.util.Collections.emptyList();
        license_ = java.util.Collections.emptyList();
        codeRepositoryUrl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        programmingLanguage_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        contactperson_ = java.util.Collections.emptyList();
        contactgroup_ = java.util.Collections.emptyList();
        tool_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        for (int i = 0; i < getAuthorCount(); i++) {
          if (!getAuthor(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasResulttype()) {
          if (!getResulttype().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLanguage()) {
          if (!getLanguage().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getCountryCount(); i++) {
          if (!getCountry(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getSubjectCount(); i++) {
          if (!getSubject(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getTitleCount(); i++) {
          if (!getTitle(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getRelevantdateCount(); i++) {
          if (!getRelevantdate(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getDescriptionCount(); i++) {
          if (!getDescription(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDateofacceptance()) {
          if (!getDateofacceptance().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasPublisher()) {
          if (!getPublisher().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasEmbargoenddate()) {
          if (!getEmbargoenddate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getSourceCount(); i++) {
          if (!getSource(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getFulltextCount(); i++) {
          if (!getFulltext(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getFormatCount(); i++) {
          if (!getFormat(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getContributorCount(); i++) {
          if (!getContributor(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasResourcetype()) {
          if (!getResourcetype().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getCoverageCount(); i++) {
          if (!getCoverage(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getContextCount(); i++) {
          if (!getContext(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasJournal()) {
          if (!getJournal().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasStoragedate()) {
          if (!getStoragedate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDevice()) {
          if (!getDevice().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasSize()) {
          if (!getSize().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasVersion()) {
          if (!getVersion().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLastmetadataupdate()) {
          if (!getLastmetadataupdate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasMetadataversionnumber()) {
          if (!getMetadataversionnumber().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getDocumentationUrlCount(); i++) {
          if (!getDocumentationUrl(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getLicenseCount(); i++) {
          if (!getLicense(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasCodeRepositoryUrl()) {
          if (!getCodeRepositoryUrl().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasProgrammingLanguage()) {
          if (!getProgrammingLanguage().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getContactpersonCount(); i++) {
          if (!getContactperson(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getContactgroupCount(); i++) {
          if (!getContactgroup(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getToolCount(); i++) {
          if (!getTool(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        for (int i = 0; i < subject_.size(); i++) {
          output.writeMessage(1, subject_.get(i));
        }
        for (int i = 0; i < title_.size(); i++) {
          output.writeMessage(2, title_.get(i));
        }
        for (int i = 0; i < relevantdate_.size(); i++) {
          output.writeMessage(3, relevantdate_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, dateofacceptance_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(5, publisher_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(6, embargoenddate_);
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(8, resulttype_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeMessage(9, storagedate_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(12, language_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(18, journal_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeMessage(19, resourcetype_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeMessage(20, size_);
        }
        for (int i = 0; i < format_.size(); i++) {
          output.writeMessage(21, format_.get(i));
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeMessage(22, version_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeMessage(23, lastmetadataupdate_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          output.writeMessage(24, metadataversionnumber_);
        }
        for (int i = 0; i < description_.size(); i++) {
          output.writeMessage(25, description_.get(i));
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeMessage(26, device_);
        }
        for (int i = 0; i < source_.size(); i++) {
          output.writeMessage(27, source_.get(i));
        }
        for (int i = 0; i < context_.size(); i++) {
          output.writeMessage(28, context_.get(i));
        }
        for (int i = 0; i < fulltext_.size(); i++) {
          output.writeMessage(29, fulltext_.get(i));
        }
        for (int i = 0; i < contributor_.size(); i++) {
          output.writeMessage(30, contributor_.get(i));
        }
        for (int i = 0; i < country_.size(); i++) {
          output.writeMessage(33, country_.get(i));
        }
        for (int i = 0; i < documentationUrl_.size(); i++) {
          output.writeMessage(35, documentationUrl_.get(i));
        }
        for (int i = 0; i < license_.size(); i++) {
          output.writeMessage(36, license_.get(i));
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          output.writeMessage(38, codeRepositoryUrl_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          output.writeMessage(39, programmingLanguage_);
        }
        for (int i = 0; i < author_.size(); i++) {
          output.writeMessage(40, author_.get(i));
        }
        for (int i = 0; i < contactgroup_.size(); i++) {
          output.writeMessage(41, contactgroup_.get(i));
        }
        for (int i = 0; i < tool_.size(); i++) {
          output.writeMessage(42, tool_.get(i));
        }
        for (int i = 0; i < coverage_.size(); i++) {
          output.writeMessage(43, coverage_.get(i));
        }
        for (int i = 0; i < geolocation_.size(); i++) {
          output.writeMessage(44, geolocation_.get(i));
        }
        for (int i = 0; i < contactperson_.size(); i++) {
          output.writeMessage(45, contactperson_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        for (int i = 0; i < subject_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, subject_.get(i));
        }
        for (int i = 0; i < title_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, title_.get(i));
        }
        for (int i = 0; i < relevantdate_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, relevantdate_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, dateofacceptance_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, publisher_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, embargoenddate_);
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, resulttype_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, storagedate_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, language_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(18, journal_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(19, resourcetype_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(20, size_);
        }
        for (int i = 0; i < format_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(21, format_.get(i));
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(22, version_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(23, lastmetadataupdate_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(24, metadataversionnumber_);
        }
        for (int i = 0; i < description_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(25, description_.get(i));
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(26, device_);
        }
        for (int i = 0; i < source_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(27, source_.get(i));
        }
        for (int i = 0; i < context_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(28, context_.get(i));
        }
        for (int i = 0; i < fulltext_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(29, fulltext_.get(i));
        }
        for (int i = 0; i < contributor_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(30, contributor_.get(i));
        }
        for (int i = 0; i < country_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(33, country_.get(i));
        }
        for (int i = 0; i < documentationUrl_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(35, documentationUrl_.get(i));
        }
        for (int i = 0; i < license_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(36, license_.get(i));
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(38, codeRepositoryUrl_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(39, programmingLanguage_);
        }
        for (int i = 0; i < author_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(40, author_.get(i));
        }
        for (int i = 0; i < contactgroup_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(41, contactgroup_.get(i));
        }
        for (int i = 0; i < tool_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(42, tool_.get(i));
        }
        for (int i = 0; i < coverage_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(43, coverage_.get(i));
        }
        for (int i = 0; i < geolocation_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(44, geolocation_.get(i));
        }
        for (int i = 0; i < contactperson_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(45, contactperson_.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.ResultProtos.Result.Metadata parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Metadata 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.ResultProtos.Result.Metadata 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.ResultProtos.Result.MetadataOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Metadata_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Metadata_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.Metadata.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getAuthorFieldBuilder();
            getResulttypeFieldBuilder();
            getLanguageFieldBuilder();
            getCountryFieldBuilder();
            getSubjectFieldBuilder();
            getTitleFieldBuilder();
            getRelevantdateFieldBuilder();
            getDescriptionFieldBuilder();
            getDateofacceptanceFieldBuilder();
            getPublisherFieldBuilder();
            getEmbargoenddateFieldBuilder();
            getSourceFieldBuilder();
            getFulltextFieldBuilder();
            getFormatFieldBuilder();
            getContributorFieldBuilder();
            getResourcetypeFieldBuilder();
            getCoverageFieldBuilder();
            getContextFieldBuilder();
            getJournalFieldBuilder();
            getStoragedateFieldBuilder();
            getDeviceFieldBuilder();
            getSizeFieldBuilder();
            getVersionFieldBuilder();
            getLastmetadataupdateFieldBuilder();
            getMetadataversionnumberFieldBuilder();
            getGeolocationFieldBuilder();
            getDocumentationUrlFieldBuilder();
            getLicenseFieldBuilder();
            getCodeRepositoryUrlFieldBuilder();
            getProgrammingLanguageFieldBuilder();
            getContactpersonFieldBuilder();
            getContactgroupFieldBuilder();
            getToolFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          if (authorBuilder_ == null) {
            author_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            authorBuilder_.clear();
          }
          if (resulttypeBuilder_ == null) {
            resulttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            resulttypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (languageBuilder_ == null) {
            language_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            languageBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (countryBuilder_ == null) {
            country_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            countryBuilder_.clear();
          }
          if (subjectBuilder_ == null) {
            subject_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            subjectBuilder_.clear();
          }
          if (titleBuilder_ == null) {
            title_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            titleBuilder_.clear();
          }
          if (relevantdateBuilder_ == null) {
            relevantdate_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            relevantdateBuilder_.clear();
          }
          if (descriptionBuilder_ == null) {
            description_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            descriptionBuilder_.clear();
          }
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            dateofacceptanceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          if (publisherBuilder_ == null) {
            publisher_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            publisherBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          if (embargoenddateBuilder_ == null) {
            embargoenddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            embargoenddateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          if (sourceBuilder_ == null) {
            source_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            sourceBuilder_.clear();
          }
          if (fulltextBuilder_ == null) {
            fulltext_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            fulltextBuilder_.clear();
          }
          if (formatBuilder_ == null) {
            format_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            formatBuilder_.clear();
          }
          if (contributorBuilder_ == null) {
            contributor_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            contributorBuilder_.clear();
          }
          if (resourcetypeBuilder_ == null) {
            resourcetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            resourcetypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00008000);
          if (coverageBuilder_ == null) {
            coverage_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            coverageBuilder_.clear();
          }
          if (contextBuilder_ == null) {
            context_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00020000);
          } else {
            contextBuilder_.clear();
          }
          if (journalBuilder_ == null) {
            journal_ = eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance();
          } else {
            journalBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00040000);
          if (storagedateBuilder_ == null) {
            storagedate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            storagedateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00080000);
          if (deviceBuilder_ == null) {
            device_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            deviceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00100000);
          if (sizeBuilder_ == null) {
            size_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            sizeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00200000);
          if (versionBuilder_ == null) {
            version_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            versionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00400000);
          if (lastmetadataupdateBuilder_ == null) {
            lastmetadataupdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            lastmetadataupdateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00800000);
          if (metadataversionnumberBuilder_ == null) {
            metadataversionnumber_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            metadataversionnumberBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x01000000);
          if (geolocationBuilder_ == null) {
            geolocation_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x02000000);
          } else {
            geolocationBuilder_.clear();
          }
          if (documentationUrlBuilder_ == null) {
            documentationUrl_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x04000000);
          } else {
            documentationUrlBuilder_.clear();
          }
          if (licenseBuilder_ == null) {
            license_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x08000000);
          } else {
            licenseBuilder_.clear();
          }
          if (codeRepositoryUrlBuilder_ == null) {
            codeRepositoryUrl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            codeRepositoryUrlBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x10000000);
          if (programmingLanguageBuilder_ == null) {
            programmingLanguage_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            programmingLanguageBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x20000000);
          if (contactpersonBuilder_ == null) {
            contactperson_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x40000000);
          } else {
            contactpersonBuilder_.clear();
          }
          if (contactgroupBuilder_ == null) {
            contactgroup_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x80000000);
          } else {
            contactgroupBuilder_.clear();
          }
          if (toolBuilder_ == null) {
            tool_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00000001);
          } else {
            toolBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Metadata getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Metadata build() {
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.Metadata buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Metadata buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata result = new eu.dnetlib.data.proto.ResultProtos.Result.Metadata(this);
          int from_bitField0_ = bitField0_;
          int from_bitField1_ = bitField1_;
          int to_bitField0_ = 0;
          if (authorBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              author_ = java.util.Collections.unmodifiableList(author_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.author_ = author_;
          } else {
            result.author_ = authorBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000001;
          }
          if (resulttypeBuilder_ == null) {
            result.resulttype_ = resulttype_;
          } else {
            result.resulttype_ = resulttypeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000002;
          }
          if (languageBuilder_ == null) {
            result.language_ = language_;
          } else {
            result.language_ = languageBuilder_.build();
          }
          if (countryBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              country_ = java.util.Collections.unmodifiableList(country_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.country_ = country_;
          } else {
            result.country_ = countryBuilder_.build();
          }
          if (subjectBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              subject_ = java.util.Collections.unmodifiableList(subject_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.subject_ = subject_;
          } else {
            result.subject_ = subjectBuilder_.build();
          }
          if (titleBuilder_ == null) {
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              title_ = java.util.Collections.unmodifiableList(title_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.title_ = title_;
          } else {
            result.title_ = titleBuilder_.build();
          }
          if (relevantdateBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              relevantdate_ = java.util.Collections.unmodifiableList(relevantdate_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.relevantdate_ = relevantdate_;
          } else {
            result.relevantdate_ = relevantdateBuilder_.build();
          }
          if (descriptionBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              description_ = java.util.Collections.unmodifiableList(description_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.description_ = description_;
          } else {
            result.description_ = descriptionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000004;
          }
          if (dateofacceptanceBuilder_ == null) {
            result.dateofacceptance_ = dateofacceptance_;
          } else {
            result.dateofacceptance_ = dateofacceptanceBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000008;
          }
          if (publisherBuilder_ == null) {
            result.publisher_ = publisher_;
          } else {
            result.publisher_ = publisherBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000010;
          }
          if (embargoenddateBuilder_ == null) {
            result.embargoenddate_ = embargoenddate_;
          } else {
            result.embargoenddate_ = embargoenddateBuilder_.build();
          }
          if (sourceBuilder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800)) {
              source_ = java.util.Collections.unmodifiableList(source_);
              bitField0_ = (bitField0_ & ~0x00000800);
            }
            result.source_ = source_;
          } else {
            result.source_ = sourceBuilder_.build();
          }
          if (fulltextBuilder_ == null) {
            if (((bitField0_ & 0x00001000) == 0x00001000)) {
              fulltext_ = java.util.Collections.unmodifiableList(fulltext_);
              bitField0_ = (bitField0_ & ~0x00001000);
            }
            result.fulltext_ = fulltext_;
          } else {
            result.fulltext_ = fulltextBuilder_.build();
          }
          if (formatBuilder_ == null) {
            if (((bitField0_ & 0x00002000) == 0x00002000)) {
              format_ = java.util.Collections.unmodifiableList(format_);
              bitField0_ = (bitField0_ & ~0x00002000);
            }
            result.format_ = format_;
          } else {
            result.format_ = formatBuilder_.build();
          }
          if (contributorBuilder_ == null) {
            if (((bitField0_ & 0x00004000) == 0x00004000)) {
              contributor_ = java.util.Collections.unmodifiableList(contributor_);
              bitField0_ = (bitField0_ & ~0x00004000);
            }
            result.contributor_ = contributor_;
          } else {
            result.contributor_ = contributorBuilder_.build();
          }
          if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
            to_bitField0_ |= 0x00000020;
          }
          if (resourcetypeBuilder_ == null) {
            result.resourcetype_ = resourcetype_;
          } else {
            result.resourcetype_ = resourcetypeBuilder_.build();
          }
          if (coverageBuilder_ == null) {
            if (((bitField0_ & 0x00010000) == 0x00010000)) {
              coverage_ = java.util.Collections.unmodifiableList(coverage_);
              bitField0_ = (bitField0_ & ~0x00010000);
            }
            result.coverage_ = coverage_;
          } else {
            result.coverage_ = coverageBuilder_.build();
          }
          if (contextBuilder_ == null) {
            if (((bitField0_ & 0x00020000) == 0x00020000)) {
              context_ = java.util.Collections.unmodifiableList(context_);
              bitField0_ = (bitField0_ & ~0x00020000);
            }
            result.context_ = context_;
          } else {
            result.context_ = contextBuilder_.build();
          }
          if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
            to_bitField0_ |= 0x00000040;
          }
          if (journalBuilder_ == null) {
            result.journal_ = journal_;
          } else {
            result.journal_ = journalBuilder_.build();
          }
          if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
            to_bitField0_ |= 0x00000080;
          }
          if (storagedateBuilder_ == null) {
            result.storagedate_ = storagedate_;
          } else {
            result.storagedate_ = storagedateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
            to_bitField0_ |= 0x00000100;
          }
          if (deviceBuilder_ == null) {
            result.device_ = device_;
          } else {
            result.device_ = deviceBuilder_.build();
          }
          if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
            to_bitField0_ |= 0x00000200;
          }
          if (sizeBuilder_ == null) {
            result.size_ = size_;
          } else {
            result.size_ = sizeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
            to_bitField0_ |= 0x00000400;
          }
          if (versionBuilder_ == null) {
            result.version_ = version_;
          } else {
            result.version_ = versionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
            to_bitField0_ |= 0x00000800;
          }
          if (lastmetadataupdateBuilder_ == null) {
            result.lastmetadataupdate_ = lastmetadataupdate_;
          } else {
            result.lastmetadataupdate_ = lastmetadataupdateBuilder_.build();
          }
          if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
            to_bitField0_ |= 0x00001000;
          }
          if (metadataversionnumberBuilder_ == null) {
            result.metadataversionnumber_ = metadataversionnumber_;
          } else {
            result.metadataversionnumber_ = metadataversionnumberBuilder_.build();
          }
          if (geolocationBuilder_ == null) {
            if (((bitField0_ & 0x02000000) == 0x02000000)) {
              geolocation_ = java.util.Collections.unmodifiableList(geolocation_);
              bitField0_ = (bitField0_ & ~0x02000000);
            }
            result.geolocation_ = geolocation_;
          } else {
            result.geolocation_ = geolocationBuilder_.build();
          }
          if (documentationUrlBuilder_ == null) {
            if (((bitField0_ & 0x04000000) == 0x04000000)) {
              documentationUrl_ = java.util.Collections.unmodifiableList(documentationUrl_);
              bitField0_ = (bitField0_ & ~0x04000000);
            }
            result.documentationUrl_ = documentationUrl_;
          } else {
            result.documentationUrl_ = documentationUrlBuilder_.build();
          }
          if (licenseBuilder_ == null) {
            if (((bitField0_ & 0x08000000) == 0x08000000)) {
              license_ = java.util.Collections.unmodifiableList(license_);
              bitField0_ = (bitField0_ & ~0x08000000);
            }
            result.license_ = license_;
          } else {
            result.license_ = licenseBuilder_.build();
          }
          if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
            to_bitField0_ |= 0x00002000;
          }
          if (codeRepositoryUrlBuilder_ == null) {
            result.codeRepositoryUrl_ = codeRepositoryUrl_;
          } else {
            result.codeRepositoryUrl_ = codeRepositoryUrlBuilder_.build();
          }
          if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
            to_bitField0_ |= 0x00004000;
          }
          if (programmingLanguageBuilder_ == null) {
            result.programmingLanguage_ = programmingLanguage_;
          } else {
            result.programmingLanguage_ = programmingLanguageBuilder_.build();
          }
          if (contactpersonBuilder_ == null) {
            if (((bitField0_ & 0x40000000) == 0x40000000)) {
              contactperson_ = java.util.Collections.unmodifiableList(contactperson_);
              bitField0_ = (bitField0_ & ~0x40000000);
            }
            result.contactperson_ = contactperson_;
          } else {
            result.contactperson_ = contactpersonBuilder_.build();
          }
          if (contactgroupBuilder_ == null) {
            if (((bitField0_ & 0x80000000) == 0x80000000)) {
              contactgroup_ = java.util.Collections.unmodifiableList(contactgroup_);
              bitField0_ = (bitField0_ & ~0x80000000);
            }
            result.contactgroup_ = contactgroup_;
          } else {
            result.contactgroup_ = contactgroupBuilder_.build();
          }
          if (toolBuilder_ == null) {
            if (((bitField1_ & 0x00000001) == 0x00000001)) {
              tool_ = java.util.Collections.unmodifiableList(tool_);
              bitField1_ = (bitField1_ & ~0x00000001);
            }
            result.tool_ = tool_;
          } else {
            result.tool_ = toolBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof eu.dnetlib.data.proto.ResultProtos.Result.Metadata) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.Metadata)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.Metadata other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance()) return this;
          if (authorBuilder_ == null) {
            if (!other.author_.isEmpty()) {
              if (author_.isEmpty()) {
                author_ = other.author_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureAuthorIsMutable();
                author_.addAll(other.author_);
              }
              onChanged();
            }
          } else {
            if (!other.author_.isEmpty()) {
              if (authorBuilder_.isEmpty()) {
                authorBuilder_.dispose();
                authorBuilder_ = null;
                author_ = other.author_;
                bitField0_ = (bitField0_ & ~0x00000001);
                authorBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getAuthorFieldBuilder() : null;
              } else {
                authorBuilder_.addAllMessages(other.author_);
              }
            }
          }
          if (other.hasResulttype()) {
            mergeResulttype(other.getResulttype());
          }
          if (other.hasLanguage()) {
            mergeLanguage(other.getLanguage());
          }
          if (countryBuilder_ == null) {
            if (!other.country_.isEmpty()) {
              if (country_.isEmpty()) {
                country_ = other.country_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureCountryIsMutable();
                country_.addAll(other.country_);
              }
              onChanged();
            }
          } else {
            if (!other.country_.isEmpty()) {
              if (countryBuilder_.isEmpty()) {
                countryBuilder_.dispose();
                countryBuilder_ = null;
                country_ = other.country_;
                bitField0_ = (bitField0_ & ~0x00000008);
                countryBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getCountryFieldBuilder() : null;
              } else {
                countryBuilder_.addAllMessages(other.country_);
              }
            }
          }
          if (subjectBuilder_ == null) {
            if (!other.subject_.isEmpty()) {
              if (subject_.isEmpty()) {
                subject_ = other.subject_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureSubjectIsMutable();
                subject_.addAll(other.subject_);
              }
              onChanged();
            }
          } else {
            if (!other.subject_.isEmpty()) {
              if (subjectBuilder_.isEmpty()) {
                subjectBuilder_.dispose();
                subjectBuilder_ = null;
                subject_ = other.subject_;
                bitField0_ = (bitField0_ & ~0x00000010);
                subjectBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getSubjectFieldBuilder() : null;
              } else {
                subjectBuilder_.addAllMessages(other.subject_);
              }
            }
          }
          if (titleBuilder_ == null) {
            if (!other.title_.isEmpty()) {
              if (title_.isEmpty()) {
                title_ = other.title_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureTitleIsMutable();
                title_.addAll(other.title_);
              }
              onChanged();
            }
          } else {
            if (!other.title_.isEmpty()) {
              if (titleBuilder_.isEmpty()) {
                titleBuilder_.dispose();
                titleBuilder_ = null;
                title_ = other.title_;
                bitField0_ = (bitField0_ & ~0x00000020);
                titleBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getTitleFieldBuilder() : null;
              } else {
                titleBuilder_.addAllMessages(other.title_);
              }
            }
          }
          if (relevantdateBuilder_ == null) {
            if (!other.relevantdate_.isEmpty()) {
              if (relevantdate_.isEmpty()) {
                relevantdate_ = other.relevantdate_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureRelevantdateIsMutable();
                relevantdate_.addAll(other.relevantdate_);
              }
              onChanged();
            }
          } else {
            if (!other.relevantdate_.isEmpty()) {
              if (relevantdateBuilder_.isEmpty()) {
                relevantdateBuilder_.dispose();
                relevantdateBuilder_ = null;
                relevantdate_ = other.relevantdate_;
                bitField0_ = (bitField0_ & ~0x00000040);
                relevantdateBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getRelevantdateFieldBuilder() : null;
              } else {
                relevantdateBuilder_.addAllMessages(other.relevantdate_);
              }
            }
          }
          if (descriptionBuilder_ == null) {
            if (!other.description_.isEmpty()) {
              if (description_.isEmpty()) {
                description_ = other.description_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureDescriptionIsMutable();
                description_.addAll(other.description_);
              }
              onChanged();
            }
          } else {
            if (!other.description_.isEmpty()) {
              if (descriptionBuilder_.isEmpty()) {
                descriptionBuilder_.dispose();
                descriptionBuilder_ = null;
                description_ = other.description_;
                bitField0_ = (bitField0_ & ~0x00000080);
                descriptionBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getDescriptionFieldBuilder() : null;
              } else {
                descriptionBuilder_.addAllMessages(other.description_);
              }
            }
          }
          if (other.hasDateofacceptance()) {
            mergeDateofacceptance(other.getDateofacceptance());
          }
          if (other.hasPublisher()) {
            mergePublisher(other.getPublisher());
          }
          if (other.hasEmbargoenddate()) {
            mergeEmbargoenddate(other.getEmbargoenddate());
          }
          if (sourceBuilder_ == null) {
            if (!other.source_.isEmpty()) {
              if (source_.isEmpty()) {
                source_ = other.source_;
                bitField0_ = (bitField0_ & ~0x00000800);
              } else {
                ensureSourceIsMutable();
                source_.addAll(other.source_);
              }
              onChanged();
            }
          } else {
            if (!other.source_.isEmpty()) {
              if (sourceBuilder_.isEmpty()) {
                sourceBuilder_.dispose();
                sourceBuilder_ = null;
                source_ = other.source_;
                bitField0_ = (bitField0_ & ~0x00000800);
                sourceBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getSourceFieldBuilder() : null;
              } else {
                sourceBuilder_.addAllMessages(other.source_);
              }
            }
          }
          if (fulltextBuilder_ == null) {
            if (!other.fulltext_.isEmpty()) {
              if (fulltext_.isEmpty()) {
                fulltext_ = other.fulltext_;
                bitField0_ = (bitField0_ & ~0x00001000);
              } else {
                ensureFulltextIsMutable();
                fulltext_.addAll(other.fulltext_);
              }
              onChanged();
            }
          } else {
            if (!other.fulltext_.isEmpty()) {
              if (fulltextBuilder_.isEmpty()) {
                fulltextBuilder_.dispose();
                fulltextBuilder_ = null;
                fulltext_ = other.fulltext_;
                bitField0_ = (bitField0_ & ~0x00001000);
                fulltextBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getFulltextFieldBuilder() : null;
              } else {
                fulltextBuilder_.addAllMessages(other.fulltext_);
              }
            }
          }
          if (formatBuilder_ == null) {
            if (!other.format_.isEmpty()) {
              if (format_.isEmpty()) {
                format_ = other.format_;
                bitField0_ = (bitField0_ & ~0x00002000);
              } else {
                ensureFormatIsMutable();
                format_.addAll(other.format_);
              }
              onChanged();
            }
          } else {
            if (!other.format_.isEmpty()) {
              if (formatBuilder_.isEmpty()) {
                formatBuilder_.dispose();
                formatBuilder_ = null;
                format_ = other.format_;
                bitField0_ = (bitField0_ & ~0x00002000);
                formatBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getFormatFieldBuilder() : null;
              } else {
                formatBuilder_.addAllMessages(other.format_);
              }
            }
          }
          if (contributorBuilder_ == null) {
            if (!other.contributor_.isEmpty()) {
              if (contributor_.isEmpty()) {
                contributor_ = other.contributor_;
                bitField0_ = (bitField0_ & ~0x00004000);
              } else {
                ensureContributorIsMutable();
                contributor_.addAll(other.contributor_);
              }
              onChanged();
            }
          } else {
            if (!other.contributor_.isEmpty()) {
              if (contributorBuilder_.isEmpty()) {
                contributorBuilder_.dispose();
                contributorBuilder_ = null;
                contributor_ = other.contributor_;
                bitField0_ = (bitField0_ & ~0x00004000);
                contributorBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getContributorFieldBuilder() : null;
              } else {
                contributorBuilder_.addAllMessages(other.contributor_);
              }
            }
          }
          if (other.hasResourcetype()) {
            mergeResourcetype(other.getResourcetype());
          }
          if (coverageBuilder_ == null) {
            if (!other.coverage_.isEmpty()) {
              if (coverage_.isEmpty()) {
                coverage_ = other.coverage_;
                bitField0_ = (bitField0_ & ~0x00010000);
              } else {
                ensureCoverageIsMutable();
                coverage_.addAll(other.coverage_);
              }
              onChanged();
            }
          } else {
            if (!other.coverage_.isEmpty()) {
              if (coverageBuilder_.isEmpty()) {
                coverageBuilder_.dispose();
                coverageBuilder_ = null;
                coverage_ = other.coverage_;
                bitField0_ = (bitField0_ & ~0x00010000);
                coverageBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getCoverageFieldBuilder() : null;
              } else {
                coverageBuilder_.addAllMessages(other.coverage_);
              }
            }
          }
          if (contextBuilder_ == null) {
            if (!other.context_.isEmpty()) {
              if (context_.isEmpty()) {
                context_ = other.context_;
                bitField0_ = (bitField0_ & ~0x00020000);
              } else {
                ensureContextIsMutable();
                context_.addAll(other.context_);
              }
              onChanged();
            }
          } else {
            if (!other.context_.isEmpty()) {
              if (contextBuilder_.isEmpty()) {
                contextBuilder_.dispose();
                contextBuilder_ = null;
                context_ = other.context_;
                bitField0_ = (bitField0_ & ~0x00020000);
                contextBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getContextFieldBuilder() : null;
              } else {
                contextBuilder_.addAllMessages(other.context_);
              }
            }
          }
          if (other.hasJournal()) {
            mergeJournal(other.getJournal());
          }
          if (other.hasStoragedate()) {
            mergeStoragedate(other.getStoragedate());
          }
          if (other.hasDevice()) {
            mergeDevice(other.getDevice());
          }
          if (other.hasSize()) {
            mergeSize(other.getSize());
          }
          if (other.hasVersion()) {
            mergeVersion(other.getVersion());
          }
          if (other.hasLastmetadataupdate()) {
            mergeLastmetadataupdate(other.getLastmetadataupdate());
          }
          if (other.hasMetadataversionnumber()) {
            mergeMetadataversionnumber(other.getMetadataversionnumber());
          }
          if (geolocationBuilder_ == null) {
            if (!other.geolocation_.isEmpty()) {
              if (geolocation_.isEmpty()) {
                geolocation_ = other.geolocation_;
                bitField0_ = (bitField0_ & ~0x02000000);
              } else {
                ensureGeolocationIsMutable();
                geolocation_.addAll(other.geolocation_);
              }
              onChanged();
            }
          } else {
            if (!other.geolocation_.isEmpty()) {
              if (geolocationBuilder_.isEmpty()) {
                geolocationBuilder_.dispose();
                geolocationBuilder_ = null;
                geolocation_ = other.geolocation_;
                bitField0_ = (bitField0_ & ~0x02000000);
                geolocationBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getGeolocationFieldBuilder() : null;
              } else {
                geolocationBuilder_.addAllMessages(other.geolocation_);
              }
            }
          }
          if (documentationUrlBuilder_ == null) {
            if (!other.documentationUrl_.isEmpty()) {
              if (documentationUrl_.isEmpty()) {
                documentationUrl_ = other.documentationUrl_;
                bitField0_ = (bitField0_ & ~0x04000000);
              } else {
                ensureDocumentationUrlIsMutable();
                documentationUrl_.addAll(other.documentationUrl_);
              }
              onChanged();
            }
          } else {
            if (!other.documentationUrl_.isEmpty()) {
              if (documentationUrlBuilder_.isEmpty()) {
                documentationUrlBuilder_.dispose();
                documentationUrlBuilder_ = null;
                documentationUrl_ = other.documentationUrl_;
                bitField0_ = (bitField0_ & ~0x04000000);
                documentationUrlBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getDocumentationUrlFieldBuilder() : null;
              } else {
                documentationUrlBuilder_.addAllMessages(other.documentationUrl_);
              }
            }
          }
          if (licenseBuilder_ == null) {
            if (!other.license_.isEmpty()) {
              if (license_.isEmpty()) {
                license_ = other.license_;
                bitField0_ = (bitField0_ & ~0x08000000);
              } else {
                ensureLicenseIsMutable();
                license_.addAll(other.license_);
              }
              onChanged();
            }
          } else {
            if (!other.license_.isEmpty()) {
              if (licenseBuilder_.isEmpty()) {
                licenseBuilder_.dispose();
                licenseBuilder_ = null;
                license_ = other.license_;
                bitField0_ = (bitField0_ & ~0x08000000);
                licenseBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getLicenseFieldBuilder() : null;
              } else {
                licenseBuilder_.addAllMessages(other.license_);
              }
            }
          }
          if (other.hasCodeRepositoryUrl()) {
            mergeCodeRepositoryUrl(other.getCodeRepositoryUrl());
          }
          if (other.hasProgrammingLanguage()) {
            mergeProgrammingLanguage(other.getProgrammingLanguage());
          }
          if (contactpersonBuilder_ == null) {
            if (!other.contactperson_.isEmpty()) {
              if (contactperson_.isEmpty()) {
                contactperson_ = other.contactperson_;
                bitField0_ = (bitField0_ & ~0x40000000);
              } else {
                ensureContactpersonIsMutable();
                contactperson_.addAll(other.contactperson_);
              }
              onChanged();
            }
          } else {
            if (!other.contactperson_.isEmpty()) {
              if (contactpersonBuilder_.isEmpty()) {
                contactpersonBuilder_.dispose();
                contactpersonBuilder_ = null;
                contactperson_ = other.contactperson_;
                bitField0_ = (bitField0_ & ~0x40000000);
                contactpersonBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getContactpersonFieldBuilder() : null;
              } else {
                contactpersonBuilder_.addAllMessages(other.contactperson_);
              }
            }
          }
          if (contactgroupBuilder_ == null) {
            if (!other.contactgroup_.isEmpty()) {
              if (contactgroup_.isEmpty()) {
                contactgroup_ = other.contactgroup_;
                bitField0_ = (bitField0_ & ~0x80000000);
              } else {
                ensureContactgroupIsMutable();
                contactgroup_.addAll(other.contactgroup_);
              }
              onChanged();
            }
          } else {
            if (!other.contactgroup_.isEmpty()) {
              if (contactgroupBuilder_.isEmpty()) {
                contactgroupBuilder_.dispose();
                contactgroupBuilder_ = null;
                contactgroup_ = other.contactgroup_;
                bitField0_ = (bitField0_ & ~0x80000000);
                contactgroupBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getContactgroupFieldBuilder() : null;
              } else {
                contactgroupBuilder_.addAllMessages(other.contactgroup_);
              }
            }
          }
          if (toolBuilder_ == null) {
            if (!other.tool_.isEmpty()) {
              if (tool_.isEmpty()) {
                tool_ = other.tool_;
                bitField1_ = (bitField1_ & ~0x00000001);
              } else {
                ensureToolIsMutable();
                tool_.addAll(other.tool_);
              }
              onChanged();
            }
          } else {
            if (!other.tool_.isEmpty()) {
              if (toolBuilder_.isEmpty()) {
                toolBuilder_.dispose();
                toolBuilder_ = null;
                tool_ = other.tool_;
                bitField1_ = (bitField1_ & ~0x00000001);
                toolBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getToolFieldBuilder() : null;
              } else {
                toolBuilder_.addAllMessages(other.tool_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          for (int i = 0; i < getAuthorCount(); i++) {
            if (!getAuthor(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasResulttype()) {
            if (!getResulttype().isInitialized()) {
              
              return false;
            }
          }
          if (hasLanguage()) {
            if (!getLanguage().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getCountryCount(); i++) {
            if (!getCountry(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getSubjectCount(); i++) {
            if (!getSubject(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getTitleCount(); i++) {
            if (!getTitle(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getRelevantdateCount(); i++) {
            if (!getRelevantdate(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getDescriptionCount(); i++) {
            if (!getDescription(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasDateofacceptance()) {
            if (!getDateofacceptance().isInitialized()) {
              
              return false;
            }
          }
          if (hasPublisher()) {
            if (!getPublisher().isInitialized()) {
              
              return false;
            }
          }
          if (hasEmbargoenddate()) {
            if (!getEmbargoenddate().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getSourceCount(); i++) {
            if (!getSource(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getFulltextCount(); i++) {
            if (!getFulltext(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getFormatCount(); i++) {
            if (!getFormat(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getContributorCount(); i++) {
            if (!getContributor(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasResourcetype()) {
            if (!getResourcetype().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getCoverageCount(); i++) {
            if (!getCoverage(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getContextCount(); i++) {
            if (!getContext(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasJournal()) {
            if (!getJournal().isInitialized()) {
              
              return false;
            }
          }
          if (hasStoragedate()) {
            if (!getStoragedate().isInitialized()) {
              
              return false;
            }
          }
          if (hasDevice()) {
            if (!getDevice().isInitialized()) {
              
              return false;
            }
          }
          if (hasSize()) {
            if (!getSize().isInitialized()) {
              
              return false;
            }
          }
          if (hasVersion()) {
            if (!getVersion().isInitialized()) {
              
              return false;
            }
          }
          if (hasLastmetadataupdate()) {
            if (!getLastmetadataupdate().isInitialized()) {
              
              return false;
            }
          }
          if (hasMetadataversionnumber()) {
            if (!getMetadataversionnumber().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getDocumentationUrlCount(); i++) {
            if (!getDocumentationUrl(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getLicenseCount(); i++) {
            if (!getLicense(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasCodeRepositoryUrl()) {
            if (!getCodeRepositoryUrl().isInitialized()) {
              
              return false;
            }
          }
          if (hasProgrammingLanguage()) {
            if (!getProgrammingLanguage().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getContactpersonCount(); i++) {
            if (!getContactperson(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getContactgroupCount(); i++) {
            if (!getContactgroup(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getToolCount(); i++) {
            if (!getTool(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: {
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addSubject(subBuilder.buildPartial());
                break;
              }
              case 18: {
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addTitle(subBuilder.buildPartial());
                break;
              }
              case 26: {
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addRelevantdate(subBuilder.buildPartial());
                break;
              }
              case 34: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasDateofacceptance()) {
                  subBuilder.mergeFrom(getDateofacceptance());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDateofacceptance(subBuilder.buildPartial());
                break;
              }
              case 42: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasPublisher()) {
                  subBuilder.mergeFrom(getPublisher());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setPublisher(subBuilder.buildPartial());
                break;
              }
              case 50: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasEmbargoenddate()) {
                  subBuilder.mergeFrom(getEmbargoenddate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setEmbargoenddate(subBuilder.buildPartial());
                break;
              }
              case 66: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasResulttype()) {
                  subBuilder.mergeFrom(getResulttype());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setResulttype(subBuilder.buildPartial());
                break;
              }
              case 74: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasStoragedate()) {
                  subBuilder.mergeFrom(getStoragedate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setStoragedate(subBuilder.buildPartial());
                break;
              }
              case 98: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasLanguage()) {
                  subBuilder.mergeFrom(getLanguage());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setLanguage(subBuilder.buildPartial());
                break;
              }
              case 146: {
                eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.Journal.newBuilder();
                if (hasJournal()) {
                  subBuilder.mergeFrom(getJournal());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setJournal(subBuilder.buildPartial());
                break;
              }
              case 154: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasResourcetype()) {
                  subBuilder.mergeFrom(getResourcetype());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setResourcetype(subBuilder.buildPartial());
                break;
              }
              case 162: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasSize()) {
                  subBuilder.mergeFrom(getSize());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setSize(subBuilder.buildPartial());
                break;
              }
              case 170: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addFormat(subBuilder.buildPartial());
                break;
              }
              case 178: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasVersion()) {
                  subBuilder.mergeFrom(getVersion());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setVersion(subBuilder.buildPartial());
                break;
              }
              case 186: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasLastmetadataupdate()) {
                  subBuilder.mergeFrom(getLastmetadataupdate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setLastmetadataupdate(subBuilder.buildPartial());
                break;
              }
              case 194: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasMetadataversionnumber()) {
                  subBuilder.mergeFrom(getMetadataversionnumber());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setMetadataversionnumber(subBuilder.buildPartial());
                break;
              }
              case 202: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addDescription(subBuilder.buildPartial());
                break;
              }
              case 210: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasDevice()) {
                  subBuilder.mergeFrom(getDevice());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDevice(subBuilder.buildPartial());
                break;
              }
              case 218: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addSource(subBuilder.buildPartial());
                break;
              }
              case 226: {
                eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.Context.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addContext(subBuilder.buildPartial());
                break;
              }
              case 234: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addFulltext(subBuilder.buildPartial());
                break;
              }
              case 242: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addContributor(subBuilder.buildPartial());
                break;
              }
              case 266: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addCountry(subBuilder.buildPartial());
                break;
              }
              case 282: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addDocumentationUrl(subBuilder.buildPartial());
                break;
              }
              case 290: {
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addLicense(subBuilder.buildPartial());
                break;
              }
              case 306: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasCodeRepositoryUrl()) {
                  subBuilder.mergeFrom(getCodeRepositoryUrl());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setCodeRepositoryUrl(subBuilder.buildPartial());
                break;
              }
              case 314: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasProgrammingLanguage()) {
                  subBuilder.mergeFrom(getProgrammingLanguage());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setProgrammingLanguage(subBuilder.buildPartial());
                break;
              }
              case 322: {
                eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Author.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addAuthor(subBuilder.buildPartial());
                break;
              }
              case 330: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addContactgroup(subBuilder.buildPartial());
                break;
              }
              case 338: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addTool(subBuilder.buildPartial());
                break;
              }
              case 346: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addCoverage(subBuilder.buildPartial());
                break;
              }
              case 354: {
                eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addGeolocation(subBuilder.buildPartial());
                break;
              }
              case 362: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addContactperson(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        private int bitField1_;
        
        // repeated .eu.dnetlib.data.proto.Author author = 40;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author> author_ =
          java.util.Collections.emptyList();
        private void ensureAuthorIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            author_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.Author>(author_);
            bitField0_ |= 0x00000001;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Author, eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder, eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder> authorBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author> getAuthorList() {
          if (authorBuilder_ == null) {
            return java.util.Collections.unmodifiableList(author_);
          } else {
            return authorBuilder_.getMessageList();
          }
        }
        public int getAuthorCount() {
          if (authorBuilder_ == null) {
            return author_.size();
          } else {
            return authorBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Author getAuthor(int index) {
          if (authorBuilder_ == null) {
            return author_.get(index);
          } else {
            return authorBuilder_.getMessage(index);
          }
        }
        public Builder setAuthor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Author value) {
          if (authorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAuthorIsMutable();
            author_.set(index, value);
            onChanged();
          } else {
            authorBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setAuthor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder builderForValue) {
          if (authorBuilder_ == null) {
            ensureAuthorIsMutable();
            author_.set(index, builderForValue.build());
            onChanged();
          } else {
            authorBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAuthor(eu.dnetlib.data.proto.FieldTypeProtos.Author value) {
          if (authorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAuthorIsMutable();
            author_.add(value);
            onChanged();
          } else {
            authorBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addAuthor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Author value) {
          if (authorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAuthorIsMutable();
            author_.add(index, value);
            onChanged();
          } else {
            authorBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addAuthor(
            eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder builderForValue) {
          if (authorBuilder_ == null) {
            ensureAuthorIsMutable();
            author_.add(builderForValue.build());
            onChanged();
          } else {
            authorBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addAuthor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder builderForValue) {
          if (authorBuilder_ == null) {
            ensureAuthorIsMutable();
            author_.add(index, builderForValue.build());
            onChanged();
          } else {
            authorBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllAuthor(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.Author> values) {
          if (authorBuilder_ == null) {
            ensureAuthorIsMutable();
            super.addAll(values, author_);
            onChanged();
          } else {
            authorBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearAuthor() {
          if (authorBuilder_ == null) {
            author_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            authorBuilder_.clear();
          }
          return this;
        }
        public Builder removeAuthor(int index) {
          if (authorBuilder_ == null) {
            ensureAuthorIsMutable();
            author_.remove(index);
            onChanged();
          } else {
            authorBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder getAuthorBuilder(
            int index) {
          return getAuthorFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder getAuthorOrBuilder(
            int index) {
          if (authorBuilder_ == null) {
            return author_.get(index);  } else {
            return authorBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder> 
             getAuthorOrBuilderList() {
          if (authorBuilder_ != null) {
            return authorBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(author_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder addAuthorBuilder() {
          return getAuthorFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.Author.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder addAuthorBuilder(
            int index) {
          return getAuthorFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.Author.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder> 
             getAuthorBuilderList() {
          return getAuthorFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Author, eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder, eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder> 
            getAuthorFieldBuilder() {
          if (authorBuilder_ == null) {
            authorBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Author, eu.dnetlib.data.proto.FieldTypeProtos.Author.Builder, eu.dnetlib.data.proto.FieldTypeProtos.AuthorOrBuilder>(
                    author_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            author_ = null;
          }
          return authorBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier resulttype = 8;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier resulttype_ = 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> resulttypeBuilder_;
        public boolean hasResulttype() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResulttype() {
          if (resulttypeBuilder_ == null) {
            return resulttype_;
          } else {
            return resulttypeBuilder_.getMessage();
          }
        }
        public Builder setResulttype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (resulttypeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            resulttype_ = value;
            onChanged();
          } else {
            resulttypeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder setResulttype(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (resulttypeBuilder_ == null) {
            resulttype_ = builderForValue.build();
            onChanged();
          } else {
            resulttypeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder mergeResulttype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (resulttypeBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                resulttype_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              resulttype_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(resulttype_).mergeFrom(value).buildPartial();
            } else {
              resulttype_ = value;
            }
            onChanged();
          } else {
            resulttypeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder clearResulttype() {
          if (resulttypeBuilder_ == null) {
            resulttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            resulttypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getResulttypeBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getResulttypeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResulttypeOrBuilder() {
          if (resulttypeBuilder_ != null) {
            return resulttypeBuilder_.getMessageOrBuilder();
          } else {
            return resulttype_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getResulttypeFieldBuilder() {
          if (resulttypeBuilder_ == null) {
            resulttypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    resulttype_,
                    getParentForChildren(),
                    isClean());
            resulttype_ = null;
          }
          return resulttypeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier language = 12;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier language_ = 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> languageBuilder_;
        public boolean hasLanguage() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getLanguage() {
          if (languageBuilder_ == null) {
            return language_;
          } else {
            return languageBuilder_.getMessage();
          }
        }
        public Builder setLanguage(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (languageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            language_ = value;
            onChanged();
          } else {
            languageBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setLanguage(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (languageBuilder_ == null) {
            language_ = builderForValue.build();
            onChanged();
          } else {
            languageBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeLanguage(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (languageBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                language_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              language_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(language_).mergeFrom(value).buildPartial();
            } else {
              language_ = value;
            }
            onChanged();
          } else {
            languageBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearLanguage() {
          if (languageBuilder_ == null) {
            language_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            languageBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getLanguageBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getLanguageFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getLanguageOrBuilder() {
          if (languageBuilder_ != null) {
            return languageBuilder_.getMessageOrBuilder();
          } else {
            return language_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getLanguageFieldBuilder() {
          if (languageBuilder_ == null) {
            languageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    language_,
                    getParentForChildren(),
                    isClean());
            language_ = null;
          }
          return languageBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.Qualifier country = 33;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> country_ =
          java.util.Collections.emptyList();
        private void ensureCountryIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            country_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier>(country_);
            bitField0_ |= 0x00000008;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> countryBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> getCountryList() {
          if (countryBuilder_ == null) {
            return java.util.Collections.unmodifiableList(country_);
          } else {
            return countryBuilder_.getMessageList();
          }
        }
        public int getCountryCount() {
          if (countryBuilder_ == null) {
            return country_.size();
          } else {
            return countryBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getCountry(int index) {
          if (countryBuilder_ == null) {
            return country_.get(index);
          } else {
            return countryBuilder_.getMessage(index);
          }
        }
        public Builder setCountry(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (countryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCountryIsMutable();
            country_.set(index, value);
            onChanged();
          } else {
            countryBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setCountry(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (countryBuilder_ == null) {
            ensureCountryIsMutable();
            country_.set(index, builderForValue.build());
            onChanged();
          } else {
            countryBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addCountry(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (countryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCountryIsMutable();
            country_.add(value);
            onChanged();
          } else {
            countryBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addCountry(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (countryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCountryIsMutable();
            country_.add(index, value);
            onChanged();
          } else {
            countryBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addCountry(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (countryBuilder_ == null) {
            ensureCountryIsMutable();
            country_.add(builderForValue.build());
            onChanged();
          } else {
            countryBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addCountry(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (countryBuilder_ == null) {
            ensureCountryIsMutable();
            country_.add(index, builderForValue.build());
            onChanged();
          } else {
            countryBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllCountry(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.Qualifier> values) {
          if (countryBuilder_ == null) {
            ensureCountryIsMutable();
            super.addAll(values, country_);
            onChanged();
          } else {
            countryBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearCountry() {
          if (countryBuilder_ == null) {
            country_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            countryBuilder_.clear();
          }
          return this;
        }
        public Builder removeCountry(int index) {
          if (countryBuilder_ == null) {
            ensureCountryIsMutable();
            country_.remove(index);
            onChanged();
          } else {
            countryBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getCountryBuilder(
            int index) {
          return getCountryFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getCountryOrBuilder(
            int index) {
          if (countryBuilder_ == null) {
            return country_.get(index);  } else {
            return countryBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
             getCountryOrBuilderList() {
          if (countryBuilder_ != null) {
            return countryBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(country_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder addCountryBuilder() {
          return getCountryFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder addCountryBuilder(
            int index) {
          return getCountryFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder> 
             getCountryBuilderList() {
          return getCountryFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getCountryFieldBuilder() {
          if (countryBuilder_ == null) {
            countryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    country_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            country_ = null;
          }
          return countryBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StructuredProperty subject = 1;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> subject_ =
          java.util.Collections.emptyList();
        private void ensureSubjectIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            subject_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty>(subject_);
            bitField0_ |= 0x00000010;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> subjectBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getSubjectList() {
          if (subjectBuilder_ == null) {
            return java.util.Collections.unmodifiableList(subject_);
          } else {
            return subjectBuilder_.getMessageList();
          }
        }
        public int getSubjectCount() {
          if (subjectBuilder_ == null) {
            return subject_.size();
          } else {
            return subjectBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubject(int index) {
          if (subjectBuilder_ == null) {
            return subject_.get(index);
          } else {
            return subjectBuilder_.getMessage(index);
          }
        }
        public Builder setSubject(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectIsMutable();
            subject_.set(index, value);
            onChanged();
          } else {
            subjectBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setSubject(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectBuilder_ == null) {
            ensureSubjectIsMutable();
            subject_.set(index, builderForValue.build());
            onChanged();
          } else {
            subjectBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addSubject(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectIsMutable();
            subject_.add(value);
            onChanged();
          } else {
            subjectBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addSubject(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectIsMutable();
            subject_.add(index, value);
            onChanged();
          } else {
            subjectBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addSubject(
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectBuilder_ == null) {
            ensureSubjectIsMutable();
            subject_.add(builderForValue.build());
            onChanged();
          } else {
            subjectBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addSubject(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectBuilder_ == null) {
            ensureSubjectIsMutable();
            subject_.add(index, builderForValue.build());
            onChanged();
          } else {
            subjectBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllSubject(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> values) {
          if (subjectBuilder_ == null) {
            ensureSubjectIsMutable();
            super.addAll(values, subject_);
            onChanged();
          } else {
            subjectBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearSubject() {
          if (subjectBuilder_ == null) {
            subject_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            subjectBuilder_.clear();
          }
          return this;
        }
        public Builder removeSubject(int index) {
          if (subjectBuilder_ == null) {
            ensureSubjectIsMutable();
            subject_.remove(index);
            onChanged();
          } else {
            subjectBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder getSubjectBuilder(
            int index) {
          return getSubjectFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectOrBuilder(
            int index) {
          if (subjectBuilder_ == null) {
            return subject_.get(index);  } else {
            return subjectBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
             getSubjectOrBuilderList() {
          if (subjectBuilder_ != null) {
            return subjectBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(subject_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addSubjectBuilder() {
          return getSubjectFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addSubjectBuilder(
            int index) {
          return getSubjectFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder> 
             getSubjectBuilderList() {
          return getSubjectFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
            getSubjectFieldBuilder() {
          if (subjectBuilder_ == null) {
            subjectBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder>(
                    subject_,
                    ((bitField0_ & 0x00000010) == 0x00000010),
                    getParentForChildren(),
                    isClean());
            subject_ = null;
          }
          return subjectBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StructuredProperty title = 2;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> title_ =
          java.util.Collections.emptyList();
        private void ensureTitleIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            title_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty>(title_);
            bitField0_ |= 0x00000020;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> titleBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getTitleList() {
          if (titleBuilder_ == null) {
            return java.util.Collections.unmodifiableList(title_);
          } else {
            return titleBuilder_.getMessageList();
          }
        }
        public int getTitleCount() {
          if (titleBuilder_ == null) {
            return title_.size();
          } else {
            return titleBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getTitle(int index) {
          if (titleBuilder_ == null) {
            return title_.get(index);
          } else {
            return titleBuilder_.getMessage(index);
          }
        }
        public Builder setTitle(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (titleBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTitleIsMutable();
            title_.set(index, value);
            onChanged();
          } else {
            titleBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setTitle(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (titleBuilder_ == null) {
            ensureTitleIsMutable();
            title_.set(index, builderForValue.build());
            onChanged();
          } else {
            titleBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addTitle(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (titleBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTitleIsMutable();
            title_.add(value);
            onChanged();
          } else {
            titleBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addTitle(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (titleBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTitleIsMutable();
            title_.add(index, value);
            onChanged();
          } else {
            titleBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addTitle(
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (titleBuilder_ == null) {
            ensureTitleIsMutable();
            title_.add(builderForValue.build());
            onChanged();
          } else {
            titleBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addTitle(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (titleBuilder_ == null) {
            ensureTitleIsMutable();
            title_.add(index, builderForValue.build());
            onChanged();
          } else {
            titleBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllTitle(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> values) {
          if (titleBuilder_ == null) {
            ensureTitleIsMutable();
            super.addAll(values, title_);
            onChanged();
          } else {
            titleBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearTitle() {
          if (titleBuilder_ == null) {
            title_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            titleBuilder_.clear();
          }
          return this;
        }
        public Builder removeTitle(int index) {
          if (titleBuilder_ == null) {
            ensureTitleIsMutable();
            title_.remove(index);
            onChanged();
          } else {
            titleBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder getTitleBuilder(
            int index) {
          return getTitleFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getTitleOrBuilder(
            int index) {
          if (titleBuilder_ == null) {
            return title_.get(index);  } else {
            return titleBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
             getTitleOrBuilderList() {
          if (titleBuilder_ != null) {
            return titleBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(title_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addTitleBuilder() {
          return getTitleFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addTitleBuilder(
            int index) {
          return getTitleFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder> 
             getTitleBuilderList() {
          return getTitleFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
            getTitleFieldBuilder() {
          if (titleBuilder_ == null) {
            titleBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder>(
                    title_,
                    ((bitField0_ & 0x00000020) == 0x00000020),
                    getParentForChildren(),
                    isClean());
            title_ = null;
          }
          return titleBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StructuredProperty relevantdate = 3;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> relevantdate_ =
          java.util.Collections.emptyList();
        private void ensureRelevantdateIsMutable() {
          if (!((bitField0_ & 0x00000040) == 0x00000040)) {
            relevantdate_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty>(relevantdate_);
            bitField0_ |= 0x00000040;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> relevantdateBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getRelevantdateList() {
          if (relevantdateBuilder_ == null) {
            return java.util.Collections.unmodifiableList(relevantdate_);
          } else {
            return relevantdateBuilder_.getMessageList();
          }
        }
        public int getRelevantdateCount() {
          if (relevantdateBuilder_ == null) {
            return relevantdate_.size();
          } else {
            return relevantdateBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getRelevantdate(int index) {
          if (relevantdateBuilder_ == null) {
            return relevantdate_.get(index);
          } else {
            return relevantdateBuilder_.getMessage(index);
          }
        }
        public Builder setRelevantdate(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (relevantdateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelevantdateIsMutable();
            relevantdate_.set(index, value);
            onChanged();
          } else {
            relevantdateBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setRelevantdate(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (relevantdateBuilder_ == null) {
            ensureRelevantdateIsMutable();
            relevantdate_.set(index, builderForValue.build());
            onChanged();
          } else {
            relevantdateBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addRelevantdate(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (relevantdateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelevantdateIsMutable();
            relevantdate_.add(value);
            onChanged();
          } else {
            relevantdateBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addRelevantdate(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (relevantdateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelevantdateIsMutable();
            relevantdate_.add(index, value);
            onChanged();
          } else {
            relevantdateBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addRelevantdate(
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (relevantdateBuilder_ == null) {
            ensureRelevantdateIsMutable();
            relevantdate_.add(builderForValue.build());
            onChanged();
          } else {
            relevantdateBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addRelevantdate(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (relevantdateBuilder_ == null) {
            ensureRelevantdateIsMutable();
            relevantdate_.add(index, builderForValue.build());
            onChanged();
          } else {
            relevantdateBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllRelevantdate(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> values) {
          if (relevantdateBuilder_ == null) {
            ensureRelevantdateIsMutable();
            super.addAll(values, relevantdate_);
            onChanged();
          } else {
            relevantdateBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearRelevantdate() {
          if (relevantdateBuilder_ == null) {
            relevantdate_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            relevantdateBuilder_.clear();
          }
          return this;
        }
        public Builder removeRelevantdate(int index) {
          if (relevantdateBuilder_ == null) {
            ensureRelevantdateIsMutable();
            relevantdate_.remove(index);
            onChanged();
          } else {
            relevantdateBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder getRelevantdateBuilder(
            int index) {
          return getRelevantdateFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getRelevantdateOrBuilder(
            int index) {
          if (relevantdateBuilder_ == null) {
            return relevantdate_.get(index);  } else {
            return relevantdateBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
             getRelevantdateOrBuilderList() {
          if (relevantdateBuilder_ != null) {
            return relevantdateBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(relevantdate_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addRelevantdateBuilder() {
          return getRelevantdateFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addRelevantdateBuilder(
            int index) {
          return getRelevantdateFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder> 
             getRelevantdateBuilderList() {
          return getRelevantdateFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
            getRelevantdateFieldBuilder() {
          if (relevantdateBuilder_ == null) {
            relevantdateBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder>(
                    relevantdate_,
                    ((bitField0_ & 0x00000040) == 0x00000040),
                    getParentForChildren(),
                    isClean());
            relevantdate_ = null;
          }
          return relevantdateBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField description = 25;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> description_ =
          java.util.Collections.emptyList();
        private void ensureDescriptionIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            description_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(description_);
            bitField0_ |= 0x00000080;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> descriptionBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getDescriptionList() {
          if (descriptionBuilder_ == null) {
            return java.util.Collections.unmodifiableList(description_);
          } else {
            return descriptionBuilder_.getMessageList();
          }
        }
        public int getDescriptionCount() {
          if (descriptionBuilder_ == null) {
            return description_.size();
          } else {
            return descriptionBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDescription(int index) {
          if (descriptionBuilder_ == null) {
            return description_.get(index);
          } else {
            return descriptionBuilder_.getMessage(index);
          }
        }
        public Builder setDescription(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (descriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDescriptionIsMutable();
            description_.set(index, value);
            onChanged();
          } else {
            descriptionBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setDescription(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (descriptionBuilder_ == null) {
            ensureDescriptionIsMutable();
            description_.set(index, builderForValue.build());
            onChanged();
          } else {
            descriptionBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addDescription(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (descriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDescriptionIsMutable();
            description_.add(value);
            onChanged();
          } else {
            descriptionBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addDescription(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (descriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDescriptionIsMutable();
            description_.add(index, value);
            onChanged();
          } else {
            descriptionBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addDescription(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (descriptionBuilder_ == null) {
            ensureDescriptionIsMutable();
            description_.add(builderForValue.build());
            onChanged();
          } else {
            descriptionBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addDescription(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (descriptionBuilder_ == null) {
            ensureDescriptionIsMutable();
            description_.add(index, builderForValue.build());
            onChanged();
          } else {
            descriptionBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllDescription(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (descriptionBuilder_ == null) {
            ensureDescriptionIsMutable();
            super.addAll(values, description_);
            onChanged();
          } else {
            descriptionBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearDescription() {
          if (descriptionBuilder_ == null) {
            description_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
          } else {
            descriptionBuilder_.clear();
          }
          return this;
        }
        public Builder removeDescription(int index) {
          if (descriptionBuilder_ == null) {
            ensureDescriptionIsMutable();
            description_.remove(index);
            onChanged();
          } else {
            descriptionBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDescriptionBuilder(
            int index) {
          return getDescriptionFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDescriptionOrBuilder(
            int index) {
          if (descriptionBuilder_ == null) {
            return description_.get(index);  } else {
            return descriptionBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getDescriptionOrBuilderList() {
          if (descriptionBuilder_ != null) {
            return descriptionBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(description_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addDescriptionBuilder() {
          return getDescriptionFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addDescriptionBuilder(
            int index) {
          return getDescriptionFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getDescriptionBuilderList() {
          return getDescriptionFieldBuilder().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> 
            getDescriptionFieldBuilder() {
          if (descriptionBuilder_ == null) {
            descriptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    description_,
                    ((bitField0_ & 0x00000080) == 0x00000080),
                    getParentForChildren(),
                    isClean());
            description_ = null;
          }
          return descriptionBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 4;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> dateofacceptanceBuilder_;
        public boolean hasDateofacceptance() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance() {
          if (dateofacceptanceBuilder_ == null) {
            return dateofacceptance_;
          } else {
            return dateofacceptanceBuilder_.getMessage();
          }
        }
        public Builder setDateofacceptance(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (dateofacceptanceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            dateofacceptance_ = value;
            onChanged();
          } else {
            dateofacceptanceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder setDateofacceptance(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = builderForValue.build();
            onChanged();
          } else {
            dateofacceptanceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder mergeDateofacceptance(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (dateofacceptanceBuilder_ == null) {
            if (((bitField0_ & 0x00000100) == 0x00000100) &&
                dateofacceptance_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              dateofacceptance_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(dateofacceptance_).mergeFrom(value).buildPartial();
            } else {
              dateofacceptance_ = value;
            }
            onChanged();
          } else {
            dateofacceptanceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder clearDateofacceptance() {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            dateofacceptanceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDateofacceptanceBuilder() {
          bitField0_ |= 0x00000100;
          onChanged();
          return getDateofacceptanceFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder() {
          if (dateofacceptanceBuilder_ != null) {
            return dateofacceptanceBuilder_.getMessageOrBuilder();
          } else {
            return dateofacceptance_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getDateofacceptanceFieldBuilder() {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptanceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    dateofacceptance_,
                    getParentForChildren(),
                    isClean());
            dateofacceptance_ = null;
          }
          return dateofacceptanceBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField publisher = 5;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField publisher_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> publisherBuilder_;
        public boolean hasPublisher() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getPublisher() {
          if (publisherBuilder_ == null) {
            return publisher_;
          } else {
            return publisherBuilder_.getMessage();
          }
        }
        public Builder setPublisher(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (publisherBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            publisher_ = value;
            onChanged();
          } else {
            publisherBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder setPublisher(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (publisherBuilder_ == null) {
            publisher_ = builderForValue.build();
            onChanged();
          } else {
            publisherBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder mergePublisher(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (publisherBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200) &&
                publisher_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              publisher_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(publisher_).mergeFrom(value).buildPartial();
            } else {
              publisher_ = value;
            }
            onChanged();
          } else {
            publisherBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder clearPublisher() {
          if (publisherBuilder_ == null) {
            publisher_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            publisherBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getPublisherBuilder() {
          bitField0_ |= 0x00000200;
          onChanged();
          return getPublisherFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getPublisherOrBuilder() {
          if (publisherBuilder_ != null) {
            return publisherBuilder_.getMessageOrBuilder();
          } else {
            return publisher_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getPublisherFieldBuilder() {
          if (publisherBuilder_ == null) {
            publisherBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    publisher_,
                    getParentForChildren(),
                    isClean());
            publisher_ = null;
          }
          return publisherBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField embargoenddate = 6;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField embargoenddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> embargoenddateBuilder_;
        public boolean hasEmbargoenddate() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEmbargoenddate() {
          if (embargoenddateBuilder_ == null) {
            return embargoenddate_;
          } else {
            return embargoenddateBuilder_.getMessage();
          }
        }
        public Builder setEmbargoenddate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (embargoenddateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            embargoenddate_ = value;
            onChanged();
          } else {
            embargoenddateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder setEmbargoenddate(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (embargoenddateBuilder_ == null) {
            embargoenddate_ = builderForValue.build();
            onChanged();
          } else {
            embargoenddateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder mergeEmbargoenddate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (embargoenddateBuilder_ == null) {
            if (((bitField0_ & 0x00000400) == 0x00000400) &&
                embargoenddate_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              embargoenddate_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(embargoenddate_).mergeFrom(value).buildPartial();
            } else {
              embargoenddate_ = value;
            }
            onChanged();
          } else {
            embargoenddateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder clearEmbargoenddate() {
          if (embargoenddateBuilder_ == null) {
            embargoenddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            embargoenddateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getEmbargoenddateBuilder() {
          bitField0_ |= 0x00000400;
          onChanged();
          return getEmbargoenddateFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEmbargoenddateOrBuilder() {
          if (embargoenddateBuilder_ != null) {
            return embargoenddateBuilder_.getMessageOrBuilder();
          } else {
            return embargoenddate_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getEmbargoenddateFieldBuilder() {
          if (embargoenddateBuilder_ == null) {
            embargoenddateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    embargoenddate_,
                    getParentForChildren(),
                    isClean());
            embargoenddate_ = null;
          }
          return embargoenddateBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField source = 27;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> source_ =
          java.util.Collections.emptyList();
        private void ensureSourceIsMutable() {
          if (!((bitField0_ & 0x00000800) == 0x00000800)) {
            source_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(source_);
            bitField0_ |= 0x00000800;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> sourceBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getSourceList() {
          if (sourceBuilder_ == null) {
            return java.util.Collections.unmodifiableList(source_);
          } else {
            return sourceBuilder_.getMessageList();
          }
        }
        public int getSourceCount() {
          if (sourceBuilder_ == null) {
            return source_.size();
          } else {
            return sourceBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getSource(int index) {
          if (sourceBuilder_ == null) {
            return source_.get(index);
          } else {
            return sourceBuilder_.getMessage(index);
          }
        }
        public Builder setSource(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (sourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSourceIsMutable();
            source_.set(index, value);
            onChanged();
          } else {
            sourceBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setSource(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (sourceBuilder_ == null) {
            ensureSourceIsMutable();
            source_.set(index, builderForValue.build());
            onChanged();
          } else {
            sourceBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addSource(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (sourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSourceIsMutable();
            source_.add(value);
            onChanged();
          } else {
            sourceBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addSource(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (sourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSourceIsMutable();
            source_.add(index, value);
            onChanged();
          } else {
            sourceBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addSource(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (sourceBuilder_ == null) {
            ensureSourceIsMutable();
            source_.add(builderForValue.build());
            onChanged();
          } else {
            sourceBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addSource(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (sourceBuilder_ == null) {
            ensureSourceIsMutable();
            source_.add(index, builderForValue.build());
            onChanged();
          } else {
            sourceBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllSource(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (sourceBuilder_ == null) {
            ensureSourceIsMutable();
            super.addAll(values, source_);
            onChanged();
          } else {
            sourceBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearSource() {
          if (sourceBuilder_ == null) {
            source_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000800);
            onChanged();
          } else {
            sourceBuilder_.clear();
          }
          return this;
        }
        public Builder removeSource(int index) {
          if (sourceBuilder_ == null) {
            ensureSourceIsMutable();
            source_.remove(index);
            onChanged();
          } else {
            sourceBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getSourceBuilder(
            int index) {
          return getSourceFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSourceOrBuilder(
            int index) {
          if (sourceBuilder_ == null) {
            return source_.get(index);  } else {
            return sourceBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getSourceOrBuilderList() {
          if (sourceBuilder_ != null) {
            return sourceBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(source_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addSourceBuilder() {
          return getSourceFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addSourceBuilder(
            int index) {
          return getSourceFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getSourceBuilderList() {
          return getSourceFieldBuilder().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> 
            getSourceFieldBuilder() {
          if (sourceBuilder_ == null) {
            sourceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    source_,
                    ((bitField0_ & 0x00000800) == 0x00000800),
                    getParentForChildren(),
                    isClean());
            source_ = null;
          }
          return sourceBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField fulltext = 29;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> fulltext_ =
          java.util.Collections.emptyList();
        private void ensureFulltextIsMutable() {
          if (!((bitField0_ & 0x00001000) == 0x00001000)) {
            fulltext_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(fulltext_);
            bitField0_ |= 0x00001000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> fulltextBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFulltextList() {
          if (fulltextBuilder_ == null) {
            return java.util.Collections.unmodifiableList(fulltext_);
          } else {
            return fulltextBuilder_.getMessageList();
          }
        }
        public int getFulltextCount() {
          if (fulltextBuilder_ == null) {
            return fulltext_.size();
          } else {
            return fulltextBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFulltext(int index) {
          if (fulltextBuilder_ == null) {
            return fulltext_.get(index);
          } else {
            return fulltextBuilder_.getMessage(index);
          }
        }
        public Builder setFulltext(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fulltextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFulltextIsMutable();
            fulltext_.set(index, value);
            onChanged();
          } else {
            fulltextBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setFulltext(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fulltextBuilder_ == null) {
            ensureFulltextIsMutable();
            fulltext_.set(index, builderForValue.build());
            onChanged();
          } else {
            fulltextBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addFulltext(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fulltextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFulltextIsMutable();
            fulltext_.add(value);
            onChanged();
          } else {
            fulltextBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addFulltext(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fulltextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFulltextIsMutable();
            fulltext_.add(index, value);
            onChanged();
          } else {
            fulltextBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addFulltext(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fulltextBuilder_ == null) {
            ensureFulltextIsMutable();
            fulltext_.add(builderForValue.build());
            onChanged();
          } else {
            fulltextBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addFulltext(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fulltextBuilder_ == null) {
            ensureFulltextIsMutable();
            fulltext_.add(index, builderForValue.build());
            onChanged();
          } else {
            fulltextBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllFulltext(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (fulltextBuilder_ == null) {
            ensureFulltextIsMutable();
            super.addAll(values, fulltext_);
            onChanged();
          } else {
            fulltextBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearFulltext() {
          if (fulltextBuilder_ == null) {
            fulltext_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
            onChanged();
          } else {
            fulltextBuilder_.clear();
          }
          return this;
        }
        public Builder removeFulltext(int index) {
          if (fulltextBuilder_ == null) {
            ensureFulltextIsMutable();
            fulltext_.remove(index);
            onChanged();
          } else {
            fulltextBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getFulltextBuilder(
            int index) {
          return getFulltextFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFulltextOrBuilder(
            int index) {
          if (fulltextBuilder_ == null) {
            return fulltext_.get(index);  } else {
            return fulltextBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getFulltextOrBuilderList() {
          if (fulltextBuilder_ != null) {
            return fulltextBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(fulltext_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFulltextBuilder() {
          return getFulltextFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFulltextBuilder(
            int index) {
          return getFulltextFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getFulltextBuilderList() {
          return getFulltextFieldBuilder().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> 
            getFulltextFieldBuilder() {
          if (fulltextBuilder_ == null) {
            fulltextBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    fulltext_,
                    ((bitField0_ & 0x00001000) == 0x00001000),
                    getParentForChildren(),
                    isClean());
            fulltext_ = null;
          }
          return fulltextBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField format = 21;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> format_ =
          java.util.Collections.emptyList();
        private void ensureFormatIsMutable() {
          if (!((bitField0_ & 0x00002000) == 0x00002000)) {
            format_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(format_);
            bitField0_ |= 0x00002000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> formatBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFormatList() {
          if (formatBuilder_ == null) {
            return java.util.Collections.unmodifiableList(format_);
          } else {
            return formatBuilder_.getMessageList();
          }
        }
        public int getFormatCount() {
          if (formatBuilder_ == null) {
            return format_.size();
          } else {
            return formatBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFormat(int index) {
          if (formatBuilder_ == null) {
            return format_.get(index);
          } else {
            return formatBuilder_.getMessage(index);
          }
        }
        public Builder setFormat(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (formatBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFormatIsMutable();
            format_.set(index, value);
            onChanged();
          } else {
            formatBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setFormat(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (formatBuilder_ == null) {
            ensureFormatIsMutable();
            format_.set(index, builderForValue.build());
            onChanged();
          } else {
            formatBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addFormat(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (formatBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFormatIsMutable();
            format_.add(value);
            onChanged();
          } else {
            formatBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addFormat(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (formatBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFormatIsMutable();
            format_.add(index, value);
            onChanged();
          } else {
            formatBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addFormat(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (formatBuilder_ == null) {
            ensureFormatIsMutable();
            format_.add(builderForValue.build());
            onChanged();
          } else {
            formatBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addFormat(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (formatBuilder_ == null) {
            ensureFormatIsMutable();
            format_.add(index, builderForValue.build());
            onChanged();
          } else {
            formatBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllFormat(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (formatBuilder_ == null) {
            ensureFormatIsMutable();
            super.addAll(values, format_);
            onChanged();
          } else {
            formatBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearFormat() {
          if (formatBuilder_ == null) {
            format_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
            onChanged();
          } else {
            formatBuilder_.clear();
          }
          return this;
        }
        public Builder removeFormat(int index) {
          if (formatBuilder_ == null) {
            ensureFormatIsMutable();
            format_.remove(index);
            onChanged();
          } else {
            formatBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getFormatBuilder(
            int index) {
          return getFormatFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFormatOrBuilder(
            int index) {
          if (formatBuilder_ == null) {
            return format_.get(index);  } else {
            return formatBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getFormatOrBuilderList() {
          if (formatBuilder_ != null) {
            return formatBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(format_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFormatBuilder() {
          return getFormatFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFormatBuilder(
            int index) {
          return getFormatFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getFormatBuilderList() {
          return getFormatFieldBuilder().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> 
            getFormatFieldBuilder() {
          if (formatBuilder_ == null) {
            formatBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    format_,
                    ((bitField0_ & 0x00002000) == 0x00002000),
                    getParentForChildren(),
                    isClean());
            format_ = null;
          }
          return formatBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField contributor = 30;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contributor_ =
          java.util.Collections.emptyList();
        private void ensureContributorIsMutable() {
          if (!((bitField0_ & 0x00004000) == 0x00004000)) {
            contributor_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(contributor_);
            bitField0_ |= 0x00004000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> contributorBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContributorList() {
          if (contributorBuilder_ == null) {
            return java.util.Collections.unmodifiableList(contributor_);
          } else {
            return contributorBuilder_.getMessageList();
          }
        }
        public int getContributorCount() {
          if (contributorBuilder_ == null) {
            return contributor_.size();
          } else {
            return contributorBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContributor(int index) {
          if (contributorBuilder_ == null) {
            return contributor_.get(index);
          } else {
            return contributorBuilder_.getMessage(index);
          }
        }
        public Builder setContributor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contributorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContributorIsMutable();
            contributor_.set(index, value);
            onChanged();
          } else {
            contributorBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setContributor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contributorBuilder_ == null) {
            ensureContributorIsMutable();
            contributor_.set(index, builderForValue.build());
            onChanged();
          } else {
            contributorBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addContributor(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contributorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContributorIsMutable();
            contributor_.add(value);
            onChanged();
          } else {
            contributorBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addContributor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contributorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContributorIsMutable();
            contributor_.add(index, value);
            onChanged();
          } else {
            contributorBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addContributor(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contributorBuilder_ == null) {
            ensureContributorIsMutable();
            contributor_.add(builderForValue.build());
            onChanged();
          } else {
            contributorBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addContributor(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contributorBuilder_ == null) {
            ensureContributorIsMutable();
            contributor_.add(index, builderForValue.build());
            onChanged();
          } else {
            contributorBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllContributor(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (contributorBuilder_ == null) {
            ensureContributorIsMutable();
            super.addAll(values, contributor_);
            onChanged();
          } else {
            contributorBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearContributor() {
          if (contributorBuilder_ == null) {
            contributor_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
            onChanged();
          } else {
            contributorBuilder_.clear();
          }
          return this;
        }
        public Builder removeContributor(int index) {
          if (contributorBuilder_ == null) {
            ensureContributorIsMutable();
            contributor_.remove(index);
            onChanged();
          } else {
            contributorBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContributorBuilder(
            int index) {
          return getContributorFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContributorOrBuilder(
            int index) {
          if (contributorBuilder_ == null) {
            return contributor_.get(index);  } else {
            return contributorBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getContributorOrBuilderList() {
          if (contributorBuilder_ != null) {
            return contributorBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(contributor_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContributorBuilder() {
          return getContributorFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContributorBuilder(
            int index) {
          return getContributorFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getContributorBuilderList() {
          return getContributorFieldBuilder().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> 
            getContributorFieldBuilder() {
          if (contributorBuilder_ == null) {
            contributorBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contributor_,
                    ((bitField0_ & 0x00004000) == 0x00004000),
                    getParentForChildren(),
                    isClean());
            contributor_ = null;
          }
          return contributorBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier resourcetype = 19;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier resourcetype_ = 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> resourcetypeBuilder_;
        public boolean hasResourcetype() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getResourcetype() {
          if (resourcetypeBuilder_ == null) {
            return resourcetype_;
          } else {
            return resourcetypeBuilder_.getMessage();
          }
        }
        public Builder setResourcetype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (resourcetypeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            resourcetype_ = value;
            onChanged();
          } else {
            resourcetypeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder setResourcetype(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (resourcetypeBuilder_ == null) {
            resourcetype_ = builderForValue.build();
            onChanged();
          } else {
            resourcetypeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder mergeResourcetype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (resourcetypeBuilder_ == null) {
            if (((bitField0_ & 0x00008000) == 0x00008000) &&
                resourcetype_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              resourcetype_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(resourcetype_).mergeFrom(value).buildPartial();
            } else {
              resourcetype_ = value;
            }
            onChanged();
          } else {
            resourcetypeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder clearResourcetype() {
          if (resourcetypeBuilder_ == null) {
            resourcetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            resourcetypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00008000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getResourcetypeBuilder() {
          bitField0_ |= 0x00008000;
          onChanged();
          return getResourcetypeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getResourcetypeOrBuilder() {
          if (resourcetypeBuilder_ != null) {
            return resourcetypeBuilder_.getMessageOrBuilder();
          } else {
            return resourcetype_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getResourcetypeFieldBuilder() {
          if (resourcetypeBuilder_ == null) {
            resourcetypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    resourcetype_,
                    getParentForChildren(),
                    isClean());
            resourcetype_ = null;
          }
          return resourcetypeBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField coverage = 43;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> coverage_ =
          java.util.Collections.emptyList();
        private void ensureCoverageIsMutable() {
          if (!((bitField0_ & 0x00010000) == 0x00010000)) {
            coverage_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(coverage_);
            bitField0_ |= 0x00010000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> coverageBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getCoverageList() {
          if (coverageBuilder_ == null) {
            return java.util.Collections.unmodifiableList(coverage_);
          } else {
            return coverageBuilder_.getMessageList();
          }
        }
        public int getCoverageCount() {
          if (coverageBuilder_ == null) {
            return coverage_.size();
          } else {
            return coverageBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCoverage(int index) {
          if (coverageBuilder_ == null) {
            return coverage_.get(index);
          } else {
            return coverageBuilder_.getMessage(index);
          }
        }
        public Builder setCoverage(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (coverageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCoverageIsMutable();
            coverage_.set(index, value);
            onChanged();
          } else {
            coverageBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setCoverage(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (coverageBuilder_ == null) {
            ensureCoverageIsMutable();
            coverage_.set(index, builderForValue.build());
            onChanged();
          } else {
            coverageBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addCoverage(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (coverageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCoverageIsMutable();
            coverage_.add(value);
            onChanged();
          } else {
            coverageBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addCoverage(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (coverageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureCoverageIsMutable();
            coverage_.add(index, value);
            onChanged();
          } else {
            coverageBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addCoverage(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (coverageBuilder_ == null) {
            ensureCoverageIsMutable();
            coverage_.add(builderForValue.build());
            onChanged();
          } else {
            coverageBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addCoverage(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (coverageBuilder_ == null) {
            ensureCoverageIsMutable();
            coverage_.add(index, builderForValue.build());
            onChanged();
          } else {
            coverageBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllCoverage(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (coverageBuilder_ == null) {
            ensureCoverageIsMutable();
            super.addAll(values, coverage_);
            onChanged();
          } else {
            coverageBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearCoverage() {
          if (coverageBuilder_ == null) {
            coverage_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00010000);
            onChanged();
          } else {
            coverageBuilder_.clear();
          }
          return this;
        }
        public Builder removeCoverage(int index) {
          if (coverageBuilder_ == null) {
            ensureCoverageIsMutable();
            coverage_.remove(index);
            onChanged();
          } else {
            coverageBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getCoverageBuilder(
            int index) {
          return getCoverageFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCoverageOrBuilder(
            int index) {
          if (coverageBuilder_ == null) {
            return coverage_.get(index);  } else {
            return coverageBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getCoverageOrBuilderList() {
          if (coverageBuilder_ != null) {
            return coverageBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(coverage_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addCoverageBuilder() {
          return getCoverageFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addCoverageBuilder(
            int index) {
          return getCoverageFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getCoverageBuilderList() {
          return getCoverageFieldBuilder().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> 
            getCoverageFieldBuilder() {
          if (coverageBuilder_ == null) {
            coverageBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    coverage_,
                    ((bitField0_ & 0x00010000) == 0x00010000),
                    getParentForChildren(),
                    isClean());
            coverage_ = null;
          }
          return coverageBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.Result.Context context = 28;
        private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context> context_ =
          java.util.Collections.emptyList();
        private void ensureContextIsMutable() {
          if (!((bitField0_ & 0x00020000) == 0x00020000)) {
            context_ = new java.util.ArrayList<eu.dnetlib.data.proto.ResultProtos.Result.Context>(context_);
            bitField0_ |= 0x00020000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.Context, eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder> contextBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context> getContextList() {
          if (contextBuilder_ == null) {
            return java.util.Collections.unmodifiableList(context_);
          } else {
            return contextBuilder_.getMessageList();
          }
        }
        public int getContextCount() {
          if (contextBuilder_ == null) {
            return context_.size();
          } else {
            return contextBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Context getContext(int index) {
          if (contextBuilder_ == null) {
            return context_.get(index);
          } else {
            return contextBuilder_.getMessage(index);
          }
        }
        public Builder setContext(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.Context value) {
          if (contextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContextIsMutable();
            context_.set(index, value);
            onChanged();
          } else {
            contextBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setContext(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder builderForValue) {
          if (contextBuilder_ == null) {
            ensureContextIsMutable();
            context_.set(index, builderForValue.build());
            onChanged();
          } else {
            contextBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addContext(eu.dnetlib.data.proto.ResultProtos.Result.Context value) {
          if (contextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContextIsMutable();
            context_.add(value);
            onChanged();
          } else {
            contextBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addContext(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.Context value) {
          if (contextBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContextIsMutable();
            context_.add(index, value);
            onChanged();
          } else {
            contextBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addContext(
            eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder builderForValue) {
          if (contextBuilder_ == null) {
            ensureContextIsMutable();
            context_.add(builderForValue.build());
            onChanged();
          } else {
            contextBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addContext(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder builderForValue) {
          if (contextBuilder_ == null) {
            ensureContextIsMutable();
            context_.add(index, builderForValue.build());
            onChanged();
          } else {
            contextBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllContext(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.ResultProtos.Result.Context> values) {
          if (contextBuilder_ == null) {
            ensureContextIsMutable();
            super.addAll(values, context_);
            onChanged();
          } else {
            contextBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearContext() {
          if (contextBuilder_ == null) {
            context_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00020000);
            onChanged();
          } else {
            contextBuilder_.clear();
          }
          return this;
        }
        public Builder removeContext(int index) {
          if (contextBuilder_ == null) {
            ensureContextIsMutable();
            context_.remove(index);
            onChanged();
          } else {
            contextBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder getContextBuilder(
            int index) {
          return getContextFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder getContextOrBuilder(
            int index) {
          if (contextBuilder_ == null) {
            return context_.get(index);  } else {
            return contextBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder> 
             getContextOrBuilderList() {
          if (contextBuilder_ != null) {
            return contextBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(context_);
          }
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder addContextBuilder() {
          return getContextFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.ResultProtos.Result.Context.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder addContextBuilder(
            int index) {
          return getContextFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.ResultProtos.Result.Context.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder> 
             getContextBuilderList() {
          return getContextFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.Context, eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder> 
            getContextFieldBuilder() {
          if (contextBuilder_ == null) {
            contextBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.ResultProtos.Result.Context, eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ContextOrBuilder>(
                    context_,
                    ((bitField0_ & 0x00020000) == 0x00020000),
                    getParentForChildren(),
                    isClean());
            context_ = null;
          }
          return contextBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Result.Journal journal = 18;
        private eu.dnetlib.data.proto.ResultProtos.Result.Journal journal_ = eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.Journal, eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder, eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder> journalBuilder_;
        public boolean hasJournal() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Journal getJournal() {
          if (journalBuilder_ == null) {
            return journal_;
          } else {
            return journalBuilder_.getMessage();
          }
        }
        public Builder setJournal(eu.dnetlib.data.proto.ResultProtos.Result.Journal value) {
          if (journalBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            journal_ = value;
            onChanged();
          } else {
            journalBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder setJournal(
            eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder builderForValue) {
          if (journalBuilder_ == null) {
            journal_ = builderForValue.build();
            onChanged();
          } else {
            journalBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder mergeJournal(eu.dnetlib.data.proto.ResultProtos.Result.Journal value) {
          if (journalBuilder_ == null) {
            if (((bitField0_ & 0x00040000) == 0x00040000) &&
                journal_ != eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance()) {
              journal_ =
                eu.dnetlib.data.proto.ResultProtos.Result.Journal.newBuilder(journal_).mergeFrom(value).buildPartial();
            } else {
              journal_ = value;
            }
            onChanged();
          } else {
            journalBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder clearJournal() {
          if (journalBuilder_ == null) {
            journal_ = eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance();
            onChanged();
          } else {
            journalBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00040000);
          return this;
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder getJournalBuilder() {
          bitField0_ |= 0x00040000;
          onChanged();
          return getJournalFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder getJournalOrBuilder() {
          if (journalBuilder_ != null) {
            return journalBuilder_.getMessageOrBuilder();
          } else {
            return journal_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.Journal, eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder, eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder> 
            getJournalFieldBuilder() {
          if (journalBuilder_ == null) {
            journalBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.ResultProtos.Result.Journal, eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder, eu.dnetlib.data.proto.ResultProtos.Result.JournalOrBuilder>(
                    journal_,
                    getParentForChildren(),
                    isClean());
            journal_ = null;
          }
          return journalBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField storagedate = 9;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField storagedate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> storagedateBuilder_;
        public boolean hasStoragedate() {
          return ((bitField0_ & 0x00080000) == 0x00080000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getStoragedate() {
          if (storagedateBuilder_ == null) {
            return storagedate_;
          } else {
            return storagedateBuilder_.getMessage();
          }
        }
        public Builder setStoragedate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (storagedateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            storagedate_ = value;
            onChanged();
          } else {
            storagedateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder setStoragedate(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (storagedateBuilder_ == null) {
            storagedate_ = builderForValue.build();
            onChanged();
          } else {
            storagedateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder mergeStoragedate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (storagedateBuilder_ == null) {
            if (((bitField0_ & 0x00080000) == 0x00080000) &&
                storagedate_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              storagedate_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(storagedate_).mergeFrom(value).buildPartial();
            } else {
              storagedate_ = value;
            }
            onChanged();
          } else {
            storagedateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder clearStoragedate() {
          if (storagedateBuilder_ == null) {
            storagedate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            storagedateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00080000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getStoragedateBuilder() {
          bitField0_ |= 0x00080000;
          onChanged();
          return getStoragedateFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStoragedateOrBuilder() {
          if (storagedateBuilder_ != null) {
            return storagedateBuilder_.getMessageOrBuilder();
          } else {
            return storagedate_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getStoragedateFieldBuilder() {
          if (storagedateBuilder_ == null) {
            storagedateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    storagedate_,
                    getParentForChildren(),
                    isClean());
            storagedate_ = null;
          }
          return storagedateBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField device = 26;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField device_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> deviceBuilder_;
        public boolean hasDevice() {
          return ((bitField0_ & 0x00100000) == 0x00100000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDevice() {
          if (deviceBuilder_ == null) {
            return device_;
          } else {
            return deviceBuilder_.getMessage();
          }
        }
        public Builder setDevice(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (deviceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            device_ = value;
            onChanged();
          } else {
            deviceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder setDevice(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (deviceBuilder_ == null) {
            device_ = builderForValue.build();
            onChanged();
          } else {
            deviceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder mergeDevice(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (deviceBuilder_ == null) {
            if (((bitField0_ & 0x00100000) == 0x00100000) &&
                device_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              device_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(device_).mergeFrom(value).buildPartial();
            } else {
              device_ = value;
            }
            onChanged();
          } else {
            deviceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder clearDevice() {
          if (deviceBuilder_ == null) {
            device_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            deviceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00100000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDeviceBuilder() {
          bitField0_ |= 0x00100000;
          onChanged();
          return getDeviceFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDeviceOrBuilder() {
          if (deviceBuilder_ != null) {
            return deviceBuilder_.getMessageOrBuilder();
          } else {
            return device_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getDeviceFieldBuilder() {
          if (deviceBuilder_ == null) {
            deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    device_,
                    getParentForChildren(),
                    isClean());
            device_ = null;
          }
          return deviceBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField size = 20;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField size_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> sizeBuilder_;
        public boolean hasSize() {
          return ((bitField0_ & 0x00200000) == 0x00200000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getSize() {
          if (sizeBuilder_ == null) {
            return size_;
          } else {
            return sizeBuilder_.getMessage();
          }
        }
        public Builder setSize(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (sizeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            size_ = value;
            onChanged();
          } else {
            sizeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder setSize(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (sizeBuilder_ == null) {
            size_ = builderForValue.build();
            onChanged();
          } else {
            sizeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder mergeSize(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (sizeBuilder_ == null) {
            if (((bitField0_ & 0x00200000) == 0x00200000) &&
                size_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              size_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(size_).mergeFrom(value).buildPartial();
            } else {
              size_ = value;
            }
            onChanged();
          } else {
            sizeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder clearSize() {
          if (sizeBuilder_ == null) {
            size_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            sizeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00200000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getSizeBuilder() {
          bitField0_ |= 0x00200000;
          onChanged();
          return getSizeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getSizeOrBuilder() {
          if (sizeBuilder_ != null) {
            return sizeBuilder_.getMessageOrBuilder();
          } else {
            return size_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getSizeFieldBuilder() {
          if (sizeBuilder_ == null) {
            sizeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    size_,
                    getParentForChildren(),
                    isClean());
            size_ = null;
          }
          return sizeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField version = 22;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField version_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> versionBuilder_;
        public boolean hasVersion() {
          return ((bitField0_ & 0x00400000) == 0x00400000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getVersion() {
          if (versionBuilder_ == null) {
            return version_;
          } else {
            return versionBuilder_.getMessage();
          }
        }
        public Builder setVersion(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (versionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            version_ = value;
            onChanged();
          } else {
            versionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00400000;
          return this;
        }
        public Builder setVersion(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (versionBuilder_ == null) {
            version_ = builderForValue.build();
            onChanged();
          } else {
            versionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00400000;
          return this;
        }
        public Builder mergeVersion(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (versionBuilder_ == null) {
            if (((bitField0_ & 0x00400000) == 0x00400000) &&
                version_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              version_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(version_).mergeFrom(value).buildPartial();
            } else {
              version_ = value;
            }
            onChanged();
          } else {
            versionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00400000;
          return this;
        }
        public Builder clearVersion() {
          if (versionBuilder_ == null) {
            version_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            versionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00400000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getVersionBuilder() {
          bitField0_ |= 0x00400000;
          onChanged();
          return getVersionFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getVersionOrBuilder() {
          if (versionBuilder_ != null) {
            return versionBuilder_.getMessageOrBuilder();
          } else {
            return version_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getVersionFieldBuilder() {
          if (versionBuilder_ == null) {
            versionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    version_,
                    getParentForChildren(),
                    isClean());
            version_ = null;
          }
          return versionBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField lastmetadataupdate = 23;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField lastmetadataupdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> lastmetadataupdateBuilder_;
        public boolean hasLastmetadataupdate() {
          return ((bitField0_ & 0x00800000) == 0x00800000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getLastmetadataupdate() {
          if (lastmetadataupdateBuilder_ == null) {
            return lastmetadataupdate_;
          } else {
            return lastmetadataupdateBuilder_.getMessage();
          }
        }
        public Builder setLastmetadataupdate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (lastmetadataupdateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            lastmetadataupdate_ = value;
            onChanged();
          } else {
            lastmetadataupdateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00800000;
          return this;
        }
        public Builder setLastmetadataupdate(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (lastmetadataupdateBuilder_ == null) {
            lastmetadataupdate_ = builderForValue.build();
            onChanged();
          } else {
            lastmetadataupdateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00800000;
          return this;
        }
        public Builder mergeLastmetadataupdate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (lastmetadataupdateBuilder_ == null) {
            if (((bitField0_ & 0x00800000) == 0x00800000) &&
                lastmetadataupdate_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              lastmetadataupdate_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(lastmetadataupdate_).mergeFrom(value).buildPartial();
            } else {
              lastmetadataupdate_ = value;
            }
            onChanged();
          } else {
            lastmetadataupdateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00800000;
          return this;
        }
        public Builder clearLastmetadataupdate() {
          if (lastmetadataupdateBuilder_ == null) {
            lastmetadataupdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            lastmetadataupdateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00800000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getLastmetadataupdateBuilder() {
          bitField0_ |= 0x00800000;
          onChanged();
          return getLastmetadataupdateFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLastmetadataupdateOrBuilder() {
          if (lastmetadataupdateBuilder_ != null) {
            return lastmetadataupdateBuilder_.getMessageOrBuilder();
          } else {
            return lastmetadataupdate_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getLastmetadataupdateFieldBuilder() {
          if (lastmetadataupdateBuilder_ == null) {
            lastmetadataupdateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    lastmetadataupdate_,
                    getParentForChildren(),
                    isClean());
            lastmetadataupdate_ = null;
          }
          return lastmetadataupdateBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField metadataversionnumber = 24;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField metadataversionnumber_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> metadataversionnumberBuilder_;
        public boolean hasMetadataversionnumber() {
          return ((bitField0_ & 0x01000000) == 0x01000000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getMetadataversionnumber() {
          if (metadataversionnumberBuilder_ == null) {
            return metadataversionnumber_;
          } else {
            return metadataversionnumberBuilder_.getMessage();
          }
        }
        public Builder setMetadataversionnumber(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (metadataversionnumberBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            metadataversionnumber_ = value;
            onChanged();
          } else {
            metadataversionnumberBuilder_.setMessage(value);
          }
          bitField0_ |= 0x01000000;
          return this;
        }
        public Builder setMetadataversionnumber(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (metadataversionnumberBuilder_ == null) {
            metadataversionnumber_ = builderForValue.build();
            onChanged();
          } else {
            metadataversionnumberBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x01000000;
          return this;
        }
        public Builder mergeMetadataversionnumber(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (metadataversionnumberBuilder_ == null) {
            if (((bitField0_ & 0x01000000) == 0x01000000) &&
                metadataversionnumber_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              metadataversionnumber_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(metadataversionnumber_).mergeFrom(value).buildPartial();
            } else {
              metadataversionnumber_ = value;
            }
            onChanged();
          } else {
            metadataversionnumberBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x01000000;
          return this;
        }
        public Builder clearMetadataversionnumber() {
          if (metadataversionnumberBuilder_ == null) {
            metadataversionnumber_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            metadataversionnumberBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x01000000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getMetadataversionnumberBuilder() {
          bitField0_ |= 0x01000000;
          onChanged();
          return getMetadataversionnumberFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getMetadataversionnumberOrBuilder() {
          if (metadataversionnumberBuilder_ != null) {
            return metadataversionnumberBuilder_.getMessageOrBuilder();
          } else {
            return metadataversionnumber_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getMetadataversionnumberFieldBuilder() {
          if (metadataversionnumberBuilder_ == null) {
            metadataversionnumberBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    metadataversionnumber_,
                    getParentForChildren(),
                    isClean());
            metadataversionnumber_ = null;
          }
          return metadataversionnumberBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.Result.GeoLocation geolocation = 44;
        private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> geolocation_ =
          java.util.Collections.emptyList();
        private void ensureGeolocationIsMutable() {
          if (!((bitField0_ & 0x02000000) == 0x02000000)) {
            geolocation_ = new java.util.ArrayList<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation>(geolocation_);
            bitField0_ |= 0x02000000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder> geolocationBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> getGeolocationList() {
          if (geolocationBuilder_ == null) {
            return java.util.Collections.unmodifiableList(geolocation_);
          } else {
            return geolocationBuilder_.getMessageList();
          }
        }
        public int getGeolocationCount() {
          if (geolocationBuilder_ == null) {
            return geolocation_.size();
          } else {
            return geolocationBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation getGeolocation(int index) {
          if (geolocationBuilder_ == null) {
            return geolocation_.get(index);
          } else {
            return geolocationBuilder_.getMessage(index);
          }
        }
        public Builder setGeolocation(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation value) {
          if (geolocationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeolocationIsMutable();
            geolocation_.set(index, value);
            onChanged();
          } else {
            geolocationBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setGeolocation(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder builderForValue) {
          if (geolocationBuilder_ == null) {
            ensureGeolocationIsMutable();
            geolocation_.set(index, builderForValue.build());
            onChanged();
          } else {
            geolocationBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addGeolocation(eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation value) {
          if (geolocationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeolocationIsMutable();
            geolocation_.add(value);
            onChanged();
          } else {
            geolocationBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addGeolocation(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation value) {
          if (geolocationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGeolocationIsMutable();
            geolocation_.add(index, value);
            onChanged();
          } else {
            geolocationBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addGeolocation(
            eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder builderForValue) {
          if (geolocationBuilder_ == null) {
            ensureGeolocationIsMutable();
            geolocation_.add(builderForValue.build());
            onChanged();
          } else {
            geolocationBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addGeolocation(
            int index, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder builderForValue) {
          if (geolocationBuilder_ == null) {
            ensureGeolocationIsMutable();
            geolocation_.add(index, builderForValue.build());
            onChanged();
          } else {
            geolocationBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllGeolocation(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation> values) {
          if (geolocationBuilder_ == null) {
            ensureGeolocationIsMutable();
            super.addAll(values, geolocation_);
            onChanged();
          } else {
            geolocationBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearGeolocation() {
          if (geolocationBuilder_ == null) {
            geolocation_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x02000000);
            onChanged();
          } else {
            geolocationBuilder_.clear();
          }
          return this;
        }
        public Builder removeGeolocation(int index) {
          if (geolocationBuilder_ == null) {
            ensureGeolocationIsMutable();
            geolocation_.remove(index);
            onChanged();
          } else {
            geolocationBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder getGeolocationBuilder(
            int index) {
          return getGeolocationFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder getGeolocationOrBuilder(
            int index) {
          if (geolocationBuilder_ == null) {
            return geolocation_.get(index);  } else {
            return geolocationBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder> 
             getGeolocationOrBuilderList() {
          if (geolocationBuilder_ != null) {
            return geolocationBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(geolocation_);
          }
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder addGeolocationBuilder() {
          return getGeolocationFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder addGeolocationBuilder(
            int index) {
          return getGeolocationFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder> 
             getGeolocationBuilderList() {
          return getGeolocationFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder> 
            getGeolocationFieldBuilder() {
          if (geolocationBuilder_ == null) {
            geolocationBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder, eu.dnetlib.data.proto.ResultProtos.Result.GeoLocationOrBuilder>(
                    geolocation_,
                    ((bitField0_ & 0x02000000) == 0x02000000),
                    getParentForChildren(),
                    isClean());
            geolocation_ = null;
          }
          return geolocationBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField documentationUrl = 35;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> documentationUrl_ =
          java.util.Collections.emptyList();
        private void ensureDocumentationUrlIsMutable() {
          if (!((bitField0_ & 0x04000000) == 0x04000000)) {
            documentationUrl_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(documentationUrl_);
            bitField0_ |= 0x04000000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> documentationUrlBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getDocumentationUrlList() {
          if (documentationUrlBuilder_ == null) {
            return java.util.Collections.unmodifiableList(documentationUrl_);
          } else {
            return documentationUrlBuilder_.getMessageList();
          }
        }
        public int getDocumentationUrlCount() {
          if (documentationUrlBuilder_ == null) {
            return documentationUrl_.size();
          } else {
            return documentationUrlBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDocumentationUrl(int index) {
          if (documentationUrlBuilder_ == null) {
            return documentationUrl_.get(index);
          } else {
            return documentationUrlBuilder_.getMessage(index);
          }
        }
        public Builder setDocumentationUrl(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (documentationUrlBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentationUrlIsMutable();
            documentationUrl_.set(index, value);
            onChanged();
          } else {
            documentationUrlBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setDocumentationUrl(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (documentationUrlBuilder_ == null) {
            ensureDocumentationUrlIsMutable();
            documentationUrl_.set(index, builderForValue.build());
            onChanged();
          } else {
            documentationUrlBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addDocumentationUrl(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (documentationUrlBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentationUrlIsMutable();
            documentationUrl_.add(value);
            onChanged();
          } else {
            documentationUrlBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addDocumentationUrl(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (documentationUrlBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentationUrlIsMutable();
            documentationUrl_.add(index, value);
            onChanged();
          } else {
            documentationUrlBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addDocumentationUrl(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (documentationUrlBuilder_ == null) {
            ensureDocumentationUrlIsMutable();
            documentationUrl_.add(builderForValue.build());
            onChanged();
          } else {
            documentationUrlBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addDocumentationUrl(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (documentationUrlBuilder_ == null) {
            ensureDocumentationUrlIsMutable();
            documentationUrl_.add(index, builderForValue.build());
            onChanged();
          } else {
            documentationUrlBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllDocumentationUrl(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (documentationUrlBuilder_ == null) {
            ensureDocumentationUrlIsMutable();
            super.addAll(values, documentationUrl_);
            onChanged();
          } else {
            documentationUrlBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearDocumentationUrl() {
          if (documentationUrlBuilder_ == null) {
            documentationUrl_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x04000000);
            onChanged();
          } else {
            documentationUrlBuilder_.clear();
          }
          return this;
        }
        public Builder removeDocumentationUrl(int index) {
          if (documentationUrlBuilder_ == null) {
            ensureDocumentationUrlIsMutable();
            documentationUrl_.remove(index);
            onChanged();
          } else {
            documentationUrlBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDocumentationUrlBuilder(
            int index) {
          return getDocumentationUrlFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDocumentationUrlOrBuilder(
            int index) {
          if (documentationUrlBuilder_ == null) {
            return documentationUrl_.get(index);  } else {
            return documentationUrlBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getDocumentationUrlOrBuilderList() {
          if (documentationUrlBuilder_ != null) {
            return documentationUrlBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(documentationUrl_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addDocumentationUrlBuilder() {
          return getDocumentationUrlFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addDocumentationUrlBuilder(
            int index) {
          return getDocumentationUrlFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getDocumentationUrlBuilderList() {
          return getDocumentationUrlFieldBuilder().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> 
            getDocumentationUrlFieldBuilder() {
          if (documentationUrlBuilder_ == null) {
            documentationUrlBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    documentationUrl_,
                    ((bitField0_ & 0x04000000) == 0x04000000),
                    getParentForChildren(),
                    isClean());
            documentationUrl_ = null;
          }
          return documentationUrlBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StructuredProperty license = 36;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> license_ =
          java.util.Collections.emptyList();
        private void ensureLicenseIsMutable() {
          if (!((bitField0_ & 0x08000000) == 0x08000000)) {
            license_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty>(license_);
            bitField0_ |= 0x08000000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> licenseBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getLicenseList() {
          if (licenseBuilder_ == null) {
            return java.util.Collections.unmodifiableList(license_);
          } else {
            return licenseBuilder_.getMessageList();
          }
        }
        public int getLicenseCount() {
          if (licenseBuilder_ == null) {
            return license_.size();
          } else {
            return licenseBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getLicense(int index) {
          if (licenseBuilder_ == null) {
            return license_.get(index);
          } else {
            return licenseBuilder_.getMessage(index);
          }
        }
        public Builder setLicense(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (licenseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLicenseIsMutable();
            license_.set(index, value);
            onChanged();
          } else {
            licenseBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setLicense(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (licenseBuilder_ == null) {
            ensureLicenseIsMutable();
            license_.set(index, builderForValue.build());
            onChanged();
          } else {
            licenseBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addLicense(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (licenseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLicenseIsMutable();
            license_.add(value);
            onChanged();
          } else {
            licenseBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addLicense(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (licenseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLicenseIsMutable();
            license_.add(index, value);
            onChanged();
          } else {
            licenseBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addLicense(
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (licenseBuilder_ == null) {
            ensureLicenseIsMutable();
            license_.add(builderForValue.build());
            onChanged();
          } else {
            licenseBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addLicense(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (licenseBuilder_ == null) {
            ensureLicenseIsMutable();
            license_.add(index, builderForValue.build());
            onChanged();
          } else {
            licenseBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllLicense(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> values) {
          if (licenseBuilder_ == null) {
            ensureLicenseIsMutable();
            super.addAll(values, license_);
            onChanged();
          } else {
            licenseBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearLicense() {
          if (licenseBuilder_ == null) {
            license_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x08000000);
            onChanged();
          } else {
            licenseBuilder_.clear();
          }
          return this;
        }
        public Builder removeLicense(int index) {
          if (licenseBuilder_ == null) {
            ensureLicenseIsMutable();
            license_.remove(index);
            onChanged();
          } else {
            licenseBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder getLicenseBuilder(
            int index) {
          return getLicenseFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getLicenseOrBuilder(
            int index) {
          if (licenseBuilder_ == null) {
            return license_.get(index);  } else {
            return licenseBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
             getLicenseOrBuilderList() {
          if (licenseBuilder_ != null) {
            return licenseBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(license_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addLicenseBuilder() {
          return getLicenseFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addLicenseBuilder(
            int index) {
          return getLicenseFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder> 
             getLicenseBuilderList() {
          return getLicenseFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
            getLicenseFieldBuilder() {
          if (licenseBuilder_ == null) {
            licenseBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder>(
                    license_,
                    ((bitField0_ & 0x08000000) == 0x08000000),
                    getParentForChildren(),
                    isClean());
            license_ = null;
          }
          return licenseBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField codeRepositoryUrl = 38;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField codeRepositoryUrl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> codeRepositoryUrlBuilder_;
        public boolean hasCodeRepositoryUrl() {
          return ((bitField0_ & 0x10000000) == 0x10000000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCodeRepositoryUrl() {
          if (codeRepositoryUrlBuilder_ == null) {
            return codeRepositoryUrl_;
          } else {
            return codeRepositoryUrlBuilder_.getMessage();
          }
        }
        public Builder setCodeRepositoryUrl(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (codeRepositoryUrlBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            codeRepositoryUrl_ = value;
            onChanged();
          } else {
            codeRepositoryUrlBuilder_.setMessage(value);
          }
          bitField0_ |= 0x10000000;
          return this;
        }
        public Builder setCodeRepositoryUrl(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (codeRepositoryUrlBuilder_ == null) {
            codeRepositoryUrl_ = builderForValue.build();
            onChanged();
          } else {
            codeRepositoryUrlBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x10000000;
          return this;
        }
        public Builder mergeCodeRepositoryUrl(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (codeRepositoryUrlBuilder_ == null) {
            if (((bitField0_ & 0x10000000) == 0x10000000) &&
                codeRepositoryUrl_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              codeRepositoryUrl_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(codeRepositoryUrl_).mergeFrom(value).buildPartial();
            } else {
              codeRepositoryUrl_ = value;
            }
            onChanged();
          } else {
            codeRepositoryUrlBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x10000000;
          return this;
        }
        public Builder clearCodeRepositoryUrl() {
          if (codeRepositoryUrlBuilder_ == null) {
            codeRepositoryUrl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            codeRepositoryUrlBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x10000000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getCodeRepositoryUrlBuilder() {
          bitField0_ |= 0x10000000;
          onChanged();
          return getCodeRepositoryUrlFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeRepositoryUrlOrBuilder() {
          if (codeRepositoryUrlBuilder_ != null) {
            return codeRepositoryUrlBuilder_.getMessageOrBuilder();
          } else {
            return codeRepositoryUrl_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getCodeRepositoryUrlFieldBuilder() {
          if (codeRepositoryUrlBuilder_ == null) {
            codeRepositoryUrlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    codeRepositoryUrl_,
                    getParentForChildren(),
                    isClean());
            codeRepositoryUrl_ = null;
          }
          return codeRepositoryUrlBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier programmingLanguage = 39;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier programmingLanguage_ = 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> programmingLanguageBuilder_;
        public boolean hasProgrammingLanguage() {
          return ((bitField0_ & 0x20000000) == 0x20000000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getProgrammingLanguage() {
          if (programmingLanguageBuilder_ == null) {
            return programmingLanguage_;
          } else {
            return programmingLanguageBuilder_.getMessage();
          }
        }
        public Builder setProgrammingLanguage(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (programmingLanguageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            programmingLanguage_ = value;
            onChanged();
          } else {
            programmingLanguageBuilder_.setMessage(value);
          }
          bitField0_ |= 0x20000000;
          return this;
        }
        public Builder setProgrammingLanguage(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (programmingLanguageBuilder_ == null) {
            programmingLanguage_ = builderForValue.build();
            onChanged();
          } else {
            programmingLanguageBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x20000000;
          return this;
        }
        public Builder mergeProgrammingLanguage(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (programmingLanguageBuilder_ == null) {
            if (((bitField0_ & 0x20000000) == 0x20000000) &&
                programmingLanguage_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              programmingLanguage_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(programmingLanguage_).mergeFrom(value).buildPartial();
            } else {
              programmingLanguage_ = value;
            }
            onChanged();
          } else {
            programmingLanguageBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x20000000;
          return this;
        }
        public Builder clearProgrammingLanguage() {
          if (programmingLanguageBuilder_ == null) {
            programmingLanguage_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            programmingLanguageBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x20000000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getProgrammingLanguageBuilder() {
          bitField0_ |= 0x20000000;
          onChanged();
          return getProgrammingLanguageFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getProgrammingLanguageOrBuilder() {
          if (programmingLanguageBuilder_ != null) {
            return programmingLanguageBuilder_.getMessageOrBuilder();
          } else {
            return programmingLanguage_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getProgrammingLanguageFieldBuilder() {
          if (programmingLanguageBuilder_ == null) {
            programmingLanguageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    programmingLanguage_,
                    getParentForChildren(),
                    isClean());
            programmingLanguage_ = null;
          }
          return programmingLanguageBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField contactperson = 45;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contactperson_ =
          java.util.Collections.emptyList();
        private void ensureContactpersonIsMutable() {
          if (!((bitField0_ & 0x40000000) == 0x40000000)) {
            contactperson_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(contactperson_);
            bitField0_ |= 0x40000000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> contactpersonBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContactpersonList() {
          if (contactpersonBuilder_ == null) {
            return java.util.Collections.unmodifiableList(contactperson_);
          } else {
            return contactpersonBuilder_.getMessageList();
          }
        }
        public int getContactpersonCount() {
          if (contactpersonBuilder_ == null) {
            return contactperson_.size();
          } else {
            return contactpersonBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactperson(int index) {
          if (contactpersonBuilder_ == null) {
            return contactperson_.get(index);
          } else {
            return contactpersonBuilder_.getMessage(index);
          }
        }
        public Builder setContactperson(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactpersonBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactpersonIsMutable();
            contactperson_.set(index, value);
            onChanged();
          } else {
            contactpersonBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setContactperson(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactpersonBuilder_ == null) {
            ensureContactpersonIsMutable();
            contactperson_.set(index, builderForValue.build());
            onChanged();
          } else {
            contactpersonBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addContactperson(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactpersonBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactpersonIsMutable();
            contactperson_.add(value);
            onChanged();
          } else {
            contactpersonBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addContactperson(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactpersonBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactpersonIsMutable();
            contactperson_.add(index, value);
            onChanged();
          } else {
            contactpersonBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addContactperson(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactpersonBuilder_ == null) {
            ensureContactpersonIsMutable();
            contactperson_.add(builderForValue.build());
            onChanged();
          } else {
            contactpersonBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addContactperson(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactpersonBuilder_ == null) {
            ensureContactpersonIsMutable();
            contactperson_.add(index, builderForValue.build());
            onChanged();
          } else {
            contactpersonBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllContactperson(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (contactpersonBuilder_ == null) {
            ensureContactpersonIsMutable();
            super.addAll(values, contactperson_);
            onChanged();
          } else {
            contactpersonBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearContactperson() {
          if (contactpersonBuilder_ == null) {
            contactperson_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x40000000);
            onChanged();
          } else {
            contactpersonBuilder_.clear();
          }
          return this;
        }
        public Builder removeContactperson(int index) {
          if (contactpersonBuilder_ == null) {
            ensureContactpersonIsMutable();
            contactperson_.remove(index);
            onChanged();
          } else {
            contactpersonBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactpersonBuilder(
            int index) {
          return getContactpersonFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactpersonOrBuilder(
            int index) {
          if (contactpersonBuilder_ == null) {
            return contactperson_.get(index);  } else {
            return contactpersonBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getContactpersonOrBuilderList() {
          if (contactpersonBuilder_ != null) {
            return contactpersonBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(contactperson_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContactpersonBuilder() {
          return getContactpersonFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContactpersonBuilder(
            int index) {
          return getContactpersonFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getContactpersonBuilderList() {
          return getContactpersonFieldBuilder().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> 
            getContactpersonFieldBuilder() {
          if (contactpersonBuilder_ == null) {
            contactpersonBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactperson_,
                    ((bitField0_ & 0x40000000) == 0x40000000),
                    getParentForChildren(),
                    isClean());
            contactperson_ = null;
          }
          return contactpersonBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField contactgroup = 41;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> contactgroup_ =
          java.util.Collections.emptyList();
        private void ensureContactgroupIsMutable() {
          if (!((bitField0_ & 0x80000000) == 0x80000000)) {
            contactgroup_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(contactgroup_);
            bitField0_ |= 0x80000000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> contactgroupBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getContactgroupList() {
          if (contactgroupBuilder_ == null) {
            return java.util.Collections.unmodifiableList(contactgroup_);
          } else {
            return contactgroupBuilder_.getMessageList();
          }
        }
        public int getContactgroupCount() {
          if (contactgroupBuilder_ == null) {
            return contactgroup_.size();
          } else {
            return contactgroupBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactgroup(int index) {
          if (contactgroupBuilder_ == null) {
            return contactgroup_.get(index);
          } else {
            return contactgroupBuilder_.getMessage(index);
          }
        }
        public Builder setContactgroup(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactgroupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactgroupIsMutable();
            contactgroup_.set(index, value);
            onChanged();
          } else {
            contactgroupBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setContactgroup(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactgroupBuilder_ == null) {
            ensureContactgroupIsMutable();
            contactgroup_.set(index, builderForValue.build());
            onChanged();
          } else {
            contactgroupBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addContactgroup(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactgroupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactgroupIsMutable();
            contactgroup_.add(value);
            onChanged();
          } else {
            contactgroupBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addContactgroup(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactgroupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureContactgroupIsMutable();
            contactgroup_.add(index, value);
            onChanged();
          } else {
            contactgroupBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addContactgroup(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactgroupBuilder_ == null) {
            ensureContactgroupIsMutable();
            contactgroup_.add(builderForValue.build());
            onChanged();
          } else {
            contactgroupBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addContactgroup(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactgroupBuilder_ == null) {
            ensureContactgroupIsMutable();
            contactgroup_.add(index, builderForValue.build());
            onChanged();
          } else {
            contactgroupBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllContactgroup(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (contactgroupBuilder_ == null) {
            ensureContactgroupIsMutable();
            super.addAll(values, contactgroup_);
            onChanged();
          } else {
            contactgroupBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearContactgroup() {
          if (contactgroupBuilder_ == null) {
            contactgroup_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x80000000);
            onChanged();
          } else {
            contactgroupBuilder_.clear();
          }
          return this;
        }
        public Builder removeContactgroup(int index) {
          if (contactgroupBuilder_ == null) {
            ensureContactgroupIsMutable();
            contactgroup_.remove(index);
            onChanged();
          } else {
            contactgroupBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactgroupBuilder(
            int index) {
          return getContactgroupFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactgroupOrBuilder(
            int index) {
          if (contactgroupBuilder_ == null) {
            return contactgroup_.get(index);  } else {
            return contactgroupBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getContactgroupOrBuilderList() {
          if (contactgroupBuilder_ != null) {
            return contactgroupBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(contactgroup_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContactgroupBuilder() {
          return getContactgroupFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addContactgroupBuilder(
            int index) {
          return getContactgroupFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getContactgroupBuilderList() {
          return getContactgroupFieldBuilder().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> 
            getContactgroupFieldBuilder() {
          if (contactgroupBuilder_ == null) {
            contactgroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactgroup_,
                    ((bitField0_ & 0x80000000) == 0x80000000),
                    getParentForChildren(),
                    isClean());
            contactgroup_ = null;
          }
          return contactgroupBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField tool = 42;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> tool_ =
          java.util.Collections.emptyList();
        private void ensureToolIsMutable() {
          if (!((bitField1_ & 0x00000001) == 0x00000001)) {
            tool_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(tool_);
            bitField1_ |= 0x00000001;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> toolBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getToolList() {
          if (toolBuilder_ == null) {
            return java.util.Collections.unmodifiableList(tool_);
          } else {
            return toolBuilder_.getMessageList();
          }
        }
        public int getToolCount() {
          if (toolBuilder_ == null) {
            return tool_.size();
          } else {
            return toolBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getTool(int index) {
          if (toolBuilder_ == null) {
            return tool_.get(index);
          } else {
            return toolBuilder_.getMessage(index);
          }
        }
        public Builder setTool(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (toolBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureToolIsMutable();
            tool_.set(index, value);
            onChanged();
          } else {
            toolBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setTool(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (toolBuilder_ == null) {
            ensureToolIsMutable();
            tool_.set(index, builderForValue.build());
            onChanged();
          } else {
            toolBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addTool(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (toolBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureToolIsMutable();
            tool_.add(value);
            onChanged();
          } else {
            toolBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addTool(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (toolBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureToolIsMutable();
            tool_.add(index, value);
            onChanged();
          } else {
            toolBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addTool(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (toolBuilder_ == null) {
            ensureToolIsMutable();
            tool_.add(builderForValue.build());
            onChanged();
          } else {
            toolBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addTool(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (toolBuilder_ == null) {
            ensureToolIsMutable();
            tool_.add(index, builderForValue.build());
            onChanged();
          } else {
            toolBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllTool(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (toolBuilder_ == null) {
            ensureToolIsMutable();
            super.addAll(values, tool_);
            onChanged();
          } else {
            toolBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearTool() {
          if (toolBuilder_ == null) {
            tool_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00000001);
            onChanged();
          } else {
            toolBuilder_.clear();
          }
          return this;
        }
        public Builder removeTool(int index) {
          if (toolBuilder_ == null) {
            ensureToolIsMutable();
            tool_.remove(index);
            onChanged();
          } else {
            toolBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getToolBuilder(
            int index) {
          return getToolFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getToolOrBuilder(
            int index) {
          if (toolBuilder_ == null) {
            return tool_.get(index);  } else {
            return toolBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getToolOrBuilderList() {
          if (toolBuilder_ != null) {
            return toolBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(tool_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addToolBuilder() {
          return getToolFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addToolBuilder(
            int index) {
          return getToolFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getToolBuilderList() {
          return getToolFieldBuilder().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> 
            getToolFieldBuilder() {
          if (toolBuilder_ == null) {
            toolBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    tool_,
                    ((bitField1_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            tool_ = null;
          }
          return toolBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Result.Metadata)
      }
      
      static {
        defaultInstance = new Metadata(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.Metadata)
    }
    
    public interface JournalOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional string name = 1;
      boolean hasName();
      String getName();
      
      // optional string issnPrinted = 2;
      boolean hasIssnPrinted();
      String getIssnPrinted();
      
      // optional string issnOnline = 3;
      boolean hasIssnOnline();
      String getIssnOnline();
      
      // optional string issnLinking = 4;
      boolean hasIssnLinking();
      String getIssnLinking();
      
      // optional string ep = 6;
      boolean hasEp();
      String getEp();
      
      // optional string iss = 7;
      boolean hasIss();
      String getIss();
      
      // optional string sp = 8;
      boolean hasSp();
      String getSp();
      
      // optional string vol = 9;
      boolean hasVol();
      String getVol();
      
      // optional string edition = 10;
      boolean hasEdition();
      String getEdition();
      
      // optional string conferenceplace = 11;
      boolean hasConferenceplace();
      String getConferenceplace();
      
      // optional string conferencedate = 12;
      boolean hasConferencedate();
      String getConferencedate();
      
      // 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 Journal extends
        com.google.protobuf.GeneratedMessage
        implements JournalOrBuilder {
      // Use Journal.newBuilder() to construct.
      private Journal(Builder builder) {
        super(builder);
      }
      private Journal(boolean noInit) {}
      
      private static final Journal defaultInstance;
      public static Journal getDefaultInstance() {
        return defaultInstance;
      }
      
      public Journal getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Journal_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Journal_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional 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;
        }
      }
      
      // optional string issnPrinted = 2;
      public static final int ISSNPRINTED_FIELD_NUMBER = 2;
      private java.lang.Object issnPrinted_;
      public boolean hasIssnPrinted() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getIssnPrinted() {
        java.lang.Object ref = issnPrinted_;
        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)) {
            issnPrinted_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIssnPrintedBytes() {
        java.lang.Object ref = issnPrinted_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          issnPrinted_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string issnOnline = 3;
      public static final int ISSNONLINE_FIELD_NUMBER = 3;
      private java.lang.Object issnOnline_;
      public boolean hasIssnOnline() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getIssnOnline() {
        java.lang.Object ref = issnOnline_;
        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)) {
            issnOnline_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIssnOnlineBytes() {
        java.lang.Object ref = issnOnline_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          issnOnline_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string issnLinking = 4;
      public static final int ISSNLINKING_FIELD_NUMBER = 4;
      private java.lang.Object issnLinking_;
      public boolean hasIssnLinking() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getIssnLinking() {
        java.lang.Object ref = issnLinking_;
        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)) {
            issnLinking_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIssnLinkingBytes() {
        java.lang.Object ref = issnLinking_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          issnLinking_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string ep = 6;
      public static final int EP_FIELD_NUMBER = 6;
      private java.lang.Object ep_;
      public boolean hasEp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getEp() {
        java.lang.Object ref = ep_;
        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)) {
            ep_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getEpBytes() {
        java.lang.Object ref = ep_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          ep_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string iss = 7;
      public static final int ISS_FIELD_NUMBER = 7;
      private java.lang.Object iss_;
      public boolean hasIss() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public String getIss() {
        java.lang.Object ref = iss_;
        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)) {
            iss_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIssBytes() {
        java.lang.Object ref = iss_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          iss_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string sp = 8;
      public static final int SP_FIELD_NUMBER = 8;
      private java.lang.Object sp_;
      public boolean hasSp() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public String getSp() {
        java.lang.Object ref = sp_;
        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)) {
            sp_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSpBytes() {
        java.lang.Object ref = sp_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sp_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string vol = 9;
      public static final int VOL_FIELD_NUMBER = 9;
      private java.lang.Object vol_;
      public boolean hasVol() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public String getVol() {
        java.lang.Object ref = vol_;
        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)) {
            vol_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getVolBytes() {
        java.lang.Object ref = vol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          vol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string edition = 10;
      public static final int EDITION_FIELD_NUMBER = 10;
      private java.lang.Object edition_;
      public boolean hasEdition() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public String getEdition() {
        java.lang.Object ref = edition_;
        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)) {
            edition_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getEditionBytes() {
        java.lang.Object ref = edition_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          edition_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string conferenceplace = 11;
      public static final int CONFERENCEPLACE_FIELD_NUMBER = 11;
      private java.lang.Object conferenceplace_;
      public boolean hasConferenceplace() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public String getConferenceplace() {
        java.lang.Object ref = conferenceplace_;
        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)) {
            conferenceplace_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getConferenceplaceBytes() {
        java.lang.Object ref = conferenceplace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          conferenceplace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string conferencedate = 12;
      public static final int CONFERENCEDATE_FIELD_NUMBER = 12;
      private java.lang.Object conferencedate_;
      public boolean hasConferencedate() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public String getConferencedate() {
        java.lang.Object ref = conferencedate_;
        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)) {
            conferencedate_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getConferencedateBytes() {
        java.lang.Object ref = conferencedate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          conferencedate_ = 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_ & 0x00000800) == 0x00000800);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        return dataInfo_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        return dataInfo_;
      }
      
      private void initFields() {
        name_ = "";
        issnPrinted_ = "";
        issnOnline_ = "";
        issnLinking_ = "";
        ep_ = "";
        iss_ = "";
        sp_ = "";
        vol_ = "";
        edition_ = "";
        conferenceplace_ = "";
        conferencedate_ = "";
        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, getNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getIssnPrintedBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getIssnOnlineBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getIssnLinkingBytes());
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeMessage(5, dataInfo_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(6, getEpBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBytes(7, getIssBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeBytes(8, getSpBytes());
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeBytes(9, getVolBytes());
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeBytes(10, getEditionBytes());
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeBytes(11, getConferenceplaceBytes());
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeBytes(12, getConferencedateBytes());
        }
        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, getIssnPrintedBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getIssnOnlineBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getIssnLinkingBytes());
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, dataInfo_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(6, getEpBytes());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(7, getIssBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(8, getSpBytes());
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(9, getVolBytes());
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(10, getEditionBytes());
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(11, getConferenceplaceBytes());
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(12, getConferencedateBytes());
        }
        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.ResultProtos.Result.Journal parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Journal 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.ResultProtos.Result.Journal 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.ResultProtos.Result.JournalOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Journal_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Journal_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.Journal.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();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          issnPrinted_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          issnOnline_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          issnLinking_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          ep_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          iss_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          sp_ = "";
          bitField0_ = (bitField0_ & ~0x00000040);
          vol_ = "";
          bitField0_ = (bitField0_ & ~0x00000080);
          edition_ = "";
          bitField0_ = (bitField0_ & ~0x00000100);
          conferenceplace_ = "";
          bitField0_ = (bitField0_ & ~0x00000200);
          conferencedate_ = "";
          bitField0_ = (bitField0_ & ~0x00000400);
          if (dataInfoBuilder_ == null) {
            dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          } else {
            dataInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Journal getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Journal build() {
          eu.dnetlib.data.proto.ResultProtos.Result.Journal result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.Journal buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.Journal result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Journal buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.Journal result = new eu.dnetlib.data.proto.ResultProtos.Result.Journal(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.issnPrinted_ = issnPrinted_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.issnOnline_ = issnOnline_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.issnLinking_ = issnLinking_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.ep_ = ep_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.iss_ = iss_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.sp_ = sp_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.vol_ = vol_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.edition_ = edition_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          result.conferenceplace_ = conferenceplace_;
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          result.conferencedate_ = conferencedate_;
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000800;
          }
          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.ResultProtos.Result.Journal) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.Journal)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.Journal other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.Journal.getDefaultInstance()) return this;
          if (other.hasName()) {
            setName(other.getName());
          }
          if (other.hasIssnPrinted()) {
            setIssnPrinted(other.getIssnPrinted());
          }
          if (other.hasIssnOnline()) {
            setIssnOnline(other.getIssnOnline());
          }
          if (other.hasIssnLinking()) {
            setIssnLinking(other.getIssnLinking());
          }
          if (other.hasEp()) {
            setEp(other.getEp());
          }
          if (other.hasIss()) {
            setIss(other.getIss());
          }
          if (other.hasSp()) {
            setSp(other.getSp());
          }
          if (other.hasVol()) {
            setVol(other.getVol());
          }
          if (other.hasEdition()) {
            setEdition(other.getEdition());
          }
          if (other.hasConferenceplace()) {
            setConferenceplace(other.getConferenceplace());
          }
          if (other.hasConferencedate()) {
            setConferencedate(other.getConferencedate());
          }
          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;
                name_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                issnPrinted_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                issnOnline_ = input.readBytes();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                issnLinking_ = 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;
              }
              case 50: {
                bitField0_ |= 0x00000010;
                ep_ = input.readBytes();
                break;
              }
              case 58: {
                bitField0_ |= 0x00000020;
                iss_ = input.readBytes();
                break;
              }
              case 66: {
                bitField0_ |= 0x00000040;
                sp_ = input.readBytes();
                break;
              }
              case 74: {
                bitField0_ |= 0x00000080;
                vol_ = input.readBytes();
                break;
              }
              case 82: {
                bitField0_ |= 0x00000100;
                edition_ = input.readBytes();
                break;
              }
              case 90: {
                bitField0_ |= 0x00000200;
                conferenceplace_ = input.readBytes();
                break;
              }
              case 98: {
                bitField0_ |= 0x00000400;
                conferencedate_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional 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();
        }
        
        // optional string issnPrinted = 2;
        private java.lang.Object issnPrinted_ = "";
        public boolean hasIssnPrinted() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getIssnPrinted() {
          java.lang.Object ref = issnPrinted_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            issnPrinted_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIssnPrinted(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          issnPrinted_ = value;
          onChanged();
          return this;
        }
        public Builder clearIssnPrinted() {
          bitField0_ = (bitField0_ & ~0x00000002);
          issnPrinted_ = getDefaultInstance().getIssnPrinted();
          onChanged();
          return this;
        }
        void setIssnPrinted(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          issnPrinted_ = value;
          onChanged();
        }
        
        // optional string issnOnline = 3;
        private java.lang.Object issnOnline_ = "";
        public boolean hasIssnOnline() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getIssnOnline() {
          java.lang.Object ref = issnOnline_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            issnOnline_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIssnOnline(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          issnOnline_ = value;
          onChanged();
          return this;
        }
        public Builder clearIssnOnline() {
          bitField0_ = (bitField0_ & ~0x00000004);
          issnOnline_ = getDefaultInstance().getIssnOnline();
          onChanged();
          return this;
        }
        void setIssnOnline(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          issnOnline_ = value;
          onChanged();
        }
        
        // optional string issnLinking = 4;
        private java.lang.Object issnLinking_ = "";
        public boolean hasIssnLinking() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getIssnLinking() {
          java.lang.Object ref = issnLinking_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            issnLinking_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIssnLinking(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          issnLinking_ = value;
          onChanged();
          return this;
        }
        public Builder clearIssnLinking() {
          bitField0_ = (bitField0_ & ~0x00000008);
          issnLinking_ = getDefaultInstance().getIssnLinking();
          onChanged();
          return this;
        }
        void setIssnLinking(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          issnLinking_ = value;
          onChanged();
        }
        
        // optional string ep = 6;
        private java.lang.Object ep_ = "";
        public boolean hasEp() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getEp() {
          java.lang.Object ref = ep_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            ep_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setEp(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          ep_ = value;
          onChanged();
          return this;
        }
        public Builder clearEp() {
          bitField0_ = (bitField0_ & ~0x00000010);
          ep_ = getDefaultInstance().getEp();
          onChanged();
          return this;
        }
        void setEp(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          ep_ = value;
          onChanged();
        }
        
        // optional string iss = 7;
        private java.lang.Object iss_ = "";
        public boolean hasIss() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getIss() {
          java.lang.Object ref = iss_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            iss_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIss(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
          iss_ = value;
          onChanged();
          return this;
        }
        public Builder clearIss() {
          bitField0_ = (bitField0_ & ~0x00000020);
          iss_ = getDefaultInstance().getIss();
          onChanged();
          return this;
        }
        void setIss(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000020;
          iss_ = value;
          onChanged();
        }
        
        // optional string sp = 8;
        private java.lang.Object sp_ = "";
        public boolean hasSp() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public String getSp() {
          java.lang.Object ref = sp_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sp_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSp(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
          sp_ = value;
          onChanged();
          return this;
        }
        public Builder clearSp() {
          bitField0_ = (bitField0_ & ~0x00000040);
          sp_ = getDefaultInstance().getSp();
          onChanged();
          return this;
        }
        void setSp(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000040;
          sp_ = value;
          onChanged();
        }
        
        // optional string vol = 9;
        private java.lang.Object vol_ = "";
        public boolean hasVol() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        public String getVol() {
          java.lang.Object ref = vol_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            vol_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setVol(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
          vol_ = value;
          onChanged();
          return this;
        }
        public Builder clearVol() {
          bitField0_ = (bitField0_ & ~0x00000080);
          vol_ = getDefaultInstance().getVol();
          onChanged();
          return this;
        }
        void setVol(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000080;
          vol_ = value;
          onChanged();
        }
        
        // optional string edition = 10;
        private java.lang.Object edition_ = "";
        public boolean hasEdition() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        public String getEdition() {
          java.lang.Object ref = edition_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            edition_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setEdition(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
          edition_ = value;
          onChanged();
          return this;
        }
        public Builder clearEdition() {
          bitField0_ = (bitField0_ & ~0x00000100);
          edition_ = getDefaultInstance().getEdition();
          onChanged();
          return this;
        }
        void setEdition(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000100;
          edition_ = value;
          onChanged();
        }
        
        // optional string conferenceplace = 11;
        private java.lang.Object conferenceplace_ = "";
        public boolean hasConferenceplace() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        public String getConferenceplace() {
          java.lang.Object ref = conferenceplace_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            conferenceplace_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setConferenceplace(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
          conferenceplace_ = value;
          onChanged();
          return this;
        }
        public Builder clearConferenceplace() {
          bitField0_ = (bitField0_ & ~0x00000200);
          conferenceplace_ = getDefaultInstance().getConferenceplace();
          onChanged();
          return this;
        }
        void setConferenceplace(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000200;
          conferenceplace_ = value;
          onChanged();
        }
        
        // optional string conferencedate = 12;
        private java.lang.Object conferencedate_ = "";
        public boolean hasConferencedate() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        public String getConferencedate() {
          java.lang.Object ref = conferencedate_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            conferencedate_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setConferencedate(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
          conferencedate_ = value;
          onChanged();
          return this;
        }
        public Builder clearConferencedate() {
          bitField0_ = (bitField0_ & ~0x00000400);
          conferencedate_ = getDefaultInstance().getConferencedate();
          onChanged();
          return this;
        }
        void setConferencedate(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000400;
          conferencedate_ = 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_ & 0x00000800) == 0x00000800);
        }
        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_ |= 0x00000800;
          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_ |= 0x00000800;
          return this;
        }
        public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
          if (dataInfoBuilder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800) &&
                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_ |= 0x00000800;
          return this;
        }
        public Builder clearDataInfo() {
          if (dataInfoBuilder_ == null) {
            dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
            onChanged();
          } else {
            dataInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
          bitField0_ |= 0x00000800;
          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.Result.Journal)
      }
      
      static {
        defaultInstance = new Journal(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.Journal)
    }
    
    public interface ContextOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string id = 1;
      boolean hasId();
      String getId();
      
      // repeated .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> 
          getDataInfoList();
      eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo(int index);
      int getDataInfoCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder(
          int index);
    }
    public static final class Context extends
        com.google.protobuf.GeneratedMessage
        implements ContextOrBuilder {
      // Use Context.newBuilder() to construct.
      private Context(Builder builder) {
        super(builder);
      }
      private Context(boolean noInit) {}
      
      private static final Context defaultInstance;
      public static Context getDefaultInstance() {
        return defaultInstance;
      }
      
      public Context getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Context_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Context_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string id = 1;
      public static final int ID_FIELD_NUMBER = 1;
      private java.lang.Object id_;
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getId() {
        java.lang.Object ref = id_;
        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)) {
            id_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
      public static final int DATAINFO_FIELD_NUMBER = 2;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> dataInfo_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> getDataInfoList() {
        return dataInfo_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
          getDataInfoOrBuilderList() {
        return dataInfo_;
      }
      public int getDataInfoCount() {
        return dataInfo_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo(int index) {
        return dataInfo_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder(
          int index) {
        return dataInfo_.get(index);
      }
      
      private void initFields() {
        id_ = "";
        dataInfo_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getDataInfoCount(); i++) {
          if (!getDataInfo(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, getIdBytes());
        }
        for (int i = 0; i < dataInfo_.size(); i++) {
          output.writeMessage(2, dataInfo_.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, getIdBytes());
        }
        for (int i = 0; i < dataInfo_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, dataInfo_.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.ResultProtos.Result.Context parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Context 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.ResultProtos.Result.Context parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Context 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.ResultProtos.Result.Context parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Context 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.ResultProtos.Result.Context 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.ResultProtos.Result.Context 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.ResultProtos.Result.Context parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Context 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.ResultProtos.Result.Context 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.ResultProtos.Result.ContextOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Context_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Context_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.Context.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();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (dataInfoBuilder_ == null) {
            dataInfo_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            dataInfoBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Context.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Context getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Context.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Context build() {
          eu.dnetlib.data.proto.ResultProtos.Result.Context result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.Context buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.Context result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Context buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.Context result = new eu.dnetlib.data.proto.ResultProtos.Result.Context(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (dataInfoBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              dataInfo_ = java.util.Collections.unmodifiableList(dataInfo_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            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.ResultProtos.Result.Context) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.Context)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.Context other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.Context.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (dataInfoBuilder_ == null) {
            if (!other.dataInfo_.isEmpty()) {
              if (dataInfo_.isEmpty()) {
                dataInfo_ = other.dataInfo_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureDataInfoIsMutable();
                dataInfo_.addAll(other.dataInfo_);
              }
              onChanged();
            }
          } else {
            if (!other.dataInfo_.isEmpty()) {
              if (dataInfoBuilder_.isEmpty()) {
                dataInfoBuilder_.dispose();
                dataInfoBuilder_ = null;
                dataInfo_ = other.dataInfo_;
                bitField0_ = (bitField0_ & ~0x00000002);
                dataInfoBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getDataInfoFieldBuilder() : null;
              } else {
                dataInfoBuilder_.addAllMessages(other.dataInfo_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasId()) {
            
            return false;
          }
          for (int i = 0; i < getDataInfoCount(); i++) {
            if (!getDataInfo(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;
                id_ = input.readBytes();
                break;
              }
              case 18: {
                eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addDataInfo(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string id = 1;
        private java.lang.Object id_ = "";
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            id_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setId(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        void setId(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
        }
        
        // repeated .eu.dnetlib.data.proto.DataInfo dataInfo = 2;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> dataInfo_ =
          java.util.Collections.emptyList();
        private void ensureDataInfoIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            dataInfo_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo>(dataInfo_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> dataInfoBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> getDataInfoList() {
          if (dataInfoBuilder_ == null) {
            return java.util.Collections.unmodifiableList(dataInfo_);
          } else {
            return dataInfoBuilder_.getMessageList();
          }
        }
        public int getDataInfoCount() {
          if (dataInfoBuilder_ == null) {
            return dataInfo_.size();
          } else {
            return dataInfoBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo(int index) {
          if (dataInfoBuilder_ == null) {
            return dataInfo_.get(index);
          } else {
            return dataInfoBuilder_.getMessage(index);
          }
        }
        public Builder setDataInfo(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
          if (dataInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataInfoIsMutable();
            dataInfo_.set(index, value);
            onChanged();
          } else {
            dataInfoBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setDataInfo(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
          if (dataInfoBuilder_ == null) {
            ensureDataInfoIsMutable();
            dataInfo_.set(index, builderForValue.build());
            onChanged();
          } else {
            dataInfoBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
          if (dataInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataInfoIsMutable();
            dataInfo_.add(value);
            onChanged();
          } else {
            dataInfoBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addDataInfo(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
          if (dataInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataInfoIsMutable();
            dataInfo_.add(index, value);
            onChanged();
          } else {
            dataInfoBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addDataInfo(
            eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
          if (dataInfoBuilder_ == null) {
            ensureDataInfoIsMutable();
            dataInfo_.add(builderForValue.build());
            onChanged();
          } else {
            dataInfoBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addDataInfo(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder builderForValue) {
          if (dataInfoBuilder_ == null) {
            ensureDataInfoIsMutable();
            dataInfo_.add(index, builderForValue.build());
            onChanged();
          } else {
            dataInfoBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllDataInfo(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.DataInfo> values) {
          if (dataInfoBuilder_ == null) {
            ensureDataInfoIsMutable();
            super.addAll(values, dataInfo_);
            onChanged();
          } else {
            dataInfoBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearDataInfo() {
          if (dataInfoBuilder_ == null) {
            dataInfo_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            dataInfoBuilder_.clear();
          }
          return this;
        }
        public Builder removeDataInfo(int index) {
          if (dataInfoBuilder_ == null) {
            ensureDataInfoIsMutable();
            dataInfo_.remove(index);
            onChanged();
          } else {
            dataInfoBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder(
            int index) {
          return getDataInfoFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder(
            int index) {
          if (dataInfoBuilder_ == null) {
            return dataInfo_.get(index);  } else {
            return dataInfoBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder> 
             getDataInfoOrBuilderList() {
          if (dataInfoBuilder_ != null) {
            return dataInfoBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(dataInfo_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder addDataInfoBuilder() {
          return getDataInfoFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder addDataInfoBuilder(
            int index) {
          return getDataInfoFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder> 
             getDataInfoBuilderList() {
          return getDataInfoFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            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.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.DataInfo, eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder, eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder>(
                    dataInfo_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            dataInfo_ = null;
          }
          return dataInfoBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Result.Context)
      }
      
      static {
        defaultInstance = new Context(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.Context)
    }
    
    public interface InstanceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional .eu.dnetlib.data.proto.StringField license = 6;
      boolean hasLicense();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getLicense();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLicenseOrBuilder();
      
      // optional .eu.dnetlib.data.proto.Qualifier accessright = 3;
      boolean hasAccessright();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getAccessright();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getAccessrightOrBuilder();
      
      // optional .eu.dnetlib.data.proto.Qualifier instancetype = 4;
      boolean hasInstancetype();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getInstancetype();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getInstancetypeOrBuilder();
      
      // optional .eu.dnetlib.data.proto.KeyValue hostedby = 5;
      boolean hasHostedby();
      eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getHostedby();
      eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getHostedbyOrBuilder();
      
      // repeated string url = 9;
      java.util.List<String> getUrlList();
      int getUrlCount();
      String getUrl(int index);
      
      // optional string distributionlocation = 12;
      boolean hasDistributionlocation();
      String getDistributionlocation();
      
      // optional .eu.dnetlib.data.proto.KeyValue collectedfrom = 10;
      boolean hasCollectedfrom();
      eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getCollectedfrom();
      eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getCollectedfromOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 11;
      boolean hasDateofacceptance();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder();
    }
    public static final class Instance extends
        com.google.protobuf.GeneratedMessage
        implements InstanceOrBuilder {
      // Use Instance.newBuilder() to construct.
      private Instance(Builder builder) {
        super(builder);
      }
      private Instance(boolean noInit) {}
      
      private static final Instance defaultInstance;
      public static Instance getDefaultInstance() {
        return defaultInstance;
      }
      
      public Instance getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Instance_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Instance_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional .eu.dnetlib.data.proto.StringField license = 6;
      public static final int LICENSE_FIELD_NUMBER = 6;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField license_;
      public boolean hasLicense() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getLicense() {
        return license_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLicenseOrBuilder() {
        return license_;
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier accessright = 3;
      public static final int ACCESSRIGHT_FIELD_NUMBER = 3;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier accessright_;
      public boolean hasAccessright() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getAccessright() {
        return accessright_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getAccessrightOrBuilder() {
        return accessright_;
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier instancetype = 4;
      public static final int INSTANCETYPE_FIELD_NUMBER = 4;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier instancetype_;
      public boolean hasInstancetype() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getInstancetype() {
        return instancetype_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getInstancetypeOrBuilder() {
        return instancetype_;
      }
      
      // optional .eu.dnetlib.data.proto.KeyValue hostedby = 5;
      public static final int HOSTEDBY_FIELD_NUMBER = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.KeyValue hostedby_;
      public boolean hasHostedby() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getHostedby() {
        return hostedby_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getHostedbyOrBuilder() {
        return hostedby_;
      }
      
      // repeated string url = 9;
      public static final int URL_FIELD_NUMBER = 9;
      private com.google.protobuf.LazyStringList url_;
      public java.util.List<String>
          getUrlList() {
        return url_;
      }
      public int getUrlCount() {
        return url_.size();
      }
      public String getUrl(int index) {
        return url_.get(index);
      }
      
      // optional string distributionlocation = 12;
      public static final int DISTRIBUTIONLOCATION_FIELD_NUMBER = 12;
      private java.lang.Object distributionlocation_;
      public boolean hasDistributionlocation() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getDistributionlocation() {
        java.lang.Object ref = distributionlocation_;
        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)) {
            distributionlocation_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getDistributionlocationBytes() {
        java.lang.Object ref = distributionlocation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          distributionlocation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .eu.dnetlib.data.proto.KeyValue collectedfrom = 10;
      public static final int COLLECTEDFROM_FIELD_NUMBER = 10;
      private eu.dnetlib.data.proto.FieldTypeProtos.KeyValue collectedfrom_;
      public boolean hasCollectedfrom() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getCollectedfrom() {
        return collectedfrom_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getCollectedfromOrBuilder() {
        return collectedfrom_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 11;
      public static final int DATEOFACCEPTANCE_FIELD_NUMBER = 11;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField dateofacceptance_;
      public boolean hasDateofacceptance() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance() {
        return dateofacceptance_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder() {
        return dateofacceptance_;
      }
      
      private void initFields() {
        license_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        accessright_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        instancetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        hostedby_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
        url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        distributionlocation_ = "";
        collectedfrom_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
        dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (hasLicense()) {
          if (!getLicense().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasAccessright()) {
          if (!getAccessright().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasInstancetype()) {
          if (!getInstancetype().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasHostedby()) {
          if (!getHostedby().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasCollectedfrom()) {
          if (!getCollectedfrom().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDateofacceptance()) {
          if (!getDateofacceptance().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.writeMessage(3, accessright_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, instancetype_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(5, hostedby_);
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(6, license_);
        }
        for (int i = 0; i < url_.size(); i++) {
          output.writeBytes(9, url_.getByteString(i));
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeMessage(10, collectedfrom_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(11, dateofacceptance_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(12, getDistributionlocationBytes());
        }
        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
            .computeMessageSize(3, accessright_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, instancetype_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, hostedby_);
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, license_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < url_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(url_.getByteString(i));
          }
          size += dataSize;
          size += 1 * getUrlList().size();
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, collectedfrom_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, dateofacceptance_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(12, getDistributionlocationBytes());
        }
        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.ResultProtos.Result.Instance parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.Instance 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.ResultProtos.Result.Instance 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.ResultProtos.Result.InstanceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Instance_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_Instance_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.Instance.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getLicenseFieldBuilder();
            getAccessrightFieldBuilder();
            getInstancetypeFieldBuilder();
            getHostedbyFieldBuilder();
            getCollectedfromFieldBuilder();
            getDateofacceptanceFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          if (licenseBuilder_ == null) {
            license_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            licenseBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (accessrightBuilder_ == null) {
            accessright_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            accessrightBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (instancetypeBuilder_ == null) {
            instancetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            instancetypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (hostedbyBuilder_ == null) {
            hostedby_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
          } else {
            hostedbyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000010);
          distributionlocation_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          if (collectedfromBuilder_ == null) {
            collectedfrom_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
          } else {
            collectedfromBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            dateofacceptanceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Instance.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Instance getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.Instance.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Instance build() {
          eu.dnetlib.data.proto.ResultProtos.Result.Instance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.Instance buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.Instance result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.Instance buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.Instance result = new eu.dnetlib.data.proto.ResultProtos.Result.Instance(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (licenseBuilder_ == null) {
            result.license_ = license_;
          } else {
            result.license_ = licenseBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (accessrightBuilder_ == null) {
            result.accessright_ = accessright_;
          } else {
            result.accessright_ = accessrightBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (instancetypeBuilder_ == null) {
            result.instancetype_ = instancetype_;
          } else {
            result.instancetype_ = instancetypeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (hostedbyBuilder_ == null) {
            result.hostedby_ = hostedby_;
          } else {
            result.hostedby_ = hostedbyBuilder_.build();
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            url_ = new com.google.protobuf.UnmodifiableLazyStringList(
                url_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.url_ = url_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000010;
          }
          result.distributionlocation_ = distributionlocation_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000020;
          }
          if (collectedfromBuilder_ == null) {
            result.collectedfrom_ = collectedfrom_;
          } else {
            result.collectedfrom_ = collectedfromBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000040;
          }
          if (dateofacceptanceBuilder_ == null) {
            result.dateofacceptance_ = dateofacceptance_;
          } else {
            result.dateofacceptance_ = dateofacceptanceBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof eu.dnetlib.data.proto.ResultProtos.Result.Instance) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.Instance)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.Instance other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.Instance.getDefaultInstance()) return this;
          if (other.hasLicense()) {
            mergeLicense(other.getLicense());
          }
          if (other.hasAccessright()) {
            mergeAccessright(other.getAccessright());
          }
          if (other.hasInstancetype()) {
            mergeInstancetype(other.getInstancetype());
          }
          if (other.hasHostedby()) {
            mergeHostedby(other.getHostedby());
          }
          if (!other.url_.isEmpty()) {
            if (url_.isEmpty()) {
              url_ = other.url_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureUrlIsMutable();
              url_.addAll(other.url_);
            }
            onChanged();
          }
          if (other.hasDistributionlocation()) {
            setDistributionlocation(other.getDistributionlocation());
          }
          if (other.hasCollectedfrom()) {
            mergeCollectedfrom(other.getCollectedfrom());
          }
          if (other.hasDateofacceptance()) {
            mergeDateofacceptance(other.getDateofacceptance());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (hasLicense()) {
            if (!getLicense().isInitialized()) {
              
              return false;
            }
          }
          if (hasAccessright()) {
            if (!getAccessright().isInitialized()) {
              
              return false;
            }
          }
          if (hasInstancetype()) {
            if (!getInstancetype().isInitialized()) {
              
              return false;
            }
          }
          if (hasHostedby()) {
            if (!getHostedby().isInitialized()) {
              
              return false;
            }
          }
          if (hasCollectedfrom()) {
            if (!getCollectedfrom().isInitialized()) {
              
              return false;
            }
          }
          if (hasDateofacceptance()) {
            if (!getDateofacceptance().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 26: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasAccessright()) {
                  subBuilder.mergeFrom(getAccessright());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setAccessright(subBuilder.buildPartial());
                break;
              }
              case 34: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasInstancetype()) {
                  subBuilder.mergeFrom(getInstancetype());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setInstancetype(subBuilder.buildPartial());
                break;
              }
              case 42: {
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder();
                if (hasHostedby()) {
                  subBuilder.mergeFrom(getHostedby());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setHostedby(subBuilder.buildPartial());
                break;
              }
              case 50: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasLicense()) {
                  subBuilder.mergeFrom(getLicense());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setLicense(subBuilder.buildPartial());
                break;
              }
              case 74: {
                ensureUrlIsMutable();
                url_.add(input.readBytes());
                break;
              }
              case 82: {
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder();
                if (hasCollectedfrom()) {
                  subBuilder.mergeFrom(getCollectedfrom());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setCollectedfrom(subBuilder.buildPartial());
                break;
              }
              case 90: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasDateofacceptance()) {
                  subBuilder.mergeFrom(getDateofacceptance());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDateofacceptance(subBuilder.buildPartial());
                break;
              }
              case 98: {
                bitField0_ |= 0x00000020;
                distributionlocation_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional .eu.dnetlib.data.proto.StringField license = 6;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField license_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> licenseBuilder_;
        public boolean hasLicense() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getLicense() {
          if (licenseBuilder_ == null) {
            return license_;
          } else {
            return licenseBuilder_.getMessage();
          }
        }
        public Builder setLicense(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (licenseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            license_ = value;
            onChanged();
          } else {
            licenseBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder setLicense(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (licenseBuilder_ == null) {
            license_ = builderForValue.build();
            onChanged();
          } else {
            licenseBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder mergeLicense(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (licenseBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                license_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              license_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(license_).mergeFrom(value).buildPartial();
            } else {
              license_ = value;
            }
            onChanged();
          } else {
            licenseBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder clearLicense() {
          if (licenseBuilder_ == null) {
            license_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            licenseBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getLicenseBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getLicenseFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getLicenseOrBuilder() {
          if (licenseBuilder_ != null) {
            return licenseBuilder_.getMessageOrBuilder();
          } else {
            return license_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getLicenseFieldBuilder() {
          if (licenseBuilder_ == null) {
            licenseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    license_,
                    getParentForChildren(),
                    isClean());
            license_ = null;
          }
          return licenseBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier accessright = 3;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier accessright_ = 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> accessrightBuilder_;
        public boolean hasAccessright() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getAccessright() {
          if (accessrightBuilder_ == null) {
            return accessright_;
          } else {
            return accessrightBuilder_.getMessage();
          }
        }
        public Builder setAccessright(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (accessrightBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            accessright_ = value;
            onChanged();
          } else {
            accessrightBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder setAccessright(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (accessrightBuilder_ == null) {
            accessright_ = builderForValue.build();
            onChanged();
          } else {
            accessrightBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder mergeAccessright(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (accessrightBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                accessright_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              accessright_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(accessright_).mergeFrom(value).buildPartial();
            } else {
              accessright_ = value;
            }
            onChanged();
          } else {
            accessrightBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder clearAccessright() {
          if (accessrightBuilder_ == null) {
            accessright_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            accessrightBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getAccessrightBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getAccessrightFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getAccessrightOrBuilder() {
          if (accessrightBuilder_ != null) {
            return accessrightBuilder_.getMessageOrBuilder();
          } else {
            return accessright_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getAccessrightFieldBuilder() {
          if (accessrightBuilder_ == null) {
            accessrightBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    accessright_,
                    getParentForChildren(),
                    isClean());
            accessright_ = null;
          }
          return accessrightBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier instancetype = 4;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier instancetype_ = 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> instancetypeBuilder_;
        public boolean hasInstancetype() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getInstancetype() {
          if (instancetypeBuilder_ == null) {
            return instancetype_;
          } else {
            return instancetypeBuilder_.getMessage();
          }
        }
        public Builder setInstancetype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (instancetypeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            instancetype_ = value;
            onChanged();
          } else {
            instancetypeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setInstancetype(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (instancetypeBuilder_ == null) {
            instancetype_ = builderForValue.build();
            onChanged();
          } else {
            instancetypeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeInstancetype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (instancetypeBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                instancetype_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              instancetype_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(instancetype_).mergeFrom(value).buildPartial();
            } else {
              instancetype_ = value;
            }
            onChanged();
          } else {
            instancetypeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearInstancetype() {
          if (instancetypeBuilder_ == null) {
            instancetype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            instancetypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getInstancetypeBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getInstancetypeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getInstancetypeOrBuilder() {
          if (instancetypeBuilder_ != null) {
            return instancetypeBuilder_.getMessageOrBuilder();
          } else {
            return instancetype_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getInstancetypeFieldBuilder() {
          if (instancetypeBuilder_ == null) {
            instancetypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    instancetype_,
                    getParentForChildren(),
                    isClean());
            instancetype_ = null;
          }
          return instancetypeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.KeyValue hostedby = 5;
        private eu.dnetlib.data.proto.FieldTypeProtos.KeyValue hostedby_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> hostedbyBuilder_;
        public boolean hasHostedby() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getHostedby() {
          if (hostedbyBuilder_ == null) {
            return hostedby_;
          } else {
            return hostedbyBuilder_.getMessage();
          }
        }
        public Builder setHostedby(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
          if (hostedbyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            hostedby_ = value;
            onChanged();
          } else {
            hostedbyBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setHostedby(
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder builderForValue) {
          if (hostedbyBuilder_ == null) {
            hostedby_ = builderForValue.build();
            onChanged();
          } else {
            hostedbyBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeHostedby(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
          if (hostedbyBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                hostedby_ != eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance()) {
              hostedby_ =
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder(hostedby_).mergeFrom(value).buildPartial();
            } else {
              hostedby_ = value;
            }
            onChanged();
          } else {
            hostedbyBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearHostedby() {
          if (hostedbyBuilder_ == null) {
            hostedby_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
            onChanged();
          } else {
            hostedbyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder getHostedbyBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getHostedbyFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getHostedbyOrBuilder() {
          if (hostedbyBuilder_ != null) {
            return hostedbyBuilder_.getMessageOrBuilder();
          } else {
            return hostedby_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
            getHostedbyFieldBuilder() {
          if (hostedbyBuilder_ == null) {
            hostedbyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder>(
                    hostedby_,
                    getParentForChildren(),
                    isClean());
            hostedby_ = null;
          }
          return hostedbyBuilder_;
        }
        
        // repeated string url = 9;
        private com.google.protobuf.LazyStringList url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureUrlIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            url_ = new com.google.protobuf.LazyStringArrayList(url_);
            bitField0_ |= 0x00000010;
           }
        }
        public java.util.List<String>
            getUrlList() {
          return java.util.Collections.unmodifiableList(url_);
        }
        public int getUrlCount() {
          return url_.size();
        }
        public String getUrl(int index) {
          return url_.get(index);
        }
        public Builder setUrl(
            int index, String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
          url_.set(index, value);
          onChanged();
          return this;
        }
        public Builder addUrl(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
          url_.add(value);
          onChanged();
          return this;
        }
        public Builder addAllUrl(
            java.lang.Iterable<String> values) {
          ensureUrlIsMutable();
          super.addAll(values, url_);
          onChanged();
          return this;
        }
        public Builder clearUrl() {
          url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }
        void addUrl(com.google.protobuf.ByteString value) {
          ensureUrlIsMutable();
          url_.add(value);
          onChanged();
        }
        
        // optional string distributionlocation = 12;
        private java.lang.Object distributionlocation_ = "";
        public boolean hasDistributionlocation() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getDistributionlocation() {
          java.lang.Object ref = distributionlocation_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            distributionlocation_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setDistributionlocation(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
          distributionlocation_ = value;
          onChanged();
          return this;
        }
        public Builder clearDistributionlocation() {
          bitField0_ = (bitField0_ & ~0x00000020);
          distributionlocation_ = getDefaultInstance().getDistributionlocation();
          onChanged();
          return this;
        }
        void setDistributionlocation(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000020;
          distributionlocation_ = value;
          onChanged();
        }
        
        // optional .eu.dnetlib.data.proto.KeyValue collectedfrom = 10;
        private eu.dnetlib.data.proto.FieldTypeProtos.KeyValue collectedfrom_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> collectedfromBuilder_;
        public boolean hasCollectedfrom() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue getCollectedfrom() {
          if (collectedfromBuilder_ == null) {
            return collectedfrom_;
          } else {
            return collectedfromBuilder_.getMessage();
          }
        }
        public Builder setCollectedfrom(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
          if (collectedfromBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collectedfrom_ = value;
            onChanged();
          } else {
            collectedfromBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder setCollectedfrom(
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder builderForValue) {
          if (collectedfromBuilder_ == null) {
            collectedfrom_ = builderForValue.build();
            onChanged();
          } else {
            collectedfromBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder mergeCollectedfrom(eu.dnetlib.data.proto.FieldTypeProtos.KeyValue value) {
          if (collectedfromBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040) &&
                collectedfrom_ != eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance()) {
              collectedfrom_ =
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.newBuilder(collectedfrom_).mergeFrom(value).buildPartial();
            } else {
              collectedfrom_ = value;
            }
            onChanged();
          } else {
            collectedfromBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder clearCollectedfrom() {
          if (collectedfromBuilder_ == null) {
            collectedfrom_ = eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.getDefaultInstance();
            onChanged();
          } else {
            collectedfromBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder getCollectedfromBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getCollectedfromFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder getCollectedfromOrBuilder() {
          if (collectedfromBuilder_ != null) {
            return collectedfromBuilder_.getMessageOrBuilder();
          } else {
            return collectedfrom_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder> 
            getCollectedfromFieldBuilder() {
          if (collectedfromBuilder_ == null) {
            collectedfromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.KeyValue, eu.dnetlib.data.proto.FieldTypeProtos.KeyValue.Builder, eu.dnetlib.data.proto.FieldTypeProtos.KeyValueOrBuilder>(
                    collectedfrom_,
                    getParentForChildren(),
                    isClean());
            collectedfrom_ = null;
          }
          return collectedfromBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField dateofacceptance = 11;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> dateofacceptanceBuilder_;
        public boolean hasDateofacceptance() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDateofacceptance() {
          if (dateofacceptanceBuilder_ == null) {
            return dateofacceptance_;
          } else {
            return dateofacceptanceBuilder_.getMessage();
          }
        }
        public Builder setDateofacceptance(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (dateofacceptanceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            dateofacceptance_ = value;
            onChanged();
          } else {
            dateofacceptanceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder setDateofacceptance(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = builderForValue.build();
            onChanged();
          } else {
            dateofacceptanceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder mergeDateofacceptance(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (dateofacceptanceBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                dateofacceptance_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              dateofacceptance_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(dateofacceptance_).mergeFrom(value).buildPartial();
            } else {
              dateofacceptance_ = value;
            }
            onChanged();
          } else {
            dateofacceptanceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder clearDateofacceptance() {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptance_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            dateofacceptanceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDateofacceptanceBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getDateofacceptanceFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDateofacceptanceOrBuilder() {
          if (dateofacceptanceBuilder_ != null) {
            return dateofacceptanceBuilder_.getMessageOrBuilder();
          } else {
            return dateofacceptance_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getDateofacceptanceFieldBuilder() {
          if (dateofacceptanceBuilder_ == null) {
            dateofacceptanceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    dateofacceptance_,
                    getParentForChildren(),
                    isClean());
            dateofacceptance_ = null;
          }
          return dateofacceptanceBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Result.Instance)
      }
      
      static {
        defaultInstance = new Instance(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.Instance)
    }
    
    public interface ExternalReferenceOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional string sitename = 1;
      boolean hasSitename();
      String getSitename();
      
      // optional string label = 2;
      boolean hasLabel();
      String getLabel();
      
      // optional string url = 3;
      boolean hasUrl();
      String getUrl();
      
      // optional string description = 4;
      boolean hasDescription();
      String getDescription();
      
      // optional .eu.dnetlib.data.proto.Qualifier qualifier = 5;
      boolean hasQualifier();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getQualifier();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getQualifierOrBuilder();
      
      // optional string refidentifier = 6;
      boolean hasRefidentifier();
      String getRefidentifier();
      
      // optional string query = 7;
      boolean hasQuery();
      String getQuery();
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 8;
      boolean hasDataInfo();
      eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo();
      eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder();
    }
    public static final class ExternalReference extends
        com.google.protobuf.GeneratedMessage
        implements ExternalReferenceOrBuilder {
      // Use ExternalReference.newBuilder() to construct.
      private ExternalReference(Builder builder) {
        super(builder);
      }
      private ExternalReference(boolean noInit) {}
      
      private static final ExternalReference defaultInstance;
      public static ExternalReference getDefaultInstance() {
        return defaultInstance;
      }
      
      public ExternalReference getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_ExternalReference_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_ExternalReference_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional string sitename = 1;
      public static final int SITENAME_FIELD_NUMBER = 1;
      private java.lang.Object sitename_;
      public boolean hasSitename() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getSitename() {
        java.lang.Object ref = sitename_;
        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)) {
            sitename_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSitenameBytes() {
        java.lang.Object ref = sitename_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sitename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string label = 2;
      public static final int LABEL_FIELD_NUMBER = 2;
      private java.lang.Object label_;
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getLabel() {
        java.lang.Object ref = label_;
        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)) {
            label_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string url = 3;
      public static final int URL_FIELD_NUMBER = 3;
      private java.lang.Object url_;
      public boolean hasUrl() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getUrl() {
        java.lang.Object ref = url_;
        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)) {
            url_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string description = 4;
      public static final int DESCRIPTION_FIELD_NUMBER = 4;
      private java.lang.Object description_;
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getDescription() {
        java.lang.Object ref = description_;
        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)) {
            description_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier qualifier = 5;
      public static final int QUALIFIER_FIELD_NUMBER = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier qualifier_;
      public boolean hasQualifier() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getQualifier() {
        return qualifier_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getQualifierOrBuilder() {
        return qualifier_;
      }
      
      // optional string refidentifier = 6;
      public static final int REFIDENTIFIER_FIELD_NUMBER = 6;
      private java.lang.Object refidentifier_;
      public boolean hasRefidentifier() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public String getRefidentifier() {
        java.lang.Object ref = refidentifier_;
        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)) {
            refidentifier_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getRefidentifierBytes() {
        java.lang.Object ref = refidentifier_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          refidentifier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string query = 7;
      public static final int QUERY_FIELD_NUMBER = 7;
      private java.lang.Object query_;
      public boolean hasQuery() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public String getQuery() {
        java.lang.Object ref = query_;
        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)) {
            query_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 8;
      public static final int DATAINFO_FIELD_NUMBER = 8;
      private eu.dnetlib.data.proto.FieldTypeProtos.DataInfo dataInfo_;
      public boolean hasDataInfo() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo getDataInfo() {
        return dataInfo_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.DataInfoOrBuilder getDataInfoOrBuilder() {
        return dataInfo_;
      }
      
      private void initFields() {
        sitename_ = "";
        label_ = "";
        url_ = "";
        description_ = "";
        qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        refidentifier_ = "";
        query_ = "";
        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 (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, getSitenameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getLabelBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getUrlBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getDescriptionBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(5, qualifier_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBytes(6, getRefidentifierBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeBytes(7, getQueryBytes());
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeMessage(8, 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, getSitenameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getLabelBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getUrlBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getDescriptionBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, qualifier_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(6, getRefidentifierBytes());
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(7, getQueryBytes());
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, 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.ResultProtos.Result.ExternalReference parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReference 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.ResultProtos.Result.ExternalReferenceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_ExternalReference_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_ExternalReference_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.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();
          sitename_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          label_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          url_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          description_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          if (qualifierBuilder_ == null) {
            qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            qualifierBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          refidentifier_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          query_ = "";
          bitField0_ = (bitField0_ & ~0x00000040);
          if (dataInfoBuilder_ == null) {
            dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
          } else {
            dataInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference build() {
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference result = new eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.sitename_ = sitename_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.label_ = label_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.url_ = url_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.description_ = description_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          if (qualifierBuilder_ == null) {
            result.qualifier_ = qualifier_;
          } else {
            result.qualifier_ = qualifierBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.refidentifier_ = refidentifier_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.query_ = query_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          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.ResultProtos.Result.ExternalReference) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.getDefaultInstance()) return this;
          if (other.hasSitename()) {
            setSitename(other.getSitename());
          }
          if (other.hasLabel()) {
            setLabel(other.getLabel());
          }
          if (other.hasUrl()) {
            setUrl(other.getUrl());
          }
          if (other.hasDescription()) {
            setDescription(other.getDescription());
          }
          if (other.hasQualifier()) {
            mergeQualifier(other.getQualifier());
          }
          if (other.hasRefidentifier()) {
            setRefidentifier(other.getRefidentifier());
          }
          if (other.hasQuery()) {
            setQuery(other.getQuery());
          }
          if (other.hasDataInfo()) {
            mergeDataInfo(other.getDataInfo());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          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;
                sitename_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                label_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                url_ = input.readBytes();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                description_ = input.readBytes();
                break;
              }
              case 42: {
                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 50: {
                bitField0_ |= 0x00000020;
                refidentifier_ = input.readBytes();
                break;
              }
              case 58: {
                bitField0_ |= 0x00000040;
                query_ = input.readBytes();
                break;
              }
              case 66: {
                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 sitename = 1;
        private java.lang.Object sitename_ = "";
        public boolean hasSitename() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getSitename() {
          java.lang.Object ref = sitename_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sitename_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSitename(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          sitename_ = value;
          onChanged();
          return this;
        }
        public Builder clearSitename() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sitename_ = getDefaultInstance().getSitename();
          onChanged();
          return this;
        }
        void setSitename(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          sitename_ = value;
          onChanged();
        }
        
        // optional string label = 2;
        private java.lang.Object label_ = "";
        public boolean hasLabel() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getLabel() {
          java.lang.Object ref = label_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            label_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setLabel(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          label_ = value;
          onChanged();
          return this;
        }
        public Builder clearLabel() {
          bitField0_ = (bitField0_ & ~0x00000002);
          label_ = getDefaultInstance().getLabel();
          onChanged();
          return this;
        }
        void setLabel(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          label_ = value;
          onChanged();
        }
        
        // optional string url = 3;
        private java.lang.Object url_ = "";
        public boolean hasUrl() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getUrl() {
          java.lang.Object ref = url_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            url_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setUrl(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          url_ = value;
          onChanged();
          return this;
        }
        public Builder clearUrl() {
          bitField0_ = (bitField0_ & ~0x00000004);
          url_ = getDefaultInstance().getUrl();
          onChanged();
          return this;
        }
        void setUrl(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          url_ = value;
          onChanged();
        }
        
        // optional string description = 4;
        private java.lang.Object description_ = "";
        public boolean hasDescription() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getDescription() {
          java.lang.Object ref = description_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            description_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setDescription(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          description_ = value;
          onChanged();
          return this;
        }
        public Builder clearDescription() {
          bitField0_ = (bitField0_ & ~0x00000008);
          description_ = getDefaultInstance().getDescription();
          onChanged();
          return this;
        }
        void setDescription(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          description_ = value;
          onChanged();
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier qualifier = 5;
        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_ & 0x00000010) == 0x00000010);
        }
        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_ |= 0x00000010;
          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_ |= 0x00000010;
          return this;
        }
        public Builder mergeQualifier(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (qualifierBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                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_ |= 0x00000010;
          return this;
        }
        public Builder clearQualifier() {
          if (qualifierBuilder_ == null) {
            qualifier_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            qualifierBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getQualifierBuilder() {
          bitField0_ |= 0x00000010;
          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 string refidentifier = 6;
        private java.lang.Object refidentifier_ = "";
        public boolean hasRefidentifier() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getRefidentifier() {
          java.lang.Object ref = refidentifier_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            refidentifier_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setRefidentifier(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
          refidentifier_ = value;
          onChanged();
          return this;
        }
        public Builder clearRefidentifier() {
          bitField0_ = (bitField0_ & ~0x00000020);
          refidentifier_ = getDefaultInstance().getRefidentifier();
          onChanged();
          return this;
        }
        void setRefidentifier(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000020;
          refidentifier_ = value;
          onChanged();
        }
        
        // optional string query = 7;
        private java.lang.Object query_ = "";
        public boolean hasQuery() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public String getQuery() {
          java.lang.Object ref = query_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            query_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setQuery(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
          query_ = value;
          onChanged();
          return this;
        }
        public Builder clearQuery() {
          bitField0_ = (bitField0_ & ~0x00000040);
          query_ = getDefaultInstance().getQuery();
          onChanged();
          return this;
        }
        void setQuery(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000040;
          query_ = value;
          onChanged();
        }
        
        // optional .eu.dnetlib.data.proto.DataInfo dataInfo = 8;
        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_ & 0x00000080) == 0x00000080);
        }
        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_ |= 0x00000080;
          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_ |= 0x00000080;
          return this;
        }
        public Builder mergeDataInfo(eu.dnetlib.data.proto.FieldTypeProtos.DataInfo value) {
          if (dataInfoBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                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_ |= 0x00000080;
          return this;
        }
        public Builder clearDataInfo() {
          if (dataInfoBuilder_ == null) {
            dataInfo_ = eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.getDefaultInstance();
            onChanged();
          } else {
            dataInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.DataInfo.Builder getDataInfoBuilder() {
          bitField0_ |= 0x00000080;
          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.Result.ExternalReference)
      }
      
      static {
        defaultInstance = new ExternalReference(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.ExternalReference)
    }
    
    public interface GeoLocationOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional string point = 1;
      boolean hasPoint();
      String getPoint();
      
      // optional string box = 2;
      boolean hasBox();
      String getBox();
      
      // optional string place = 3;
      boolean hasPlace();
      String getPlace();
    }
    public static final class GeoLocation extends
        com.google.protobuf.GeneratedMessage
        implements GeoLocationOrBuilder {
      // Use GeoLocation.newBuilder() to construct.
      private GeoLocation(Builder builder) {
        super(builder);
      }
      private GeoLocation(boolean noInit) {}
      
      private static final GeoLocation defaultInstance;
      public static GeoLocation getDefaultInstance() {
        return defaultInstance;
      }
      
      public GeoLocation getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_GeoLocation_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_GeoLocation_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional string point = 1;
      public static final int POINT_FIELD_NUMBER = 1;
      private java.lang.Object point_;
      public boolean hasPoint() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getPoint() {
        java.lang.Object ref = point_;
        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)) {
            point_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getPointBytes() {
        java.lang.Object ref = point_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          point_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string box = 2;
      public static final int BOX_FIELD_NUMBER = 2;
      private java.lang.Object box_;
      public boolean hasBox() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getBox() {
        java.lang.Object ref = box_;
        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)) {
            box_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getBoxBytes() {
        java.lang.Object ref = box_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          box_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string place = 3;
      public static final int PLACE_FIELD_NUMBER = 3;
      private java.lang.Object place_;
      public boolean hasPlace() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getPlace() {
        java.lang.Object ref = place_;
        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)) {
            place_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getPlaceBytes() {
        java.lang.Object ref = place_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          place_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        point_ = "";
        box_ = "";
        place_ = "";
      }
      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, getPointBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getBoxBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getPlaceBytes());
        }
        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, getPointBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getBoxBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getPlaceBytes());
        }
        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.ResultProtos.Result.GeoLocation parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocation 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.ResultProtos.Result.GeoLocationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_GeoLocation_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_GeoLocation_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.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();
          point_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          box_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          place_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation build() {
          eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation buildPartial() {
          eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation result = new eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.point_ = point_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.box_ = box_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.place_ = place_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation) {
            return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation other) {
          if (other == eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.getDefaultInstance()) return this;
          if (other.hasPoint()) {
            setPoint(other.getPoint());
          }
          if (other.hasBox()) {
            setBox(other.getBox());
          }
          if (other.hasPlace()) {
            setPlace(other.getPlace());
          }
          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;
                point_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                box_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                place_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional string point = 1;
        private java.lang.Object point_ = "";
        public boolean hasPoint() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getPoint() {
          java.lang.Object ref = point_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            point_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setPoint(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          point_ = value;
          onChanged();
          return this;
        }
        public Builder clearPoint() {
          bitField0_ = (bitField0_ & ~0x00000001);
          point_ = getDefaultInstance().getPoint();
          onChanged();
          return this;
        }
        void setPoint(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          point_ = value;
          onChanged();
        }
        
        // optional string box = 2;
        private java.lang.Object box_ = "";
        public boolean hasBox() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getBox() {
          java.lang.Object ref = box_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            box_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setBox(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          box_ = value;
          onChanged();
          return this;
        }
        public Builder clearBox() {
          bitField0_ = (bitField0_ & ~0x00000002);
          box_ = getDefaultInstance().getBox();
          onChanged();
          return this;
        }
        void setBox(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          box_ = value;
          onChanged();
        }
        
        // optional string place = 3;
        private java.lang.Object place_ = "";
        public boolean hasPlace() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getPlace() {
          java.lang.Object ref = place_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            place_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setPlace(String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          place_ = value;
          onChanged();
          return this;
        }
        public Builder clearPlace() {
          bitField0_ = (bitField0_ & ~0x00000004);
          place_ = getDefaultInstance().getPlace();
          onChanged();
          return this;
        }
        void setPlace(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          place_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Result.GeoLocation)
      }
      
      static {
        defaultInstance = new GeoLocation(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result.GeoLocation)
    }
    
    private int bitField0_;
    // optional .eu.dnetlib.data.proto.Result.Metadata metadata = 2;
    public static final int METADATA_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.ResultProtos.Result.Metadata metadata_;
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.Metadata getMetadata() {
      return metadata_;
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder getMetadataOrBuilder() {
      return metadata_;
    }
    
    // repeated .eu.dnetlib.data.proto.Result.Instance instance = 6;
    public static final int INSTANCE_FIELD_NUMBER = 6;
    private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance> instance_;
    public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance> getInstanceList() {
      return instance_;
    }
    public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder> 
        getInstanceOrBuilderList() {
      return instance_;
    }
    public int getInstanceCount() {
      return instance_.size();
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.Instance getInstance(int index) {
      return instance_.get(index);
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder getInstanceOrBuilder(
        int index) {
      return instance_.get(index);
    }
    
    // repeated .eu.dnetlib.data.proto.Result.ExternalReference externalReference = 7;
    public static final int EXTERNALREFERENCE_FIELD_NUMBER = 7;
    private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> externalReference_;
    public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> getExternalReferenceList() {
      return externalReference_;
    }
    public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder> 
        getExternalReferenceOrBuilderList() {
      return externalReference_;
    }
    public int getExternalReferenceCount() {
      return externalReference_.size();
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference getExternalReference(int index) {
      return externalReference_.get(index);
    }
    public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder getExternalReferenceOrBuilder(
        int index) {
      return externalReference_.get(index);
    }
    
    private void initFields() {
      metadata_ = eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance();
      instance_ = java.util.Collections.emptyList();
      externalReference_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasMetadata()) {
        if (!getMetadata().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getInstanceCount(); i++) {
        if (!getInstance(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getExternalReferenceCount(); i++) {
        if (!getExternalReference(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.writeMessage(2, metadata_);
      }
      for (int i = 0; i < instance_.size(); i++) {
        output.writeMessage(6, instance_.get(i));
      }
      for (int i = 0; i < externalReference_.size(); i++) {
        output.writeMessage(7, externalReference_.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
          .computeMessageSize(2, metadata_);
      }
      for (int i = 0; i < instance_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, instance_.get(i));
      }
      for (int i = 0; i < externalReference_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, externalReference_.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.ResultProtos.Result parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.ResultProtos.Result 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.ResultProtos.Result parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.ResultProtos.Result 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.ResultProtos.Result parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.ResultProtos.Result 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.ResultProtos.Result 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.ResultProtos.Result 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.ResultProtos.Result parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.ResultProtos.Result 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.ResultProtos.Result 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.ResultProtos.ResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ResultProtos.internal_static_eu_dnetlib_data_proto_Result_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.ResultProtos.Result.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getInstanceFieldBuilder();
          getExternalReferenceFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (instanceBuilder_ == null) {
          instance_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          instanceBuilder_.clear();
        }
        if (externalReferenceBuilder_ == null) {
          externalReference_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          externalReferenceBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.ResultProtos.Result.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.ResultProtos.Result getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.ResultProtos.Result.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.ResultProtos.Result build() {
        eu.dnetlib.data.proto.ResultProtos.Result result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.ResultProtos.Result buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.ResultProtos.Result result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.ResultProtos.Result buildPartial() {
        eu.dnetlib.data.proto.ResultProtos.Result result = new eu.dnetlib.data.proto.ResultProtos.Result(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (instanceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            instance_ = java.util.Collections.unmodifiableList(instance_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.instance_ = instance_;
        } else {
          result.instance_ = instanceBuilder_.build();
        }
        if (externalReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            externalReference_ = java.util.Collections.unmodifiableList(externalReference_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.externalReference_ = externalReference_;
        } else {
          result.externalReference_ = externalReferenceBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.ResultProtos.Result) {
          return mergeFrom((eu.dnetlib.data.proto.ResultProtos.Result)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.ResultProtos.Result other) {
        if (other == eu.dnetlib.data.proto.ResultProtos.Result.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (instanceBuilder_ == null) {
          if (!other.instance_.isEmpty()) {
            if (instance_.isEmpty()) {
              instance_ = other.instance_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureInstanceIsMutable();
              instance_.addAll(other.instance_);
            }
            onChanged();
          }
        } else {
          if (!other.instance_.isEmpty()) {
            if (instanceBuilder_.isEmpty()) {
              instanceBuilder_.dispose();
              instanceBuilder_ = null;
              instance_ = other.instance_;
              bitField0_ = (bitField0_ & ~0x00000002);
              instanceBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getInstanceFieldBuilder() : null;
            } else {
              instanceBuilder_.addAllMessages(other.instance_);
            }
          }
        }
        if (externalReferenceBuilder_ == null) {
          if (!other.externalReference_.isEmpty()) {
            if (externalReference_.isEmpty()) {
              externalReference_ = other.externalReference_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureExternalReferenceIsMutable();
              externalReference_.addAll(other.externalReference_);
            }
            onChanged();
          }
        } else {
          if (!other.externalReference_.isEmpty()) {
            if (externalReferenceBuilder_.isEmpty()) {
              externalReferenceBuilder_.dispose();
              externalReferenceBuilder_ = null;
              externalReference_ = other.externalReference_;
              bitField0_ = (bitField0_ & ~0x00000004);
              externalReferenceBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getExternalReferenceFieldBuilder() : null;
            } else {
              externalReferenceBuilder_.addAllMessages(other.externalReference_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasMetadata()) {
          if (!getMetadata().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getInstanceCount(); i++) {
          if (!getInstance(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getExternalReferenceCount(); i++) {
          if (!getExternalReference(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 18: {
              eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.Metadata.newBuilder();
              if (hasMetadata()) {
                subBuilder.mergeFrom(getMetadata());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMetadata(subBuilder.buildPartial());
              break;
            }
            case 50: {
              eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.Instance.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addInstance(subBuilder.buildPartial());
              break;
            }
            case 58: {
              eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder subBuilder = eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addExternalReference(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .eu.dnetlib.data.proto.Result.Metadata metadata = 2;
      private eu.dnetlib.data.proto.ResultProtos.Result.Metadata metadata_ = eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata, eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder, eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder> metadataBuilder_;
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Metadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      public Builder setMetadata(eu.dnetlib.data.proto.ResultProtos.Result.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder setMetadata(
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder mergeMetadata(eu.dnetlib.data.proto.ResultProtos.Result.Metadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance()) {
            metadata_ =
              eu.dnetlib.data.proto.ResultProtos.Result.Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = eu.dnetlib.data.proto.ResultProtos.Result.Metadata.getDefaultInstance();
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.Metadata, eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder, eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.ResultProtos.Result.Metadata, eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder, eu.dnetlib.data.proto.ResultProtos.Result.MetadataOrBuilder>(
                  metadata_,
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }
      
      // repeated .eu.dnetlib.data.proto.Result.Instance instance = 6;
      private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance> instance_ =
        java.util.Collections.emptyList();
      private void ensureInstanceIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          instance_ = new java.util.ArrayList<eu.dnetlib.data.proto.ResultProtos.Result.Instance>(instance_);
          bitField0_ |= 0x00000002;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.Instance, eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder, eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder> instanceBuilder_;
      
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance> getInstanceList() {
        if (instanceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(instance_);
        } else {
          return instanceBuilder_.getMessageList();
        }
      }
      public int getInstanceCount() {
        if (instanceBuilder_ == null) {
          return instance_.size();
        } else {
          return instanceBuilder_.getCount();
        }
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Instance getInstance(int index) {
        if (instanceBuilder_ == null) {
          return instance_.get(index);
        } else {
          return instanceBuilder_.getMessage(index);
        }
      }
      public Builder setInstance(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstanceIsMutable();
          instance_.set(index, value);
          onChanged();
        } else {
          instanceBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setInstance(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          ensureInstanceIsMutable();
          instance_.set(index, builderForValue.build());
          onChanged();
        } else {
          instanceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addInstance(eu.dnetlib.data.proto.ResultProtos.Result.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstanceIsMutable();
          instance_.add(value);
          onChanged();
        } else {
          instanceBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addInstance(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.Instance value) {
        if (instanceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstanceIsMutable();
          instance_.add(index, value);
          onChanged();
        } else {
          instanceBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addInstance(
          eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          ensureInstanceIsMutable();
          instance_.add(builderForValue.build());
          onChanged();
        } else {
          instanceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addInstance(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder builderForValue) {
        if (instanceBuilder_ == null) {
          ensureInstanceIsMutable();
          instance_.add(index, builderForValue.build());
          onChanged();
        } else {
          instanceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllInstance(
          java.lang.Iterable<? extends eu.dnetlib.data.proto.ResultProtos.Result.Instance> values) {
        if (instanceBuilder_ == null) {
          ensureInstanceIsMutable();
          super.addAll(values, instance_);
          onChanged();
        } else {
          instanceBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearInstance() {
        if (instanceBuilder_ == null) {
          instance_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          instanceBuilder_.clear();
        }
        return this;
      }
      public Builder removeInstance(int index) {
        if (instanceBuilder_ == null) {
          ensureInstanceIsMutable();
          instance_.remove(index);
          onChanged();
        } else {
          instanceBuilder_.remove(index);
        }
        return this;
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder getInstanceBuilder(
          int index) {
        return getInstanceFieldBuilder().getBuilder(index);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder getInstanceOrBuilder(
          int index) {
        if (instanceBuilder_ == null) {
          return instance_.get(index);  } else {
          return instanceBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder> 
           getInstanceOrBuilderList() {
        if (instanceBuilder_ != null) {
          return instanceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(instance_);
        }
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder addInstanceBuilder() {
        return getInstanceFieldBuilder().addBuilder(
            eu.dnetlib.data.proto.ResultProtos.Result.Instance.getDefaultInstance());
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder addInstanceBuilder(
          int index) {
        return getInstanceFieldBuilder().addBuilder(
            index, eu.dnetlib.data.proto.ResultProtos.Result.Instance.getDefaultInstance());
      }
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder> 
           getInstanceBuilderList() {
        return getInstanceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.Instance, eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder, eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder> 
          getInstanceFieldBuilder() {
        if (instanceBuilder_ == null) {
          instanceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              eu.dnetlib.data.proto.ResultProtos.Result.Instance, eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder, eu.dnetlib.data.proto.ResultProtos.Result.InstanceOrBuilder>(
                  instance_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          instance_ = null;
        }
        return instanceBuilder_;
      }
      
      // repeated .eu.dnetlib.data.proto.Result.ExternalReference externalReference = 7;
      private java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> externalReference_ =
        java.util.Collections.emptyList();
      private void ensureExternalReferenceIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          externalReference_ = new java.util.ArrayList<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference>(externalReference_);
          bitField0_ |= 0x00000004;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder> externalReferenceBuilder_;
      
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> getExternalReferenceList() {
        if (externalReferenceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(externalReference_);
        } else {
          return externalReferenceBuilder_.getMessageList();
        }
      }
      public int getExternalReferenceCount() {
        if (externalReferenceBuilder_ == null) {
          return externalReference_.size();
        } else {
          return externalReferenceBuilder_.getCount();
        }
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference getExternalReference(int index) {
        if (externalReferenceBuilder_ == null) {
          return externalReference_.get(index);
        } else {
          return externalReferenceBuilder_.getMessage(index);
        }
      }
      public Builder setExternalReference(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference value) {
        if (externalReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExternalReferenceIsMutable();
          externalReference_.set(index, value);
          onChanged();
        } else {
          externalReferenceBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setExternalReference(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder builderForValue) {
        if (externalReferenceBuilder_ == null) {
          ensureExternalReferenceIsMutable();
          externalReference_.set(index, builderForValue.build());
          onChanged();
        } else {
          externalReferenceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addExternalReference(eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference value) {
        if (externalReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExternalReferenceIsMutable();
          externalReference_.add(value);
          onChanged();
        } else {
          externalReferenceBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addExternalReference(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference value) {
        if (externalReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExternalReferenceIsMutable();
          externalReference_.add(index, value);
          onChanged();
        } else {
          externalReferenceBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addExternalReference(
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder builderForValue) {
        if (externalReferenceBuilder_ == null) {
          ensureExternalReferenceIsMutable();
          externalReference_.add(builderForValue.build());
          onChanged();
        } else {
          externalReferenceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addExternalReference(
          int index, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder builderForValue) {
        if (externalReferenceBuilder_ == null) {
          ensureExternalReferenceIsMutable();
          externalReference_.add(index, builderForValue.build());
          onChanged();
        } else {
          externalReferenceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllExternalReference(
          java.lang.Iterable<? extends eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference> values) {
        if (externalReferenceBuilder_ == null) {
          ensureExternalReferenceIsMutable();
          super.addAll(values, externalReference_);
          onChanged();
        } else {
          externalReferenceBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearExternalReference() {
        if (externalReferenceBuilder_ == null) {
          externalReference_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          externalReferenceBuilder_.clear();
        }
        return this;
      }
      public Builder removeExternalReference(int index) {
        if (externalReferenceBuilder_ == null) {
          ensureExternalReferenceIsMutable();
          externalReference_.remove(index);
          onChanged();
        } else {
          externalReferenceBuilder_.remove(index);
        }
        return this;
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder getExternalReferenceBuilder(
          int index) {
        return getExternalReferenceFieldBuilder().getBuilder(index);
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder getExternalReferenceOrBuilder(
          int index) {
        if (externalReferenceBuilder_ == null) {
          return externalReference_.get(index);  } else {
          return externalReferenceBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder> 
           getExternalReferenceOrBuilderList() {
        if (externalReferenceBuilder_ != null) {
          return externalReferenceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(externalReference_);
        }
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder addExternalReferenceBuilder() {
        return getExternalReferenceFieldBuilder().addBuilder(
            eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.getDefaultInstance());
      }
      public eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder addExternalReferenceBuilder(
          int index) {
        return getExternalReferenceFieldBuilder().addBuilder(
            index, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.getDefaultInstance());
      }
      public java.util.List<eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder> 
           getExternalReferenceBuilderList() {
        return getExternalReferenceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder> 
          getExternalReferenceFieldBuilder() {
        if (externalReferenceBuilder_ == null) {
          externalReferenceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder, eu.dnetlib.data.proto.ResultProtos.Result.ExternalReferenceOrBuilder>(
                  externalReference_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          externalReference_ = null;
        }
        return externalReferenceBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Result)
    }
    
    static {
      defaultInstance = new Result(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Result)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_Metadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_Metadata_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_Journal_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_Journal_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_Context_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_Context_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_Instance_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_Instance_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_ExternalReference_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_ExternalReference_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Result_GeoLocation_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Result_GeoLocation_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\014Result.proto\022\025eu.dnetlib.data.proto\032\017F" +
      "ieldType.proto\"\234\030\n\006Result\0228\n\010metadata\030\002 " +
      "\001(\0132&.eu.dnetlib.data.proto.Result.Metad" +
      "ata\0228\n\010instance\030\006 \003(\0132&.eu.dnetlib.data." +
      "proto.Result.Instance\022J\n\021externalReferen" +
      "ce\030\007 \003(\0132/.eu.dnetlib.data.proto.Result." +
      "ExternalReference\032\342\016\n\010Metadata\022-\n\006author" +
      "\030( \003(\0132\035.eu.dnetlib.data.proto.Author\0224\n" +
      "\nresulttype\030\010 \001(\0132 .eu.dnetlib.data.prot" +
      "o.Qualifier\0222\n\010language\030\014 \001(\0132 .eu.dnetl",
      "ib.data.proto.Qualifier\0221\n\007country\030! \003(\013" +
      "2 .eu.dnetlib.data.proto.Qualifier\022:\n\007su" +
      "bject\030\001 \003(\0132).eu.dnetlib.data.proto.Stru" +
      "cturedProperty\0228\n\005title\030\002 \003(\0132).eu.dnetl" +
      "ib.data.proto.StructuredProperty\022?\n\014rele" +
      "vantdate\030\003 \003(\0132).eu.dnetlib.data.proto.S" +
      "tructuredProperty\0227\n\013description\030\031 \003(\0132\"" +
      ".eu.dnetlib.data.proto.StringField\022<\n\020da" +
      "teofacceptance\030\004 \001(\0132\".eu.dnetlib.data.p" +
      "roto.StringField\0225\n\tpublisher\030\005 \001(\0132\".eu",
      ".dnetlib.data.proto.StringField\022:\n\016embar" +
      "goenddate\030\006 \001(\0132\".eu.dnetlib.data.proto." +
      "StringField\0222\n\006source\030\033 \003(\0132\".eu.dnetlib" +
      ".data.proto.StringField\0224\n\010fulltext\030\035 \003(" +
      "\0132\".eu.dnetlib.data.proto.StringField\0222\n" +
      "\006format\030\025 \003(\0132\".eu.dnetlib.data.proto.St" +
      "ringField\0227\n\013contributor\030\036 \003(\0132\".eu.dnet" +
      "lib.data.proto.StringField\0226\n\014resourcety" +
      "pe\030\023 \001(\0132 .eu.dnetlib.data.proto.Qualifi" +
      "er\0224\n\010coverage\030+ \003(\0132\".eu.dnetlib.data.p",
      "roto.StringField\0226\n\007context\030\034 \003(\0132%.eu.d" +
      "netlib.data.proto.Result.Context\0226\n\007jour" +
      "nal\030\022 \001(\0132%.eu.dnetlib.data.proto.Result" +
      ".Journal\0227\n\013storagedate\030\t \001(\0132\".eu.dnetl" +
      "ib.data.proto.StringField\0222\n\006device\030\032 \001(" +
      "\0132\".eu.dnetlib.data.proto.StringField\0220\n" +
      "\004size\030\024 \001(\0132\".eu.dnetlib.data.proto.Stri" +
      "ngField\0223\n\007version\030\026 \001(\0132\".eu.dnetlib.da" +
      "ta.proto.StringField\022>\n\022lastmetadataupda" +
      "te\030\027 \001(\0132\".eu.dnetlib.data.proto.StringF",
      "ield\022A\n\025metadataversionnumber\030\030 \001(\0132\".eu" +
      ".dnetlib.data.proto.StringField\022>\n\013geolo" +
      "cation\030, \003(\0132).eu.dnetlib.data.proto.Res" +
      "ult.GeoLocation\022<\n\020documentationUrl\030# \003(" +
      "\0132\".eu.dnetlib.data.proto.StringField\022:\n" +
      "\007license\030$ \003(\0132).eu.dnetlib.data.proto.S" +
      "tructuredProperty\022=\n\021codeRepositoryUrl\030&" +
      " \001(\0132\".eu.dnetlib.data.proto.StringField" +
      "\022=\n\023programmingLanguage\030\' \001(\0132 .eu.dnetl" +
      "ib.data.proto.Qualifier\0229\n\rcontactperson",
      "\030- \003(\0132\".eu.dnetlib.data.proto.StringFie" +
      "ld\0228\n\014contactgroup\030) \003(\0132\".eu.dnetlib.da" +
      "ta.proto.StringField\0220\n\004tool\030* \003(\0132\".eu." +
      "dnetlib.data.proto.StringField\032\374\001\n\007Journ" +
      "al\022\014\n\004name\030\001 \001(\t\022\023\n\013issnPrinted\030\002 \001(\t\022\022\n" +
      "\nissnOnline\030\003 \001(\t\022\023\n\013issnLinking\030\004 \001(\t\022\n" +
      "\n\002ep\030\006 \001(\t\022\013\n\003iss\030\007 \001(\t\022\n\n\002sp\030\010 \001(\t\022\013\n\003v" +
      "ol\030\t \001(\t\022\017\n\007edition\030\n \001(\t\022\027\n\017conferencep" +
      "lace\030\013 \001(\t\022\026\n\016conferencedate\030\014 \001(\t\0221\n\010da" +
      "taInfo\030\005 \001(\0132\037.eu.dnetlib.data.proto.Dat",
      "aInfo\032H\n\007Context\022\n\n\002id\030\001 \002(\t\0221\n\010dataInfo" +
      "\030\002 \003(\0132\037.eu.dnetlib.data.proto.DataInfo\032" +
      "\202\003\n\010Instance\0223\n\007license\030\006 \001(\0132\".eu.dnetl" +
      "ib.data.proto.StringField\0225\n\013accessright" +
      "\030\003 \001(\0132 .eu.dnetlib.data.proto.Qualifier" +
      "\0226\n\014instancetype\030\004 \001(\0132 .eu.dnetlib.data" +
      ".proto.Qualifier\0221\n\010hostedby\030\005 \001(\0132\037.eu." +
      "dnetlib.data.proto.KeyValue\022\013\n\003url\030\t \003(\t" +
      "\022\034\n\024distributionlocation\030\014 \001(\t\0226\n\rcollec" +
      "tedfrom\030\n \001(\0132\037.eu.dnetlib.data.proto.Ke",
      "yValue\022<\n\020dateofacceptance\030\013 \001(\0132\".eu.dn" +
      "etlib.data.proto.StringField\032\344\001\n\021Externa" +
      "lReference\022\020\n\010sitename\030\001 \001(\t\022\r\n\005label\030\002 " +
      "\001(\t\022\013\n\003url\030\003 \001(\t\022\023\n\013description\030\004 \001(\t\0223\n" +
      "\tqualifier\030\005 \001(\0132 .eu.dnetlib.data.proto" +
      ".Qualifier\022\025\n\rrefidentifier\030\006 \001(\t\022\r\n\005que" +
      "ry\030\007 \001(\t\0221\n\010dataInfo\030\010 \001(\0132\037.eu.dnetlib." +
      "data.proto.DataInfo\0328\n\013GeoLocation\022\r\n\005po" +
      "int\030\001 \001(\t\022\013\n\003box\030\002 \001(\t\022\r\n\005place\030\003 \001(\tB%\n" +
      "\025eu.dnetlib.data.protoB\014ResultProtos"
    };
    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_Result_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_eu_dnetlib_data_proto_Result_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_descriptor,
              new java.lang.String[] { "Metadata", "Instance", "ExternalReference", },
              eu.dnetlib.data.proto.ResultProtos.Result.class,
              eu.dnetlib.data.proto.ResultProtos.Result.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_Metadata_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(0);
          internal_static_eu_dnetlib_data_proto_Result_Metadata_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_Metadata_descriptor,
              new java.lang.String[] { "Author", "Resulttype", "Language", "Country", "Subject", "Title", "Relevantdate", "Description", "Dateofacceptance", "Publisher", "Embargoenddate", "Source", "Fulltext", "Format", "Contributor", "Resourcetype", "Coverage", "Context", "Journal", "Storagedate", "Device", "Size", "Version", "Lastmetadataupdate", "Metadataversionnumber", "Geolocation", "DocumentationUrl", "License", "CodeRepositoryUrl", "ProgrammingLanguage", "Contactperson", "Contactgroup", "Tool", },
              eu.dnetlib.data.proto.ResultProtos.Result.Metadata.class,
              eu.dnetlib.data.proto.ResultProtos.Result.Metadata.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_Journal_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(1);
          internal_static_eu_dnetlib_data_proto_Result_Journal_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_Journal_descriptor,
              new java.lang.String[] { "Name", "IssnPrinted", "IssnOnline", "IssnLinking", "Ep", "Iss", "Sp", "Vol", "Edition", "Conferenceplace", "Conferencedate", "DataInfo", },
              eu.dnetlib.data.proto.ResultProtos.Result.Journal.class,
              eu.dnetlib.data.proto.ResultProtos.Result.Journal.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_Context_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(2);
          internal_static_eu_dnetlib_data_proto_Result_Context_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_Context_descriptor,
              new java.lang.String[] { "Id", "DataInfo", },
              eu.dnetlib.data.proto.ResultProtos.Result.Context.class,
              eu.dnetlib.data.proto.ResultProtos.Result.Context.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_Instance_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(3);
          internal_static_eu_dnetlib_data_proto_Result_Instance_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_Instance_descriptor,
              new java.lang.String[] { "License", "Accessright", "Instancetype", "Hostedby", "Url", "Distributionlocation", "Collectedfrom", "Dateofacceptance", },
              eu.dnetlib.data.proto.ResultProtos.Result.Instance.class,
              eu.dnetlib.data.proto.ResultProtos.Result.Instance.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_ExternalReference_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(4);
          internal_static_eu_dnetlib_data_proto_Result_ExternalReference_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_ExternalReference_descriptor,
              new java.lang.String[] { "Sitename", "Label", "Url", "Description", "Qualifier", "Refidentifier", "Query", "DataInfo", },
              eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.class,
              eu.dnetlib.data.proto.ResultProtos.Result.ExternalReference.Builder.class);
          internal_static_eu_dnetlib_data_proto_Result_GeoLocation_descriptor =
            internal_static_eu_dnetlib_data_proto_Result_descriptor.getNestedTypes().get(5);
          internal_static_eu_dnetlib_data_proto_Result_GeoLocation_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Result_GeoLocation_descriptor,
              new java.lang.String[] { "Point", "Box", "Place", },
              eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.class,
              eu.dnetlib.data.proto.ResultProtos.Result.GeoLocation.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          eu.dnetlib.data.proto.FieldTypeProtos.getDescriptor(),
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
