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

package eu.dnetlib.data.proto;

public final class ProjectProtos {
  private ProjectProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface ProjectOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional .eu.dnetlib.data.proto.Project.Metadata metadata = 2;
    boolean hasMetadata();
    eu.dnetlib.data.proto.ProjectProtos.Project.Metadata getMetadata();
    eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder getMetadataOrBuilder();
  }
  public static final class Project extends
      com.google.protobuf.GeneratedMessage
      implements ProjectOrBuilder {
    // Use Project.newBuilder() to construct.
    private Project(Builder builder) {
      super(builder);
    }
    private Project(boolean noInit) {}
    
    private static final Project defaultInstance;
    public static Project getDefaultInstance() {
      return defaultInstance;
    }
    
    public Project getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_fieldAccessorTable;
    }
    
    public interface MetadataOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional .eu.dnetlib.data.proto.StringField websiteurl = 1;
      boolean hasWebsiteurl();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getWebsiteurl();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getWebsiteurlOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField code = 2;
      boolean hasCode();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getCode();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField acronym = 3;
      boolean hasAcronym();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getAcronym();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAcronymOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField title = 4;
      boolean hasTitle();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getTitle();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getTitleOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField startdate = 5;
      boolean hasStartdate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getStartdate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStartdateOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField enddate = 6;
      boolean hasEnddate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getEnddate();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEnddateOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField callidentifier = 7;
      boolean hasCallidentifier();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getCallidentifier();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCallidentifierOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField keywords = 8;
      boolean hasKeywords();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getKeywords();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getKeywordsOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField duration = 9;
      boolean hasDuration();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getDuration();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDurationOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField ecsc39 = 10;
      boolean hasEcsc39();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcsc39();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcsc39OrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField oamandatepublications = 11;
      boolean hasOamandatepublications();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getOamandatepublications();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOamandatepublicationsOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField ecarticle29_3 = 12;
      boolean hasEcarticle293();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcarticle293();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcarticle293OrBuilder();
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty subjects = 14;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> 
          getSubjectsList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubjects(int index);
      int getSubjectsCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getSubjectsOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectsOrBuilder(
          int index);
      
      // repeated .eu.dnetlib.data.proto.StringField fundingtree = 15;
      java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> 
          getFundingtreeList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getFundingtree(int index);
      int getFundingtreeCount();
      java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFundingtreeOrBuilderList();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFundingtreeOrBuilder(
          int index);
      
      // optional .eu.dnetlib.data.proto.Qualifier contracttype = 13;
      boolean hasContracttype();
      eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getContracttype();
      eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getContracttypeOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField optional1 = 16;
      boolean hasOptional1();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional1();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional1OrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField optional2 = 17;
      boolean hasOptional2();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional2();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional2OrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField jsonextrainfo = 18;
      boolean hasJsonextrainfo();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getJsonextrainfo();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getJsonextrainfoOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField contactfullname = 19;
      boolean hasContactfullname();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfullname();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfullnameOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField contactfax = 20;
      boolean hasContactfax();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfax();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfaxOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField contactphone = 21;
      boolean hasContactphone();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactphone();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactphoneOrBuilder();
      
      // optional .eu.dnetlib.data.proto.StringField contactemail = 22;
      boolean hasContactemail();
      eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactemail();
      eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactemailOrBuilder();
    }
    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.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_Metadata_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_Metadata_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional .eu.dnetlib.data.proto.StringField websiteurl = 1;
      public static final int WEBSITEURL_FIELD_NUMBER = 1;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField websiteurl_;
      public boolean hasWebsiteurl() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getWebsiteurl() {
        return websiteurl_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getWebsiteurlOrBuilder() {
        return websiteurl_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField code = 2;
      public static final int CODE_FIELD_NUMBER = 2;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField code_;
      public boolean hasCode() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCode() {
        return code_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeOrBuilder() {
        return code_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField acronym = 3;
      public static final int ACRONYM_FIELD_NUMBER = 3;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField acronym_;
      public boolean hasAcronym() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getAcronym() {
        return acronym_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAcronymOrBuilder() {
        return acronym_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField title = 4;
      public static final int TITLE_FIELD_NUMBER = 4;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField title_;
      public boolean hasTitle() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getTitle() {
        return title_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getTitleOrBuilder() {
        return title_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField startdate = 5;
      public static final int STARTDATE_FIELD_NUMBER = 5;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField startdate_;
      public boolean hasStartdate() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getStartdate() {
        return startdate_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStartdateOrBuilder() {
        return startdate_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField enddate = 6;
      public static final int ENDDATE_FIELD_NUMBER = 6;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField enddate_;
      public boolean hasEnddate() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEnddate() {
        return enddate_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEnddateOrBuilder() {
        return enddate_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField callidentifier = 7;
      public static final int CALLIDENTIFIER_FIELD_NUMBER = 7;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField callidentifier_;
      public boolean hasCallidentifier() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCallidentifier() {
        return callidentifier_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCallidentifierOrBuilder() {
        return callidentifier_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField keywords = 8;
      public static final int KEYWORDS_FIELD_NUMBER = 8;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField keywords_;
      public boolean hasKeywords() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getKeywords() {
        return keywords_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getKeywordsOrBuilder() {
        return keywords_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField duration = 9;
      public static final int DURATION_FIELD_NUMBER = 9;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField duration_;
      public boolean hasDuration() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDuration() {
        return duration_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDurationOrBuilder() {
        return duration_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField ecsc39 = 10;
      public static final int ECSC39_FIELD_NUMBER = 10;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField ecsc39_;
      public boolean hasEcsc39() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcsc39() {
        return ecsc39_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcsc39OrBuilder() {
        return ecsc39_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField oamandatepublications = 11;
      public static final int OAMANDATEPUBLICATIONS_FIELD_NUMBER = 11;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField oamandatepublications_;
      public boolean hasOamandatepublications() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOamandatepublications() {
        return oamandatepublications_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOamandatepublicationsOrBuilder() {
        return oamandatepublications_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField ecarticle29_3 = 12;
      public static final int ECARTICLE29_3_FIELD_NUMBER = 12;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField ecarticle293_;
      public boolean hasEcarticle293() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcarticle293() {
        return ecarticle293_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcarticle293OrBuilder() {
        return ecarticle293_;
      }
      
      // repeated .eu.dnetlib.data.proto.StructuredProperty subjects = 14;
      public static final int SUBJECTS_FIELD_NUMBER = 14;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> subjects_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getSubjectsList() {
        return subjects_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
          getSubjectsOrBuilderList() {
        return subjects_;
      }
      public int getSubjectsCount() {
        return subjects_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubjects(int index) {
        return subjects_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectsOrBuilder(
          int index) {
        return subjects_.get(index);
      }
      
      // repeated .eu.dnetlib.data.proto.StringField fundingtree = 15;
      public static final int FUNDINGTREE_FIELD_NUMBER = 15;
      private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> fundingtree_;
      public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFundingtreeList() {
        return fundingtree_;
      }
      public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
          getFundingtreeOrBuilderList() {
        return fundingtree_;
      }
      public int getFundingtreeCount() {
        return fundingtree_.size();
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFundingtree(int index) {
        return fundingtree_.get(index);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFundingtreeOrBuilder(
          int index) {
        return fundingtree_.get(index);
      }
      
      // optional .eu.dnetlib.data.proto.Qualifier contracttype = 13;
      public static final int CONTRACTTYPE_FIELD_NUMBER = 13;
      private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier contracttype_;
      public boolean hasContracttype() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getContracttype() {
        return contracttype_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getContracttypeOrBuilder() {
        return contracttype_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField optional1 = 16;
      public static final int OPTIONAL1_FIELD_NUMBER = 16;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField optional1_;
      public boolean hasOptional1() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional1() {
        return optional1_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional1OrBuilder() {
        return optional1_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField optional2 = 17;
      public static final int OPTIONAL2_FIELD_NUMBER = 17;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField optional2_;
      public boolean hasOptional2() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional2() {
        return optional2_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional2OrBuilder() {
        return optional2_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField jsonextrainfo = 18;
      public static final int JSONEXTRAINFO_FIELD_NUMBER = 18;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField jsonextrainfo_;
      public boolean hasJsonextrainfo() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getJsonextrainfo() {
        return jsonextrainfo_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getJsonextrainfoOrBuilder() {
        return jsonextrainfo_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField contactfullname = 19;
      public static final int CONTACTFULLNAME_FIELD_NUMBER = 19;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactfullname_;
      public boolean hasContactfullname() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfullname() {
        return contactfullname_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfullnameOrBuilder() {
        return contactfullname_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField contactfax = 20;
      public static final int CONTACTFAX_FIELD_NUMBER = 20;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactfax_;
      public boolean hasContactfax() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfax() {
        return contactfax_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfaxOrBuilder() {
        return contactfax_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField contactphone = 21;
      public static final int CONTACTPHONE_FIELD_NUMBER = 21;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactphone_;
      public boolean hasContactphone() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactphone() {
        return contactphone_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactphoneOrBuilder() {
        return contactphone_;
      }
      
      // optional .eu.dnetlib.data.proto.StringField contactemail = 22;
      public static final int CONTACTEMAIL_FIELD_NUMBER = 22;
      private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactemail_;
      public boolean hasContactemail() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactemail() {
        return contactemail_;
      }
      public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactemailOrBuilder() {
        return contactemail_;
      }
      
      private void initFields() {
        websiteurl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        code_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        acronym_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        title_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        startdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        enddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        callidentifier_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        keywords_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        duration_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        ecsc39_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        oamandatepublications_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        ecarticle293_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        subjects_ = java.util.Collections.emptyList();
        fundingtree_ = java.util.Collections.emptyList();
        contracttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
        optional1_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        optional2_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        jsonextrainfo_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        contactfullname_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        contactfax_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        contactphone_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
        contactemail_ = 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 (hasWebsiteurl()) {
          if (!getWebsiteurl().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasCode()) {
          if (!getCode().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasAcronym()) {
          if (!getAcronym().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasTitle()) {
          if (!getTitle().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasStartdate()) {
          if (!getStartdate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasEnddate()) {
          if (!getEnddate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasCallidentifier()) {
          if (!getCallidentifier().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasKeywords()) {
          if (!getKeywords().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDuration()) {
          if (!getDuration().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasEcsc39()) {
          if (!getEcsc39().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasOamandatepublications()) {
          if (!getOamandatepublications().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasEcarticle293()) {
          if (!getEcarticle293().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getSubjectsCount(); i++) {
          if (!getSubjects(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getFundingtreeCount(); i++) {
          if (!getFundingtree(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasContracttype()) {
          if (!getContracttype().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasOptional1()) {
          if (!getOptional1().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasOptional2()) {
          if (!getOptional2().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasJsonextrainfo()) {
          if (!getJsonextrainfo().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasContactfullname()) {
          if (!getContactfullname().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasContactfax()) {
          if (!getContactfax().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasContactphone()) {
          if (!getContactphone().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasContactemail()) {
          if (!getContactemail().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(1, websiteurl_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, code_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, acronym_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, title_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(5, startdate_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeMessage(6, enddate_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(7, callidentifier_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeMessage(8, keywords_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeMessage(9, duration_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeMessage(10, ecsc39_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeMessage(11, oamandatepublications_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeMessage(12, ecarticle293_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          output.writeMessage(13, contracttype_);
        }
        for (int i = 0; i < subjects_.size(); i++) {
          output.writeMessage(14, subjects_.get(i));
        }
        for (int i = 0; i < fundingtree_.size(); i++) {
          output.writeMessage(15, fundingtree_.get(i));
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          output.writeMessage(16, optional1_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          output.writeMessage(17, optional2_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          output.writeMessage(18, jsonextrainfo_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          output.writeMessage(19, contactfullname_);
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          output.writeMessage(20, contactfax_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          output.writeMessage(21, contactphone_);
        }
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          output.writeMessage(22, contactemail_);
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, websiteurl_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, code_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, acronym_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, title_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, startdate_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, enddate_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, callidentifier_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, keywords_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, duration_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, ecsc39_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, oamandatepublications_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, ecarticle293_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(13, contracttype_);
        }
        for (int i = 0; i < subjects_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, subjects_.get(i));
        }
        for (int i = 0; i < fundingtree_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(15, fundingtree_.get(i));
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(16, optional1_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(17, optional2_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(18, jsonextrainfo_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(19, contactfullname_);
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(20, contactfax_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(21, contactphone_);
        }
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(22, contactemail_);
        }
        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.ProjectProtos.Project.Metadata parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.Metadata parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.Metadata parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.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.ProjectProtos.Project.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.ProjectProtos.Project.Metadata parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.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.ProjectProtos.Project.MetadataOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_Metadata_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_Metadata_fieldAccessorTable;
        }
        
        // Construct using eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getWebsiteurlFieldBuilder();
            getCodeFieldBuilder();
            getAcronymFieldBuilder();
            getTitleFieldBuilder();
            getStartdateFieldBuilder();
            getEnddateFieldBuilder();
            getCallidentifierFieldBuilder();
            getKeywordsFieldBuilder();
            getDurationFieldBuilder();
            getEcsc39FieldBuilder();
            getOamandatepublicationsFieldBuilder();
            getEcarticle293FieldBuilder();
            getSubjectsFieldBuilder();
            getFundingtreeFieldBuilder();
            getContracttypeFieldBuilder();
            getOptional1FieldBuilder();
            getOptional2FieldBuilder();
            getJsonextrainfoFieldBuilder();
            getContactfullnameFieldBuilder();
            getContactfaxFieldBuilder();
            getContactphoneFieldBuilder();
            getContactemailFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          if (websiteurlBuilder_ == null) {
            websiteurl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            websiteurlBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (codeBuilder_ == null) {
            code_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            codeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (acronymBuilder_ == null) {
            acronym_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            acronymBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (titleBuilder_ == null) {
            title_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            titleBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (startdateBuilder_ == null) {
            startdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            startdateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          if (enddateBuilder_ == null) {
            enddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            enddateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          if (callidentifierBuilder_ == null) {
            callidentifier_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            callidentifierBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          if (keywordsBuilder_ == null) {
            keywords_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            keywordsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          if (durationBuilder_ == null) {
            duration_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            durationBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          if (ecsc39Builder_ == null) {
            ecsc39_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            ecsc39Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          if (oamandatepublicationsBuilder_ == null) {
            oamandatepublications_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            oamandatepublicationsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          if (ecarticle293Builder_ == null) {
            ecarticle293_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            ecarticle293Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          if (subjectsBuilder_ == null) {
            subjects_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            subjectsBuilder_.clear();
          }
          if (fundingtreeBuilder_ == null) {
            fundingtree_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            fundingtreeBuilder_.clear();
          }
          if (contracttypeBuilder_ == null) {
            contracttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
          } else {
            contracttypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00004000);
          if (optional1Builder_ == null) {
            optional1_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            optional1Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00008000);
          if (optional2Builder_ == null) {
            optional2_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            optional2Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00010000);
          if (jsonextrainfoBuilder_ == null) {
            jsonextrainfo_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            jsonextrainfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00020000);
          if (contactfullnameBuilder_ == null) {
            contactfullname_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            contactfullnameBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00040000);
          if (contactfaxBuilder_ == null) {
            contactfax_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            contactfaxBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00080000);
          if (contactphoneBuilder_ == null) {
            contactphone_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            contactphoneBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00100000);
          if (contactemailBuilder_ == null) {
            contactemail_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
          } else {
            contactemailBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00200000);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDescriptor();
        }
        
        public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata getDefaultInstanceForType() {
          return eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance();
        }
        
        public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata build() {
          eu.dnetlib.data.proto.ProjectProtos.Project.Metadata result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private eu.dnetlib.data.proto.ProjectProtos.Project.Metadata buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          eu.dnetlib.data.proto.ProjectProtos.Project.Metadata result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata buildPartial() {
          eu.dnetlib.data.proto.ProjectProtos.Project.Metadata result = new eu.dnetlib.data.proto.ProjectProtos.Project.Metadata(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (websiteurlBuilder_ == null) {
            result.websiteurl_ = websiteurl_;
          } else {
            result.websiteurl_ = websiteurlBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (codeBuilder_ == null) {
            result.code_ = code_;
          } else {
            result.code_ = codeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (acronymBuilder_ == null) {
            result.acronym_ = acronym_;
          } else {
            result.acronym_ = acronymBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (titleBuilder_ == null) {
            result.title_ = title_;
          } else {
            result.title_ = titleBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          if (startdateBuilder_ == null) {
            result.startdate_ = startdate_;
          } else {
            result.startdate_ = startdateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          if (enddateBuilder_ == null) {
            result.enddate_ = enddate_;
          } else {
            result.enddate_ = enddateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          if (callidentifierBuilder_ == null) {
            result.callidentifier_ = callidentifier_;
          } else {
            result.callidentifier_ = callidentifierBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          if (keywordsBuilder_ == null) {
            result.keywords_ = keywords_;
          } else {
            result.keywords_ = keywordsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          if (durationBuilder_ == null) {
            result.duration_ = duration_;
          } else {
            result.duration_ = durationBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          if (ecsc39Builder_ == null) {
            result.ecsc39_ = ecsc39_;
          } else {
            result.ecsc39_ = ecsc39Builder_.build();
          }
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          if (oamandatepublicationsBuilder_ == null) {
            result.oamandatepublications_ = oamandatepublications_;
          } else {
            result.oamandatepublications_ = oamandatepublicationsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000800;
          }
          if (ecarticle293Builder_ == null) {
            result.ecarticle293_ = ecarticle293_;
          } else {
            result.ecarticle293_ = ecarticle293Builder_.build();
          }
          if (subjectsBuilder_ == null) {
            if (((bitField0_ & 0x00001000) == 0x00001000)) {
              subjects_ = java.util.Collections.unmodifiableList(subjects_);
              bitField0_ = (bitField0_ & ~0x00001000);
            }
            result.subjects_ = subjects_;
          } else {
            result.subjects_ = subjectsBuilder_.build();
          }
          if (fundingtreeBuilder_ == null) {
            if (((bitField0_ & 0x00002000) == 0x00002000)) {
              fundingtree_ = java.util.Collections.unmodifiableList(fundingtree_);
              bitField0_ = (bitField0_ & ~0x00002000);
            }
            result.fundingtree_ = fundingtree_;
          } else {
            result.fundingtree_ = fundingtreeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
            to_bitField0_ |= 0x00001000;
          }
          if (contracttypeBuilder_ == null) {
            result.contracttype_ = contracttype_;
          } else {
            result.contracttype_ = contracttypeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
            to_bitField0_ |= 0x00002000;
          }
          if (optional1Builder_ == null) {
            result.optional1_ = optional1_;
          } else {
            result.optional1_ = optional1Builder_.build();
          }
          if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
            to_bitField0_ |= 0x00004000;
          }
          if (optional2Builder_ == null) {
            result.optional2_ = optional2_;
          } else {
            result.optional2_ = optional2Builder_.build();
          }
          if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
            to_bitField0_ |= 0x00008000;
          }
          if (jsonextrainfoBuilder_ == null) {
            result.jsonextrainfo_ = jsonextrainfo_;
          } else {
            result.jsonextrainfo_ = jsonextrainfoBuilder_.build();
          }
          if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
            to_bitField0_ |= 0x00010000;
          }
          if (contactfullnameBuilder_ == null) {
            result.contactfullname_ = contactfullname_;
          } else {
            result.contactfullname_ = contactfullnameBuilder_.build();
          }
          if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
            to_bitField0_ |= 0x00020000;
          }
          if (contactfaxBuilder_ == null) {
            result.contactfax_ = contactfax_;
          } else {
            result.contactfax_ = contactfaxBuilder_.build();
          }
          if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
            to_bitField0_ |= 0x00040000;
          }
          if (contactphoneBuilder_ == null) {
            result.contactphone_ = contactphone_;
          } else {
            result.contactphone_ = contactphoneBuilder_.build();
          }
          if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
            to_bitField0_ |= 0x00080000;
          }
          if (contactemailBuilder_ == null) {
            result.contactemail_ = contactemail_;
          } else {
            result.contactemail_ = contactemailBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof eu.dnetlib.data.proto.ProjectProtos.Project.Metadata) {
            return mergeFrom((eu.dnetlib.data.proto.ProjectProtos.Project.Metadata)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(eu.dnetlib.data.proto.ProjectProtos.Project.Metadata other) {
          if (other == eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance()) return this;
          if (other.hasWebsiteurl()) {
            mergeWebsiteurl(other.getWebsiteurl());
          }
          if (other.hasCode()) {
            mergeCode(other.getCode());
          }
          if (other.hasAcronym()) {
            mergeAcronym(other.getAcronym());
          }
          if (other.hasTitle()) {
            mergeTitle(other.getTitle());
          }
          if (other.hasStartdate()) {
            mergeStartdate(other.getStartdate());
          }
          if (other.hasEnddate()) {
            mergeEnddate(other.getEnddate());
          }
          if (other.hasCallidentifier()) {
            mergeCallidentifier(other.getCallidentifier());
          }
          if (other.hasKeywords()) {
            mergeKeywords(other.getKeywords());
          }
          if (other.hasDuration()) {
            mergeDuration(other.getDuration());
          }
          if (other.hasEcsc39()) {
            mergeEcsc39(other.getEcsc39());
          }
          if (other.hasOamandatepublications()) {
            mergeOamandatepublications(other.getOamandatepublications());
          }
          if (other.hasEcarticle293()) {
            mergeEcarticle293(other.getEcarticle293());
          }
          if (subjectsBuilder_ == null) {
            if (!other.subjects_.isEmpty()) {
              if (subjects_.isEmpty()) {
                subjects_ = other.subjects_;
                bitField0_ = (bitField0_ & ~0x00001000);
              } else {
                ensureSubjectsIsMutable();
                subjects_.addAll(other.subjects_);
              }
              onChanged();
            }
          } else {
            if (!other.subjects_.isEmpty()) {
              if (subjectsBuilder_.isEmpty()) {
                subjectsBuilder_.dispose();
                subjectsBuilder_ = null;
                subjects_ = other.subjects_;
                bitField0_ = (bitField0_ & ~0x00001000);
                subjectsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getSubjectsFieldBuilder() : null;
              } else {
                subjectsBuilder_.addAllMessages(other.subjects_);
              }
            }
          }
          if (fundingtreeBuilder_ == null) {
            if (!other.fundingtree_.isEmpty()) {
              if (fundingtree_.isEmpty()) {
                fundingtree_ = other.fundingtree_;
                bitField0_ = (bitField0_ & ~0x00002000);
              } else {
                ensureFundingtreeIsMutable();
                fundingtree_.addAll(other.fundingtree_);
              }
              onChanged();
            }
          } else {
            if (!other.fundingtree_.isEmpty()) {
              if (fundingtreeBuilder_.isEmpty()) {
                fundingtreeBuilder_.dispose();
                fundingtreeBuilder_ = null;
                fundingtree_ = other.fundingtree_;
                bitField0_ = (bitField0_ & ~0x00002000);
                fundingtreeBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getFundingtreeFieldBuilder() : null;
              } else {
                fundingtreeBuilder_.addAllMessages(other.fundingtree_);
              }
            }
          }
          if (other.hasContracttype()) {
            mergeContracttype(other.getContracttype());
          }
          if (other.hasOptional1()) {
            mergeOptional1(other.getOptional1());
          }
          if (other.hasOptional2()) {
            mergeOptional2(other.getOptional2());
          }
          if (other.hasJsonextrainfo()) {
            mergeJsonextrainfo(other.getJsonextrainfo());
          }
          if (other.hasContactfullname()) {
            mergeContactfullname(other.getContactfullname());
          }
          if (other.hasContactfax()) {
            mergeContactfax(other.getContactfax());
          }
          if (other.hasContactphone()) {
            mergeContactphone(other.getContactphone());
          }
          if (other.hasContactemail()) {
            mergeContactemail(other.getContactemail());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (hasWebsiteurl()) {
            if (!getWebsiteurl().isInitialized()) {
              
              return false;
            }
          }
          if (hasCode()) {
            if (!getCode().isInitialized()) {
              
              return false;
            }
          }
          if (hasAcronym()) {
            if (!getAcronym().isInitialized()) {
              
              return false;
            }
          }
          if (hasTitle()) {
            if (!getTitle().isInitialized()) {
              
              return false;
            }
          }
          if (hasStartdate()) {
            if (!getStartdate().isInitialized()) {
              
              return false;
            }
          }
          if (hasEnddate()) {
            if (!getEnddate().isInitialized()) {
              
              return false;
            }
          }
          if (hasCallidentifier()) {
            if (!getCallidentifier().isInitialized()) {
              
              return false;
            }
          }
          if (hasKeywords()) {
            if (!getKeywords().isInitialized()) {
              
              return false;
            }
          }
          if (hasDuration()) {
            if (!getDuration().isInitialized()) {
              
              return false;
            }
          }
          if (hasEcsc39()) {
            if (!getEcsc39().isInitialized()) {
              
              return false;
            }
          }
          if (hasOamandatepublications()) {
            if (!getOamandatepublications().isInitialized()) {
              
              return false;
            }
          }
          if (hasEcarticle293()) {
            if (!getEcarticle293().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getSubjectsCount(); i++) {
            if (!getSubjects(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getFundingtreeCount(); i++) {
            if (!getFundingtree(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasContracttype()) {
            if (!getContracttype().isInitialized()) {
              
              return false;
            }
          }
          if (hasOptional1()) {
            if (!getOptional1().isInitialized()) {
              
              return false;
            }
          }
          if (hasOptional2()) {
            if (!getOptional2().isInitialized()) {
              
              return false;
            }
          }
          if (hasJsonextrainfo()) {
            if (!getJsonextrainfo().isInitialized()) {
              
              return false;
            }
          }
          if (hasContactfullname()) {
            if (!getContactfullname().isInitialized()) {
              
              return false;
            }
          }
          if (hasContactfax()) {
            if (!getContactfax().isInitialized()) {
              
              return false;
            }
          }
          if (hasContactphone()) {
            if (!getContactphone().isInitialized()) {
              
              return false;
            }
          }
          if (hasContactemail()) {
            if (!getContactemail().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.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasWebsiteurl()) {
                  subBuilder.mergeFrom(getWebsiteurl());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setWebsiteurl(subBuilder.buildPartial());
                break;
              }
              case 18: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasCode()) {
                  subBuilder.mergeFrom(getCode());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setCode(subBuilder.buildPartial());
                break;
              }
              case 26: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasAcronym()) {
                  subBuilder.mergeFrom(getAcronym());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setAcronym(subBuilder.buildPartial());
                break;
              }
              case 34: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasTitle()) {
                  subBuilder.mergeFrom(getTitle());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setTitle(subBuilder.buildPartial());
                break;
              }
              case 42: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasStartdate()) {
                  subBuilder.mergeFrom(getStartdate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setStartdate(subBuilder.buildPartial());
                break;
              }
              case 50: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasEnddate()) {
                  subBuilder.mergeFrom(getEnddate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setEnddate(subBuilder.buildPartial());
                break;
              }
              case 58: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasCallidentifier()) {
                  subBuilder.mergeFrom(getCallidentifier());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setCallidentifier(subBuilder.buildPartial());
                break;
              }
              case 66: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasKeywords()) {
                  subBuilder.mergeFrom(getKeywords());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setKeywords(subBuilder.buildPartial());
                break;
              }
              case 74: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasDuration()) {
                  subBuilder.mergeFrom(getDuration());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDuration(subBuilder.buildPartial());
                break;
              }
              case 82: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasEcsc39()) {
                  subBuilder.mergeFrom(getEcsc39());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setEcsc39(subBuilder.buildPartial());
                break;
              }
              case 90: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasOamandatepublications()) {
                  subBuilder.mergeFrom(getOamandatepublications());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setOamandatepublications(subBuilder.buildPartial());
                break;
              }
              case 98: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasEcarticle293()) {
                  subBuilder.mergeFrom(getEcarticle293());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setEcarticle293(subBuilder.buildPartial());
                break;
              }
              case 106: {
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder();
                if (hasContracttype()) {
                  subBuilder.mergeFrom(getContracttype());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setContracttype(subBuilder.buildPartial());
                break;
              }
              case 114: {
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addSubjects(subBuilder.buildPartial());
                break;
              }
              case 122: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addFundingtree(subBuilder.buildPartial());
                break;
              }
              case 130: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasOptional1()) {
                  subBuilder.mergeFrom(getOptional1());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setOptional1(subBuilder.buildPartial());
                break;
              }
              case 138: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasOptional2()) {
                  subBuilder.mergeFrom(getOptional2());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setOptional2(subBuilder.buildPartial());
                break;
              }
              case 146: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasJsonextrainfo()) {
                  subBuilder.mergeFrom(getJsonextrainfo());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setJsonextrainfo(subBuilder.buildPartial());
                break;
              }
              case 154: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasContactfullname()) {
                  subBuilder.mergeFrom(getContactfullname());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setContactfullname(subBuilder.buildPartial());
                break;
              }
              case 162: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasContactfax()) {
                  subBuilder.mergeFrom(getContactfax());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setContactfax(subBuilder.buildPartial());
                break;
              }
              case 170: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasContactphone()) {
                  subBuilder.mergeFrom(getContactphone());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setContactphone(subBuilder.buildPartial());
                break;
              }
              case 178: {
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder subBuilder = eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder();
                if (hasContactemail()) {
                  subBuilder.mergeFrom(getContactemail());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setContactemail(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional .eu.dnetlib.data.proto.StringField websiteurl = 1;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField websiteurl_ = 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> websiteurlBuilder_;
        public boolean hasWebsiteurl() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getWebsiteurl() {
          if (websiteurlBuilder_ == null) {
            return websiteurl_;
          } else {
            return websiteurlBuilder_.getMessage();
          }
        }
        public Builder setWebsiteurl(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (websiteurlBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            websiteurl_ = value;
            onChanged();
          } else {
            websiteurlBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder setWebsiteurl(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (websiteurlBuilder_ == null) {
            websiteurl_ = builderForValue.build();
            onChanged();
          } else {
            websiteurlBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder mergeWebsiteurl(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (websiteurlBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                websiteurl_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              websiteurl_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(websiteurl_).mergeFrom(value).buildPartial();
            } else {
              websiteurl_ = value;
            }
            onChanged();
          } else {
            websiteurlBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        public Builder clearWebsiteurl() {
          if (websiteurlBuilder_ == null) {
            websiteurl_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            websiteurlBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getWebsiteurlBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getWebsiteurlFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getWebsiteurlOrBuilder() {
          if (websiteurlBuilder_ != null) {
            return websiteurlBuilder_.getMessageOrBuilder();
          } else {
            return websiteurl_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getWebsiteurlFieldBuilder() {
          if (websiteurlBuilder_ == null) {
            websiteurlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    websiteurl_,
                    getParentForChildren(),
                    isClean());
            websiteurl_ = null;
          }
          return websiteurlBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField code = 2;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField code_ = 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> codeBuilder_;
        public boolean hasCode() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCode() {
          if (codeBuilder_ == null) {
            return code_;
          } else {
            return codeBuilder_.getMessage();
          }
        }
        public Builder setCode(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (codeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            code_ = value;
            onChanged();
          } else {
            codeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder setCode(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (codeBuilder_ == null) {
            code_ = builderForValue.build();
            onChanged();
          } else {
            codeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder mergeCode(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (codeBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                code_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              code_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(code_).mergeFrom(value).buildPartial();
            } else {
              code_ = value;
            }
            onChanged();
          } else {
            codeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder clearCode() {
          if (codeBuilder_ == null) {
            code_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            codeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getCodeBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getCodeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCodeOrBuilder() {
          if (codeBuilder_ != null) {
            return codeBuilder_.getMessageOrBuilder();
          } else {
            return code_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getCodeFieldBuilder() {
          if (codeBuilder_ == null) {
            codeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    code_,
                    getParentForChildren(),
                    isClean());
            code_ = null;
          }
          return codeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField acronym = 3;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField acronym_ = 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> acronymBuilder_;
        public boolean hasAcronym() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getAcronym() {
          if (acronymBuilder_ == null) {
            return acronym_;
          } else {
            return acronymBuilder_.getMessage();
          }
        }
        public Builder setAcronym(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (acronymBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            acronym_ = value;
            onChanged();
          } else {
            acronymBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setAcronym(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (acronymBuilder_ == null) {
            acronym_ = builderForValue.build();
            onChanged();
          } else {
            acronymBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeAcronym(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (acronymBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                acronym_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              acronym_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(acronym_).mergeFrom(value).buildPartial();
            } else {
              acronym_ = value;
            }
            onChanged();
          } else {
            acronymBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearAcronym() {
          if (acronymBuilder_ == null) {
            acronym_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            acronymBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getAcronymBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getAcronymFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getAcronymOrBuilder() {
          if (acronymBuilder_ != null) {
            return acronymBuilder_.getMessageOrBuilder();
          } else {
            return acronym_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getAcronymFieldBuilder() {
          if (acronymBuilder_ == null) {
            acronymBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    acronym_,
                    getParentForChildren(),
                    isClean());
            acronym_ = null;
          }
          return acronymBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField title = 4;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField title_ = 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> titleBuilder_;
        public boolean hasTitle() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getTitle() {
          if (titleBuilder_ == null) {
            return title_;
          } else {
            return titleBuilder_.getMessage();
          }
        }
        public Builder setTitle(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (titleBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            title_ = value;
            onChanged();
          } else {
            titleBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setTitle(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (titleBuilder_ == null) {
            title_ = builderForValue.build();
            onChanged();
          } else {
            titleBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeTitle(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (titleBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                title_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              title_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(title_).mergeFrom(value).buildPartial();
            } else {
              title_ = value;
            }
            onChanged();
          } else {
            titleBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearTitle() {
          if (titleBuilder_ == null) {
            title_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            titleBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getTitleBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getTitleFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getTitleOrBuilder() {
          if (titleBuilder_ != null) {
            return titleBuilder_.getMessageOrBuilder();
          } else {
            return title_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getTitleFieldBuilder() {
          if (titleBuilder_ == null) {
            titleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    title_,
                    getParentForChildren(),
                    isClean());
            title_ = null;
          }
          return titleBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField startdate = 5;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField startdate_ = 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> startdateBuilder_;
        public boolean hasStartdate() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getStartdate() {
          if (startdateBuilder_ == null) {
            return startdate_;
          } else {
            return startdateBuilder_.getMessage();
          }
        }
        public Builder setStartdate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (startdateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            startdate_ = value;
            onChanged();
          } else {
            startdateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder setStartdate(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (startdateBuilder_ == null) {
            startdate_ = builderForValue.build();
            onChanged();
          } else {
            startdateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder mergeStartdate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (startdateBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                startdate_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              startdate_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(startdate_).mergeFrom(value).buildPartial();
            } else {
              startdate_ = value;
            }
            onChanged();
          } else {
            startdateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder clearStartdate() {
          if (startdateBuilder_ == null) {
            startdate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            startdateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getStartdateBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getStartdateFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getStartdateOrBuilder() {
          if (startdateBuilder_ != null) {
            return startdateBuilder_.getMessageOrBuilder();
          } else {
            return startdate_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getStartdateFieldBuilder() {
          if (startdateBuilder_ == null) {
            startdateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    startdate_,
                    getParentForChildren(),
                    isClean());
            startdate_ = null;
          }
          return startdateBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField enddate = 6;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField enddate_ = 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> enddateBuilder_;
        public boolean hasEnddate() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEnddate() {
          if (enddateBuilder_ == null) {
            return enddate_;
          } else {
            return enddateBuilder_.getMessage();
          }
        }
        public Builder setEnddate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (enddateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            enddate_ = value;
            onChanged();
          } else {
            enddateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        public Builder setEnddate(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (enddateBuilder_ == null) {
            enddate_ = builderForValue.build();
            onChanged();
          } else {
            enddateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        public Builder mergeEnddate(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (enddateBuilder_ == null) {
            if (((bitField0_ & 0x00000020) == 0x00000020) &&
                enddate_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              enddate_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(enddate_).mergeFrom(value).buildPartial();
            } else {
              enddate_ = value;
            }
            onChanged();
          } else {
            enddateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        public Builder clearEnddate() {
          if (enddateBuilder_ == null) {
            enddate_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            enddateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getEnddateBuilder() {
          bitField0_ |= 0x00000020;
          onChanged();
          return getEnddateFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEnddateOrBuilder() {
          if (enddateBuilder_ != null) {
            return enddateBuilder_.getMessageOrBuilder();
          } else {
            return enddate_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getEnddateFieldBuilder() {
          if (enddateBuilder_ == null) {
            enddateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    enddate_,
                    getParentForChildren(),
                    isClean());
            enddate_ = null;
          }
          return enddateBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField callidentifier = 7;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField callidentifier_ = 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> callidentifierBuilder_;
        public boolean hasCallidentifier() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getCallidentifier() {
          if (callidentifierBuilder_ == null) {
            return callidentifier_;
          } else {
            return callidentifierBuilder_.getMessage();
          }
        }
        public Builder setCallidentifier(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (callidentifierBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            callidentifier_ = value;
            onChanged();
          } else {
            callidentifierBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder setCallidentifier(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (callidentifierBuilder_ == null) {
            callidentifier_ = builderForValue.build();
            onChanged();
          } else {
            callidentifierBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder mergeCallidentifier(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (callidentifierBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040) &&
                callidentifier_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              callidentifier_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(callidentifier_).mergeFrom(value).buildPartial();
            } else {
              callidentifier_ = value;
            }
            onChanged();
          } else {
            callidentifierBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        public Builder clearCallidentifier() {
          if (callidentifierBuilder_ == null) {
            callidentifier_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            callidentifierBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getCallidentifierBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getCallidentifierFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getCallidentifierOrBuilder() {
          if (callidentifierBuilder_ != null) {
            return callidentifierBuilder_.getMessageOrBuilder();
          } else {
            return callidentifier_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getCallidentifierFieldBuilder() {
          if (callidentifierBuilder_ == null) {
            callidentifierBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    callidentifier_,
                    getParentForChildren(),
                    isClean());
            callidentifier_ = null;
          }
          return callidentifierBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField keywords = 8;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField keywords_ = 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> keywordsBuilder_;
        public boolean hasKeywords() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getKeywords() {
          if (keywordsBuilder_ == null) {
            return keywords_;
          } else {
            return keywordsBuilder_.getMessage();
          }
        }
        public Builder setKeywords(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (keywordsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            keywords_ = value;
            onChanged();
          } else {
            keywordsBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder setKeywords(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (keywordsBuilder_ == null) {
            keywords_ = builderForValue.build();
            onChanged();
          } else {
            keywordsBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder mergeKeywords(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (keywordsBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                keywords_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              keywords_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(keywords_).mergeFrom(value).buildPartial();
            } else {
              keywords_ = value;
            }
            onChanged();
          } else {
            keywordsBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder clearKeywords() {
          if (keywordsBuilder_ == null) {
            keywords_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            keywordsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getKeywordsBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getKeywordsFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getKeywordsOrBuilder() {
          if (keywordsBuilder_ != null) {
            return keywordsBuilder_.getMessageOrBuilder();
          } else {
            return keywords_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getKeywordsFieldBuilder() {
          if (keywordsBuilder_ == null) {
            keywordsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    keywords_,
                    getParentForChildren(),
                    isClean());
            keywords_ = null;
          }
          return keywordsBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField duration = 9;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField duration_ = 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> durationBuilder_;
        public boolean hasDuration() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getDuration() {
          if (durationBuilder_ == null) {
            return duration_;
          } else {
            return durationBuilder_.getMessage();
          }
        }
        public Builder setDuration(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (durationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            duration_ = value;
            onChanged();
          } else {
            durationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder setDuration(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (durationBuilder_ == null) {
            duration_ = builderForValue.build();
            onChanged();
          } else {
            durationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder mergeDuration(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (durationBuilder_ == null) {
            if (((bitField0_ & 0x00000100) == 0x00000100) &&
                duration_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              duration_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(duration_).mergeFrom(value).buildPartial();
            } else {
              duration_ = value;
            }
            onChanged();
          } else {
            durationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        public Builder clearDuration() {
          if (durationBuilder_ == null) {
            duration_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            durationBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getDurationBuilder() {
          bitField0_ |= 0x00000100;
          onChanged();
          return getDurationFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getDurationOrBuilder() {
          if (durationBuilder_ != null) {
            return durationBuilder_.getMessageOrBuilder();
          } else {
            return duration_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getDurationFieldBuilder() {
          if (durationBuilder_ == null) {
            durationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    duration_,
                    getParentForChildren(),
                    isClean());
            duration_ = null;
          }
          return durationBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField ecsc39 = 10;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField ecsc39_ = 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> ecsc39Builder_;
        public boolean hasEcsc39() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcsc39() {
          if (ecsc39Builder_ == null) {
            return ecsc39_;
          } else {
            return ecsc39Builder_.getMessage();
          }
        }
        public Builder setEcsc39(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (ecsc39Builder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ecsc39_ = value;
            onChanged();
          } else {
            ecsc39Builder_.setMessage(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder setEcsc39(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (ecsc39Builder_ == null) {
            ecsc39_ = builderForValue.build();
            onChanged();
          } else {
            ecsc39Builder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder mergeEcsc39(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (ecsc39Builder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200) &&
                ecsc39_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              ecsc39_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(ecsc39_).mergeFrom(value).buildPartial();
            } else {
              ecsc39_ = value;
            }
            onChanged();
          } else {
            ecsc39Builder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        public Builder clearEcsc39() {
          if (ecsc39Builder_ == null) {
            ecsc39_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            ecsc39Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getEcsc39Builder() {
          bitField0_ |= 0x00000200;
          onChanged();
          return getEcsc39FieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcsc39OrBuilder() {
          if (ecsc39Builder_ != null) {
            return ecsc39Builder_.getMessageOrBuilder();
          } else {
            return ecsc39_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getEcsc39FieldBuilder() {
          if (ecsc39Builder_ == null) {
            ecsc39Builder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    ecsc39_,
                    getParentForChildren(),
                    isClean());
            ecsc39_ = null;
          }
          return ecsc39Builder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField oamandatepublications = 11;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField oamandatepublications_ = 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> oamandatepublicationsBuilder_;
        public boolean hasOamandatepublications() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOamandatepublications() {
          if (oamandatepublicationsBuilder_ == null) {
            return oamandatepublications_;
          } else {
            return oamandatepublicationsBuilder_.getMessage();
          }
        }
        public Builder setOamandatepublications(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (oamandatepublicationsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            oamandatepublications_ = value;
            onChanged();
          } else {
            oamandatepublicationsBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder setOamandatepublications(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (oamandatepublicationsBuilder_ == null) {
            oamandatepublications_ = builderForValue.build();
            onChanged();
          } else {
            oamandatepublicationsBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder mergeOamandatepublications(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (oamandatepublicationsBuilder_ == null) {
            if (((bitField0_ & 0x00000400) == 0x00000400) &&
                oamandatepublications_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              oamandatepublications_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(oamandatepublications_).mergeFrom(value).buildPartial();
            } else {
              oamandatepublications_ = value;
            }
            onChanged();
          } else {
            oamandatepublicationsBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000400;
          return this;
        }
        public Builder clearOamandatepublications() {
          if (oamandatepublicationsBuilder_ == null) {
            oamandatepublications_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            oamandatepublicationsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000400);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getOamandatepublicationsBuilder() {
          bitField0_ |= 0x00000400;
          onChanged();
          return getOamandatepublicationsFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOamandatepublicationsOrBuilder() {
          if (oamandatepublicationsBuilder_ != null) {
            return oamandatepublicationsBuilder_.getMessageOrBuilder();
          } else {
            return oamandatepublications_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getOamandatepublicationsFieldBuilder() {
          if (oamandatepublicationsBuilder_ == null) {
            oamandatepublicationsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    oamandatepublications_,
                    getParentForChildren(),
                    isClean());
            oamandatepublications_ = null;
          }
          return oamandatepublicationsBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField ecarticle29_3 = 12;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField ecarticle293_ = 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> ecarticle293Builder_;
        public boolean hasEcarticle293() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getEcarticle293() {
          if (ecarticle293Builder_ == null) {
            return ecarticle293_;
          } else {
            return ecarticle293Builder_.getMessage();
          }
        }
        public Builder setEcarticle293(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (ecarticle293Builder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ecarticle293_ = value;
            onChanged();
          } else {
            ecarticle293Builder_.setMessage(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        public Builder setEcarticle293(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (ecarticle293Builder_ == null) {
            ecarticle293_ = builderForValue.build();
            onChanged();
          } else {
            ecarticle293Builder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        public Builder mergeEcarticle293(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (ecarticle293Builder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800) &&
                ecarticle293_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              ecarticle293_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(ecarticle293_).mergeFrom(value).buildPartial();
            } else {
              ecarticle293_ = value;
            }
            onChanged();
          } else {
            ecarticle293Builder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        public Builder clearEcarticle293() {
          if (ecarticle293Builder_ == null) {
            ecarticle293_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            ecarticle293Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getEcarticle293Builder() {
          bitField0_ |= 0x00000800;
          onChanged();
          return getEcarticle293FieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getEcarticle293OrBuilder() {
          if (ecarticle293Builder_ != null) {
            return ecarticle293Builder_.getMessageOrBuilder();
          } else {
            return ecarticle293_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getEcarticle293FieldBuilder() {
          if (ecarticle293Builder_ == null) {
            ecarticle293Builder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    ecarticle293_,
                    getParentForChildren(),
                    isClean());
            ecarticle293_ = null;
          }
          return ecarticle293Builder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StructuredProperty subjects = 14;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> subjects_ =
          java.util.Collections.emptyList();
        private void ensureSubjectsIsMutable() {
          if (!((bitField0_ & 0x00001000) == 0x00001000)) {
            subjects_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty>(subjects_);
            bitField0_ |= 0x00001000;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> subjectsBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> getSubjectsList() {
          if (subjectsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(subjects_);
          } else {
            return subjectsBuilder_.getMessageList();
          }
        }
        public int getSubjectsCount() {
          if (subjectsBuilder_ == null) {
            return subjects_.size();
          } else {
            return subjectsBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty getSubjects(int index) {
          if (subjectsBuilder_ == null) {
            return subjects_.get(index);
          } else {
            return subjectsBuilder_.getMessage(index);
          }
        }
        public Builder setSubjects(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectsIsMutable();
            subjects_.set(index, value);
            onChanged();
          } else {
            subjectsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setSubjects(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectsBuilder_ == null) {
            ensureSubjectsIsMutable();
            subjects_.set(index, builderForValue.build());
            onChanged();
          } else {
            subjectsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addSubjects(eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectsIsMutable();
            subjects_.add(value);
            onChanged();
          } else {
            subjectsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addSubjects(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty value) {
          if (subjectsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSubjectsIsMutable();
            subjects_.add(index, value);
            onChanged();
          } else {
            subjectsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addSubjects(
            eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectsBuilder_ == null) {
            ensureSubjectsIsMutable();
            subjects_.add(builderForValue.build());
            onChanged();
          } else {
            subjectsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addSubjects(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder builderForValue) {
          if (subjectsBuilder_ == null) {
            ensureSubjectsIsMutable();
            subjects_.add(index, builderForValue.build());
            onChanged();
          } else {
            subjectsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllSubjects(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty> values) {
          if (subjectsBuilder_ == null) {
            ensureSubjectsIsMutable();
            super.addAll(values, subjects_);
            onChanged();
          } else {
            subjectsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearSubjects() {
          if (subjectsBuilder_ == null) {
            subjects_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
            onChanged();
          } else {
            subjectsBuilder_.clear();
          }
          return this;
        }
        public Builder removeSubjects(int index) {
          if (subjectsBuilder_ == null) {
            ensureSubjectsIsMutable();
            subjects_.remove(index);
            onChanged();
          } else {
            subjectsBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder getSubjectsBuilder(
            int index) {
          return getSubjectsFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder getSubjectsOrBuilder(
            int index) {
          if (subjectsBuilder_ == null) {
            return subjects_.get(index);  } else {
            return subjectsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder> 
             getSubjectsOrBuilderList() {
          if (subjectsBuilder_ != null) {
            return subjectsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(subjects_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addSubjectsBuilder() {
          return getSubjectsFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder addSubjectsBuilder(
            int index) {
          return getSubjectsFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder> 
             getSubjectsBuilderList() {
          return getSubjectsFieldBuilder().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> 
            getSubjectsFieldBuilder() {
          if (subjectsBuilder_ == null) {
            subjectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty, eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StructuredPropertyOrBuilder>(
                    subjects_,
                    ((bitField0_ & 0x00001000) == 0x00001000),
                    getParentForChildren(),
                    isClean());
            subjects_ = null;
          }
          return subjectsBuilder_;
        }
        
        // repeated .eu.dnetlib.data.proto.StringField fundingtree = 15;
        private java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> fundingtree_ =
          java.util.Collections.emptyList();
        private void ensureFundingtreeIsMutable() {
          if (!((bitField0_ & 0x00002000) == 0x00002000)) {
            fundingtree_ = new java.util.ArrayList<eu.dnetlib.data.proto.FieldTypeProtos.StringField>(fundingtree_);
            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> fundingtreeBuilder_;
        
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField> getFundingtreeList() {
          if (fundingtreeBuilder_ == null) {
            return java.util.Collections.unmodifiableList(fundingtree_);
          } else {
            return fundingtreeBuilder_.getMessageList();
          }
        }
        public int getFundingtreeCount() {
          if (fundingtreeBuilder_ == null) {
            return fundingtree_.size();
          } else {
            return fundingtreeBuilder_.getCount();
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getFundingtree(int index) {
          if (fundingtreeBuilder_ == null) {
            return fundingtree_.get(index);
          } else {
            return fundingtreeBuilder_.getMessage(index);
          }
        }
        public Builder setFundingtree(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fundingtreeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFundingtreeIsMutable();
            fundingtree_.set(index, value);
            onChanged();
          } else {
            fundingtreeBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setFundingtree(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fundingtreeBuilder_ == null) {
            ensureFundingtreeIsMutable();
            fundingtree_.set(index, builderForValue.build());
            onChanged();
          } else {
            fundingtreeBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addFundingtree(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fundingtreeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFundingtreeIsMutable();
            fundingtree_.add(value);
            onChanged();
          } else {
            fundingtreeBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addFundingtree(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (fundingtreeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFundingtreeIsMutable();
            fundingtree_.add(index, value);
            onChanged();
          } else {
            fundingtreeBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addFundingtree(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fundingtreeBuilder_ == null) {
            ensureFundingtreeIsMutable();
            fundingtree_.add(builderForValue.build());
            onChanged();
          } else {
            fundingtreeBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addFundingtree(
            int index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (fundingtreeBuilder_ == null) {
            ensureFundingtreeIsMutable();
            fundingtree_.add(index, builderForValue.build());
            onChanged();
          } else {
            fundingtreeBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllFundingtree(
            java.lang.Iterable<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringField> values) {
          if (fundingtreeBuilder_ == null) {
            ensureFundingtreeIsMutable();
            super.addAll(values, fundingtree_);
            onChanged();
          } else {
            fundingtreeBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearFundingtree() {
          if (fundingtreeBuilder_ == null) {
            fundingtree_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
            onChanged();
          } else {
            fundingtreeBuilder_.clear();
          }
          return this;
        }
        public Builder removeFundingtree(int index) {
          if (fundingtreeBuilder_ == null) {
            ensureFundingtreeIsMutable();
            fundingtree_.remove(index);
            onChanged();
          } else {
            fundingtreeBuilder_.remove(index);
          }
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getFundingtreeBuilder(
            int index) {
          return getFundingtreeFieldBuilder().getBuilder(index);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getFundingtreeOrBuilder(
            int index) {
          if (fundingtreeBuilder_ == null) {
            return fundingtree_.get(index);  } else {
            return fundingtreeBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
             getFundingtreeOrBuilderList() {
          if (fundingtreeBuilder_ != null) {
            return fundingtreeBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(fundingtree_);
          }
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFundingtreeBuilder() {
          return getFundingtreeFieldBuilder().addBuilder(
              eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder addFundingtreeBuilder(
            int index) {
          return getFundingtreeFieldBuilder().addBuilder(
              index, eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance());
        }
        public java.util.List<eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder> 
             getFundingtreeBuilderList() {
          return getFundingtreeFieldBuilder().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> 
            getFundingtreeFieldBuilder() {
          if (fundingtreeBuilder_ == null) {
            fundingtreeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    fundingtree_,
                    ((bitField0_ & 0x00002000) == 0x00002000),
                    getParentForChildren(),
                    isClean());
            fundingtree_ = null;
          }
          return fundingtreeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.Qualifier contracttype = 13;
        private eu.dnetlib.data.proto.FieldTypeProtos.Qualifier contracttype_ = 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> contracttypeBuilder_;
        public boolean hasContracttype() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier getContracttype() {
          if (contracttypeBuilder_ == null) {
            return contracttype_;
          } else {
            return contracttypeBuilder_.getMessage();
          }
        }
        public Builder setContracttype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (contracttypeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contracttype_ = value;
            onChanged();
          } else {
            contracttypeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00004000;
          return this;
        }
        public Builder setContracttype(
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder builderForValue) {
          if (contracttypeBuilder_ == null) {
            contracttype_ = builderForValue.build();
            onChanged();
          } else {
            contracttypeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00004000;
          return this;
        }
        public Builder mergeContracttype(eu.dnetlib.data.proto.FieldTypeProtos.Qualifier value) {
          if (contracttypeBuilder_ == null) {
            if (((bitField0_ & 0x00004000) == 0x00004000) &&
                contracttype_ != eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance()) {
              contracttype_ =
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.newBuilder(contracttype_).mergeFrom(value).buildPartial();
            } else {
              contracttype_ = value;
            }
            onChanged();
          } else {
            contracttypeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00004000;
          return this;
        }
        public Builder clearContracttype() {
          if (contracttypeBuilder_ == null) {
            contracttype_ = eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.getDefaultInstance();
            onChanged();
          } else {
            contracttypeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00004000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder getContracttypeBuilder() {
          bitField0_ |= 0x00004000;
          onChanged();
          return getContracttypeFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder getContracttypeOrBuilder() {
          if (contracttypeBuilder_ != null) {
            return contracttypeBuilder_.getMessageOrBuilder();
          } else {
            return contracttype_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder> 
            getContracttypeFieldBuilder() {
          if (contracttypeBuilder_ == null) {
            contracttypeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.Qualifier, eu.dnetlib.data.proto.FieldTypeProtos.Qualifier.Builder, eu.dnetlib.data.proto.FieldTypeProtos.QualifierOrBuilder>(
                    contracttype_,
                    getParentForChildren(),
                    isClean());
            contracttype_ = null;
          }
          return contracttypeBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField optional1 = 16;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField optional1_ = 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> optional1Builder_;
        public boolean hasOptional1() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional1() {
          if (optional1Builder_ == null) {
            return optional1_;
          } else {
            return optional1Builder_.getMessage();
          }
        }
        public Builder setOptional1(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (optional1Builder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            optional1_ = value;
            onChanged();
          } else {
            optional1Builder_.setMessage(value);
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder setOptional1(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (optional1Builder_ == null) {
            optional1_ = builderForValue.build();
            onChanged();
          } else {
            optional1Builder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder mergeOptional1(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (optional1Builder_ == null) {
            if (((bitField0_ & 0x00008000) == 0x00008000) &&
                optional1_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              optional1_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(optional1_).mergeFrom(value).buildPartial();
            } else {
              optional1_ = value;
            }
            onChanged();
          } else {
            optional1Builder_.mergeFrom(value);
          }
          bitField0_ |= 0x00008000;
          return this;
        }
        public Builder clearOptional1() {
          if (optional1Builder_ == null) {
            optional1_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            optional1Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00008000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getOptional1Builder() {
          bitField0_ |= 0x00008000;
          onChanged();
          return getOptional1FieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional1OrBuilder() {
          if (optional1Builder_ != null) {
            return optional1Builder_.getMessageOrBuilder();
          } else {
            return optional1_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getOptional1FieldBuilder() {
          if (optional1Builder_ == null) {
            optional1Builder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    optional1_,
                    getParentForChildren(),
                    isClean());
            optional1_ = null;
          }
          return optional1Builder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField optional2 = 17;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField optional2_ = 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> optional2Builder_;
        public boolean hasOptional2() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getOptional2() {
          if (optional2Builder_ == null) {
            return optional2_;
          } else {
            return optional2Builder_.getMessage();
          }
        }
        public Builder setOptional2(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (optional2Builder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            optional2_ = value;
            onChanged();
          } else {
            optional2Builder_.setMessage(value);
          }
          bitField0_ |= 0x00010000;
          return this;
        }
        public Builder setOptional2(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (optional2Builder_ == null) {
            optional2_ = builderForValue.build();
            onChanged();
          } else {
            optional2Builder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00010000;
          return this;
        }
        public Builder mergeOptional2(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (optional2Builder_ == null) {
            if (((bitField0_ & 0x00010000) == 0x00010000) &&
                optional2_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              optional2_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(optional2_).mergeFrom(value).buildPartial();
            } else {
              optional2_ = value;
            }
            onChanged();
          } else {
            optional2Builder_.mergeFrom(value);
          }
          bitField0_ |= 0x00010000;
          return this;
        }
        public Builder clearOptional2() {
          if (optional2Builder_ == null) {
            optional2_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            optional2Builder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00010000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getOptional2Builder() {
          bitField0_ |= 0x00010000;
          onChanged();
          return getOptional2FieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getOptional2OrBuilder() {
          if (optional2Builder_ != null) {
            return optional2Builder_.getMessageOrBuilder();
          } else {
            return optional2_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getOptional2FieldBuilder() {
          if (optional2Builder_ == null) {
            optional2Builder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    optional2_,
                    getParentForChildren(),
                    isClean());
            optional2_ = null;
          }
          return optional2Builder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField jsonextrainfo = 18;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField jsonextrainfo_ = 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> jsonextrainfoBuilder_;
        public boolean hasJsonextrainfo() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getJsonextrainfo() {
          if (jsonextrainfoBuilder_ == null) {
            return jsonextrainfo_;
          } else {
            return jsonextrainfoBuilder_.getMessage();
          }
        }
        public Builder setJsonextrainfo(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (jsonextrainfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            jsonextrainfo_ = value;
            onChanged();
          } else {
            jsonextrainfoBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00020000;
          return this;
        }
        public Builder setJsonextrainfo(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (jsonextrainfoBuilder_ == null) {
            jsonextrainfo_ = builderForValue.build();
            onChanged();
          } else {
            jsonextrainfoBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00020000;
          return this;
        }
        public Builder mergeJsonextrainfo(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (jsonextrainfoBuilder_ == null) {
            if (((bitField0_ & 0x00020000) == 0x00020000) &&
                jsonextrainfo_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              jsonextrainfo_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(jsonextrainfo_).mergeFrom(value).buildPartial();
            } else {
              jsonextrainfo_ = value;
            }
            onChanged();
          } else {
            jsonextrainfoBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00020000;
          return this;
        }
        public Builder clearJsonextrainfo() {
          if (jsonextrainfoBuilder_ == null) {
            jsonextrainfo_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            jsonextrainfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00020000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getJsonextrainfoBuilder() {
          bitField0_ |= 0x00020000;
          onChanged();
          return getJsonextrainfoFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getJsonextrainfoOrBuilder() {
          if (jsonextrainfoBuilder_ != null) {
            return jsonextrainfoBuilder_.getMessageOrBuilder();
          } else {
            return jsonextrainfo_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getJsonextrainfoFieldBuilder() {
          if (jsonextrainfoBuilder_ == null) {
            jsonextrainfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    jsonextrainfo_,
                    getParentForChildren(),
                    isClean());
            jsonextrainfo_ = null;
          }
          return jsonextrainfoBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField contactfullname = 19;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactfullname_ = 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> contactfullnameBuilder_;
        public boolean hasContactfullname() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfullname() {
          if (contactfullnameBuilder_ == null) {
            return contactfullname_;
          } else {
            return contactfullnameBuilder_.getMessage();
          }
        }
        public Builder setContactfullname(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactfullnameBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contactfullname_ = value;
            onChanged();
          } else {
            contactfullnameBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder setContactfullname(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactfullnameBuilder_ == null) {
            contactfullname_ = builderForValue.build();
            onChanged();
          } else {
            contactfullnameBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder mergeContactfullname(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactfullnameBuilder_ == null) {
            if (((bitField0_ & 0x00040000) == 0x00040000) &&
                contactfullname_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              contactfullname_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(contactfullname_).mergeFrom(value).buildPartial();
            } else {
              contactfullname_ = value;
            }
            onChanged();
          } else {
            contactfullnameBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00040000;
          return this;
        }
        public Builder clearContactfullname() {
          if (contactfullnameBuilder_ == null) {
            contactfullname_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            contactfullnameBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00040000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactfullnameBuilder() {
          bitField0_ |= 0x00040000;
          onChanged();
          return getContactfullnameFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfullnameOrBuilder() {
          if (contactfullnameBuilder_ != null) {
            return contactfullnameBuilder_.getMessageOrBuilder();
          } else {
            return contactfullname_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getContactfullnameFieldBuilder() {
          if (contactfullnameBuilder_ == null) {
            contactfullnameBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactfullname_,
                    getParentForChildren(),
                    isClean());
            contactfullname_ = null;
          }
          return contactfullnameBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField contactfax = 20;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactfax_ = 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> contactfaxBuilder_;
        public boolean hasContactfax() {
          return ((bitField0_ & 0x00080000) == 0x00080000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactfax() {
          if (contactfaxBuilder_ == null) {
            return contactfax_;
          } else {
            return contactfaxBuilder_.getMessage();
          }
        }
        public Builder setContactfax(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactfaxBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contactfax_ = value;
            onChanged();
          } else {
            contactfaxBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder setContactfax(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactfaxBuilder_ == null) {
            contactfax_ = builderForValue.build();
            onChanged();
          } else {
            contactfaxBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder mergeContactfax(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactfaxBuilder_ == null) {
            if (((bitField0_ & 0x00080000) == 0x00080000) &&
                contactfax_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              contactfax_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(contactfax_).mergeFrom(value).buildPartial();
            } else {
              contactfax_ = value;
            }
            onChanged();
          } else {
            contactfaxBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00080000;
          return this;
        }
        public Builder clearContactfax() {
          if (contactfaxBuilder_ == null) {
            contactfax_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            contactfaxBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00080000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactfaxBuilder() {
          bitField0_ |= 0x00080000;
          onChanged();
          return getContactfaxFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactfaxOrBuilder() {
          if (contactfaxBuilder_ != null) {
            return contactfaxBuilder_.getMessageOrBuilder();
          } else {
            return contactfax_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getContactfaxFieldBuilder() {
          if (contactfaxBuilder_ == null) {
            contactfaxBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactfax_,
                    getParentForChildren(),
                    isClean());
            contactfax_ = null;
          }
          return contactfaxBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField contactphone = 21;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactphone_ = 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> contactphoneBuilder_;
        public boolean hasContactphone() {
          return ((bitField0_ & 0x00100000) == 0x00100000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactphone() {
          if (contactphoneBuilder_ == null) {
            return contactphone_;
          } else {
            return contactphoneBuilder_.getMessage();
          }
        }
        public Builder setContactphone(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactphoneBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contactphone_ = value;
            onChanged();
          } else {
            contactphoneBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder setContactphone(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactphoneBuilder_ == null) {
            contactphone_ = builderForValue.build();
            onChanged();
          } else {
            contactphoneBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder mergeContactphone(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactphoneBuilder_ == null) {
            if (((bitField0_ & 0x00100000) == 0x00100000) &&
                contactphone_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              contactphone_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(contactphone_).mergeFrom(value).buildPartial();
            } else {
              contactphone_ = value;
            }
            onChanged();
          } else {
            contactphoneBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00100000;
          return this;
        }
        public Builder clearContactphone() {
          if (contactphoneBuilder_ == null) {
            contactphone_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            contactphoneBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00100000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactphoneBuilder() {
          bitField0_ |= 0x00100000;
          onChanged();
          return getContactphoneFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactphoneOrBuilder() {
          if (contactphoneBuilder_ != null) {
            return contactphoneBuilder_.getMessageOrBuilder();
          } else {
            return contactphone_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getContactphoneFieldBuilder() {
          if (contactphoneBuilder_ == null) {
            contactphoneBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactphone_,
                    getParentForChildren(),
                    isClean());
            contactphone_ = null;
          }
          return contactphoneBuilder_;
        }
        
        // optional .eu.dnetlib.data.proto.StringField contactemail = 22;
        private eu.dnetlib.data.proto.FieldTypeProtos.StringField contactemail_ = 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> contactemailBuilder_;
        public boolean hasContactemail() {
          return ((bitField0_ & 0x00200000) == 0x00200000);
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField getContactemail() {
          if (contactemailBuilder_ == null) {
            return contactemail_;
          } else {
            return contactemailBuilder_.getMessage();
          }
        }
        public Builder setContactemail(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactemailBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contactemail_ = value;
            onChanged();
          } else {
            contactemailBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder setContactemail(
            eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder builderForValue) {
          if (contactemailBuilder_ == null) {
            contactemail_ = builderForValue.build();
            onChanged();
          } else {
            contactemailBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder mergeContactemail(eu.dnetlib.data.proto.FieldTypeProtos.StringField value) {
          if (contactemailBuilder_ == null) {
            if (((bitField0_ & 0x00200000) == 0x00200000) &&
                contactemail_ != eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance()) {
              contactemail_ =
                eu.dnetlib.data.proto.FieldTypeProtos.StringField.newBuilder(contactemail_).mergeFrom(value).buildPartial();
            } else {
              contactemail_ = value;
            }
            onChanged();
          } else {
            contactemailBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00200000;
          return this;
        }
        public Builder clearContactemail() {
          if (contactemailBuilder_ == null) {
            contactemail_ = eu.dnetlib.data.proto.FieldTypeProtos.StringField.getDefaultInstance();
            onChanged();
          } else {
            contactemailBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00200000);
          return this;
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder getContactemailBuilder() {
          bitField0_ |= 0x00200000;
          onChanged();
          return getContactemailFieldBuilder().getBuilder();
        }
        public eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder getContactemailOrBuilder() {
          if (contactemailBuilder_ != null) {
            return contactemailBuilder_.getMessageOrBuilder();
          } else {
            return contactemail_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder> 
            getContactemailFieldBuilder() {
          if (contactemailBuilder_ == null) {
            contactemailBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                eu.dnetlib.data.proto.FieldTypeProtos.StringField, eu.dnetlib.data.proto.FieldTypeProtos.StringField.Builder, eu.dnetlib.data.proto.FieldTypeProtos.StringFieldOrBuilder>(
                    contactemail_,
                    getParentForChildren(),
                    isClean());
            contactemail_ = null;
          }
          return contactemailBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Project.Metadata)
      }
      
      static {
        defaultInstance = new Metadata(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Project.Metadata)
    }
    
    private int bitField0_;
    // optional .eu.dnetlib.data.proto.Project.Metadata metadata = 2;
    public static final int METADATA_FIELD_NUMBER = 2;
    private eu.dnetlib.data.proto.ProjectProtos.Project.Metadata metadata_;
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata getMetadata() {
      return metadata_;
    }
    public eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder getMetadataOrBuilder() {
      return metadata_;
    }
    
    private void initFields() {
      metadata_ = eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance();
    }
    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;
        }
      }
      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_);
      }
      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_);
      }
      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.ProjectProtos.Project parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.ProjectProtos.Project 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.ProjectProtos.Project parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static eu.dnetlib.data.proto.ProjectProtos.Project 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.ProjectProtos.Project parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.ProjectProtos.Project 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.ProjectProtos.Project 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.ProjectProtos.Project 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.ProjectProtos.Project parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static eu.dnetlib.data.proto.ProjectProtos.Project 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.ProjectProtos.Project 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.ProjectProtos.ProjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return eu.dnetlib.data.proto.ProjectProtos.internal_static_eu_dnetlib_data_proto_Project_fieldAccessorTable;
      }
      
      // Construct using eu.dnetlib.data.proto.ProjectProtos.Project.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return eu.dnetlib.data.proto.ProjectProtos.Project.getDescriptor();
      }
      
      public eu.dnetlib.data.proto.ProjectProtos.Project getDefaultInstanceForType() {
        return eu.dnetlib.data.proto.ProjectProtos.Project.getDefaultInstance();
      }
      
      public eu.dnetlib.data.proto.ProjectProtos.Project build() {
        eu.dnetlib.data.proto.ProjectProtos.Project result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private eu.dnetlib.data.proto.ProjectProtos.Project buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        eu.dnetlib.data.proto.ProjectProtos.Project result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public eu.dnetlib.data.proto.ProjectProtos.Project buildPartial() {
        eu.dnetlib.data.proto.ProjectProtos.Project result = new eu.dnetlib.data.proto.ProjectProtos.Project(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();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof eu.dnetlib.data.proto.ProjectProtos.Project) {
          return mergeFrom((eu.dnetlib.data.proto.ProjectProtos.Project)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(eu.dnetlib.data.proto.ProjectProtos.Project other) {
        if (other == eu.dnetlib.data.proto.ProjectProtos.Project.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasMetadata()) {
          if (!getMetadata().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.ProjectProtos.Project.Metadata.Builder subBuilder = eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.newBuilder();
              if (hasMetadata()) {
                subBuilder.mergeFrom(getMetadata());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setMetadata(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional .eu.dnetlib.data.proto.Project.Metadata metadata = 2;
      private eu.dnetlib.data.proto.ProjectProtos.Project.Metadata metadata_ = eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.ProjectProtos.Project.Metadata, eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.Builder, eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder> metadataBuilder_;
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      public Builder setMetadata(eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.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.ProjectProtos.Project.Metadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.getDefaultInstance()) {
            metadata_ =
              eu.dnetlib.data.proto.ProjectProtos.Project.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.ProjectProtos.Project.Metadata.getDefaultInstance();
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      public eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      public eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          eu.dnetlib.data.proto.ProjectProtos.Project.Metadata, eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.Builder, eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              eu.dnetlib.data.proto.ProjectProtos.Project.Metadata, eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.Builder, eu.dnetlib.data.proto.ProjectProtos.Project.MetadataOrBuilder>(
                  metadata_,
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:eu.dnetlib.data.proto.Project)
    }
    
    static {
      defaultInstance = new Project(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:eu.dnetlib.data.proto.Project)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Project_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Project_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_eu_dnetlib_data_proto_Project_Metadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_eu_dnetlib_data_proto_Project_Metadata_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\rProject.proto\022\025eu.dnetlib.data.proto\032\017" +
      "FieldType.proto\"\251\n\n\007Project\0229\n\010metadata\030" +
      "\002 \001(\0132\'.eu.dnetlib.data.proto.Project.Me" +
      "tadata\032\342\t\n\010Metadata\0226\n\nwebsiteurl\030\001 \001(\0132" +
      "\".eu.dnetlib.data.proto.StringField\0220\n\004c" +
      "ode\030\002 \001(\0132\".eu.dnetlib.data.proto.String" +
      "Field\0223\n\007acronym\030\003 \001(\0132\".eu.dnetlib.data" +
      ".proto.StringField\0221\n\005title\030\004 \001(\0132\".eu.d" +
      "netlib.data.proto.StringField\0225\n\tstartda" +
      "te\030\005 \001(\0132\".eu.dnetlib.data.proto.StringF",
      "ield\0223\n\007enddate\030\006 \001(\0132\".eu.dnetlib.data." +
      "proto.StringField\022:\n\016callidentifier\030\007 \001(" +
      "\0132\".eu.dnetlib.data.proto.StringField\0224\n" +
      "\010keywords\030\010 \001(\0132\".eu.dnetlib.data.proto." +
      "StringField\0224\n\010duration\030\t \001(\0132\".eu.dnetl" +
      "ib.data.proto.StringField\0222\n\006ecsc39\030\n \001(" +
      "\0132\".eu.dnetlib.data.proto.StringField\022A\n" +
      "\025oamandatepublications\030\013 \001(\0132\".eu.dnetli" +
      "b.data.proto.StringField\0229\n\recarticle29_" +
      "3\030\014 \001(\0132\".eu.dnetlib.data.proto.StringFi",
      "eld\022;\n\010subjects\030\016 \003(\0132).eu.dnetlib.data." +
      "proto.StructuredProperty\0227\n\013fundingtree\030" +
      "\017 \003(\0132\".eu.dnetlib.data.proto.StringFiel" +
      "d\0226\n\014contracttype\030\r \001(\0132 .eu.dnetlib.dat" +
      "a.proto.Qualifier\0225\n\toptional1\030\020 \001(\0132\".e" +
      "u.dnetlib.data.proto.StringField\0225\n\topti" +
      "onal2\030\021 \001(\0132\".eu.dnetlib.data.proto.Stri" +
      "ngField\0229\n\rjsonextrainfo\030\022 \001(\0132\".eu.dnet" +
      "lib.data.proto.StringField\022;\n\017contactful" +
      "lname\030\023 \001(\0132\".eu.dnetlib.data.proto.Stri",
      "ngField\0226\n\ncontactfax\030\024 \001(\0132\".eu.dnetlib" +
      ".data.proto.StringField\0228\n\014contactphone\030" +
      "\025 \001(\0132\".eu.dnetlib.data.proto.StringFiel" +
      "d\0228\n\014contactemail\030\026 \001(\0132\".eu.dnetlib.dat" +
      "a.proto.StringFieldB&\n\025eu.dnetlib.data.p" +
      "rotoB\rProjectProtos"
    };
    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_Project_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_eu_dnetlib_data_proto_Project_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Project_descriptor,
              new java.lang.String[] { "Metadata", },
              eu.dnetlib.data.proto.ProjectProtos.Project.class,
              eu.dnetlib.data.proto.ProjectProtos.Project.Builder.class);
          internal_static_eu_dnetlib_data_proto_Project_Metadata_descriptor =
            internal_static_eu_dnetlib_data_proto_Project_descriptor.getNestedTypes().get(0);
          internal_static_eu_dnetlib_data_proto_Project_Metadata_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_eu_dnetlib_data_proto_Project_Metadata_descriptor,
              new java.lang.String[] { "Websiteurl", "Code", "Acronym", "Title", "Startdate", "Enddate", "Callidentifier", "Keywords", "Duration", "Ecsc39", "Oamandatepublications", "Ecarticle293", "Subjects", "Fundingtree", "Contracttype", "Optional1", "Optional2", "Jsonextrainfo", "Contactfullname", "Contactfax", "Contactphone", "Contactemail", },
              eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.class,
              eu.dnetlib.data.proto.ProjectProtos.Project.Metadata.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)
}
