001// Generated by the protocol buffer compiler.  DO NOT EDIT!
002// source: class_hierarchy.proto
003
004package org.apache.reef.tang.proto;
005
006public final class ClassHierarchyProto {
007  private ClassHierarchyProto() {}
008  public static void registerAllExtensions(
009      com.google.protobuf.ExtensionRegistry registry) {
010  }
011  public interface NodeOrBuilder
012      extends com.google.protobuf.MessageOrBuilder {
013
014    // required string name = 1;
015    /**
016     * <code>required string name = 1;</code>
017     *
018     * <pre>
019     *
020     *The short name of this node (e.g., a class name without the enclosing
021     *package, or a package name without the name of the enclosing package.
022     * </pre>
023     */
024    boolean hasName();
025    /**
026     * <code>required string name = 1;</code>
027     *
028     * <pre>
029     *
030     *The short name of this node (e.g., a class name without the enclosing
031     *package, or a package name without the name of the enclosing package.
032     * </pre>
033     */
034    java.lang.String getName();
035    /**
036     * <code>required string name = 1;</code>
037     *
038     * <pre>
039     *
040     *The short name of this node (e.g., a class name without the enclosing
041     *package, or a package name without the name of the enclosing package.
042     * </pre>
043     */
044    com.google.protobuf.ByteString
045        getNameBytes();
046
047    // required string full_name = 2;
048    /**
049     * <code>required string full_name = 2;</code>
050     *
051     * <pre>
052     *
053     *For some languages it can be difficult to map from a list of nodes to
054     *the correct short name, so for now, the full name is (redundantly)
055     *encoded here.  In Java, the full name is a bunch of short names that
056     *have been concatenated with "." and/or "$".
057     * </pre>
058     */
059    boolean hasFullName();
060    /**
061     * <code>required string full_name = 2;</code>
062     *
063     * <pre>
064     *
065     *For some languages it can be difficult to map from a list of nodes to
066     *the correct short name, so for now, the full name is (redundantly)
067     *encoded here.  In Java, the full name is a bunch of short names that
068     *have been concatenated with "." and/or "$".
069     * </pre>
070     */
071    java.lang.String getFullName();
072    /**
073     * <code>required string full_name = 2;</code>
074     *
075     * <pre>
076     *
077     *For some languages it can be difficult to map from a list of nodes to
078     *the correct short name, so for now, the full name is (redundantly)
079     *encoded here.  In Java, the full name is a bunch of short names that
080     *have been concatenated with "." and/or "$".
081     * </pre>
082     */
083    com.google.protobuf.ByteString
084        getFullNameBytes();
085
086    // optional .ClassNode class_node = 3;
087    /**
088     * <code>optional .ClassNode class_node = 3;</code>
089     *
090     * <pre>
091     *
092     *Exactly one of the next three fields must be defined.  See below for
093     *their documentation.
094     * </pre>
095     */
096    boolean hasClassNode();
097    /**
098     * <code>optional .ClassNode class_node = 3;</code>
099     *
100     * <pre>
101     *
102     *Exactly one of the next three fields must be defined.  See below for
103     *their documentation.
104     * </pre>
105     */
106    org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode getClassNode();
107    /**
108     * <code>optional .ClassNode class_node = 3;</code>
109     *
110     * <pre>
111     *
112     *Exactly one of the next three fields must be defined.  See below for
113     *their documentation.
114     * </pre>
115     */
116    org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder getClassNodeOrBuilder();
117
118    // optional .NamedParameterNode named_parameter_node = 4;
119    /**
120     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
121     */
122    boolean hasNamedParameterNode();
123    /**
124     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
125     */
126    org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode getNamedParameterNode();
127    /**
128     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
129     */
130    org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder getNamedParameterNodeOrBuilder();
131
132    // optional .PackageNode package_node = 5;
133    /**
134     * <code>optional .PackageNode package_node = 5;</code>
135     */
136    boolean hasPackageNode();
137    /**
138     * <code>optional .PackageNode package_node = 5;</code>
139     */
140    org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode getPackageNode();
141    /**
142     * <code>optional .PackageNode package_node = 5;</code>
143     */
144    org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder getPackageNodeOrBuilder();
145
146    // repeated .Node children = 6;
147    /**
148     * <code>repeated .Node children = 6;</code>
149     *
150     * <pre>
151     *
152     *Class hierarchy nodes are arranged in a tree that mirrors the language
153     *namespaces / packages that contain class names (e.g., Java packages,
154     *C++ namespaces).
155     *
156     *A NamedParameterNode cannot have any children.  A ClassNode can not have
157     *any package nodes as children.  PackageNodes cannot have PackageNodes as
158     *children.
159     * </pre>
160     */
161    java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node> 
162        getChildrenList();
163    /**
164     * <code>repeated .Node children = 6;</code>
165     *
166     * <pre>
167     *
168     *Class hierarchy nodes are arranged in a tree that mirrors the language
169     *namespaces / packages that contain class names (e.g., Java packages,
170     *C++ namespaces).
171     *
172     *A NamedParameterNode cannot have any children.  A ClassNode can not have
173     *any package nodes as children.  PackageNodes cannot have PackageNodes as
174     *children.
175     * </pre>
176     */
177    org.apache.reef.tang.proto.ClassHierarchyProto.Node getChildren(int index);
178    /**
179     * <code>repeated .Node children = 6;</code>
180     *
181     * <pre>
182     *
183     *Class hierarchy nodes are arranged in a tree that mirrors the language
184     *namespaces / packages that contain class names (e.g., Java packages,
185     *C++ namespaces).
186     *
187     *A NamedParameterNode cannot have any children.  A ClassNode can not have
188     *any package nodes as children.  PackageNodes cannot have PackageNodes as
189     *children.
190     * </pre>
191     */
192    int getChildrenCount();
193    /**
194     * <code>repeated .Node children = 6;</code>
195     *
196     * <pre>
197     *
198     *Class hierarchy nodes are arranged in a tree that mirrors the language
199     *namespaces / packages that contain class names (e.g., Java packages,
200     *C++ namespaces).
201     *
202     *A NamedParameterNode cannot have any children.  A ClassNode can not have
203     *any package nodes as children.  PackageNodes cannot have PackageNodes as
204     *children.
205     * </pre>
206     */
207    java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder> 
208        getChildrenOrBuilderList();
209    /**
210     * <code>repeated .Node children = 6;</code>
211     *
212     * <pre>
213     *
214     *Class hierarchy nodes are arranged in a tree that mirrors the language
215     *namespaces / packages that contain class names (e.g., Java packages,
216     *C++ namespaces).
217     *
218     *A NamedParameterNode cannot have any children.  A ClassNode can not have
219     *any package nodes as children.  PackageNodes cannot have PackageNodes as
220     *children.
221     * </pre>
222     */
223    org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder getChildrenOrBuilder(
224        int index);
225  }
226  /**
227   * Protobuf type {@code Node}
228   *
229   * <pre>
230   *
231   *Node is the abstract base type for all the data encoded in a class hierarchy.
232   *It is represented as an (un)tagged union, so only one of the three optional
233   *fields can be non-null. 
234   * </pre>
235   */
236  public static final class Node extends
237      com.google.protobuf.GeneratedMessage
238      implements NodeOrBuilder {
239    // Use Node.newBuilder() to construct.
240    private Node(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
241      super(builder);
242      this.unknownFields = builder.getUnknownFields();
243    }
244    private Node(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
245
246    private static final Node defaultInstance;
247    public static Node getDefaultInstance() {
248      return defaultInstance;
249    }
250
251    public Node getDefaultInstanceForType() {
252      return defaultInstance;
253    }
254
255    private final com.google.protobuf.UnknownFieldSet unknownFields;
256    @java.lang.Override
257    public final com.google.protobuf.UnknownFieldSet
258        getUnknownFields() {
259      return this.unknownFields;
260    }
261    private Node(
262        com.google.protobuf.CodedInputStream input,
263        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
264        throws com.google.protobuf.InvalidProtocolBufferException {
265      initFields();
266      int mutable_bitField0_ = 0;
267      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
268          com.google.protobuf.UnknownFieldSet.newBuilder();
269      try {
270        boolean done = false;
271        while (!done) {
272          int tag = input.readTag();
273          switch (tag) {
274            case 0:
275              done = true;
276              break;
277            default: {
278              if (!parseUnknownField(input, unknownFields,
279                                     extensionRegistry, tag)) {
280                done = true;
281              }
282              break;
283            }
284            case 10: {
285              bitField0_ |= 0x00000001;
286              name_ = input.readBytes();
287              break;
288            }
289            case 18: {
290              bitField0_ |= 0x00000002;
291              fullName_ = input.readBytes();
292              break;
293            }
294            case 26: {
295              org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder subBuilder = null;
296              if (((bitField0_ & 0x00000004) == 0x00000004)) {
297                subBuilder = classNode_.toBuilder();
298              }
299              classNode_ = input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.PARSER, extensionRegistry);
300              if (subBuilder != null) {
301                subBuilder.mergeFrom(classNode_);
302                classNode_ = subBuilder.buildPartial();
303              }
304              bitField0_ |= 0x00000004;
305              break;
306            }
307            case 34: {
308              org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder subBuilder = null;
309              if (((bitField0_ & 0x00000008) == 0x00000008)) {
310                subBuilder = namedParameterNode_.toBuilder();
311              }
312              namedParameterNode_ = input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.PARSER, extensionRegistry);
313              if (subBuilder != null) {
314                subBuilder.mergeFrom(namedParameterNode_);
315                namedParameterNode_ = subBuilder.buildPartial();
316              }
317              bitField0_ |= 0x00000008;
318              break;
319            }
320            case 42: {
321              org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder subBuilder = null;
322              if (((bitField0_ & 0x00000010) == 0x00000010)) {
323                subBuilder = packageNode_.toBuilder();
324              }
325              packageNode_ = input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.PARSER, extensionRegistry);
326              if (subBuilder != null) {
327                subBuilder.mergeFrom(packageNode_);
328                packageNode_ = subBuilder.buildPartial();
329              }
330              bitField0_ |= 0x00000010;
331              break;
332            }
333            case 50: {
334              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
335                children_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.Node>();
336                mutable_bitField0_ |= 0x00000020;
337              }
338              children_.add(input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.Node.PARSER, extensionRegistry));
339              break;
340            }
341          }
342        }
343      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
344        throw e.setUnfinishedMessage(this);
345      } catch (java.io.IOException e) {
346        throw new com.google.protobuf.InvalidProtocolBufferException(
347            e.getMessage()).setUnfinishedMessage(this);
348      } finally {
349        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
350          children_ = java.util.Collections.unmodifiableList(children_);
351        }
352        this.unknownFields = unknownFields.build();
353        makeExtensionsImmutable();
354      }
355    }
356    public static final com.google.protobuf.Descriptors.Descriptor
357        getDescriptor() {
358      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_Node_descriptor;
359    }
360
361    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
362        internalGetFieldAccessorTable() {
363      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_Node_fieldAccessorTable
364          .ensureFieldAccessorsInitialized(
365              org.apache.reef.tang.proto.ClassHierarchyProto.Node.class, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder.class);
366    }
367
368    public static com.google.protobuf.Parser<Node> PARSER =
369        new com.google.protobuf.AbstractParser<Node>() {
370      public Node parsePartialFrom(
371          com.google.protobuf.CodedInputStream input,
372          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
373          throws com.google.protobuf.InvalidProtocolBufferException {
374        return new Node(input, extensionRegistry);
375      }
376    };
377
378    @java.lang.Override
379    public com.google.protobuf.Parser<Node> getParserForType() {
380      return PARSER;
381    }
382
383    private int bitField0_;
384    // required string name = 1;
385    public static final int NAME_FIELD_NUMBER = 1;
386    private java.lang.Object name_;
387    /**
388     * <code>required string name = 1;</code>
389     *
390     * <pre>
391     *
392     *The short name of this node (e.g., a class name without the enclosing
393     *package, or a package name without the name of the enclosing package.
394     * </pre>
395     */
396    public boolean hasName() {
397      return ((bitField0_ & 0x00000001) == 0x00000001);
398    }
399    /**
400     * <code>required string name = 1;</code>
401     *
402     * <pre>
403     *
404     *The short name of this node (e.g., a class name without the enclosing
405     *package, or a package name without the name of the enclosing package.
406     * </pre>
407     */
408    public java.lang.String getName() {
409      java.lang.Object ref = name_;
410      if (ref instanceof java.lang.String) {
411        return (java.lang.String) ref;
412      } else {
413        com.google.protobuf.ByteString bs = 
414            (com.google.protobuf.ByteString) ref;
415        java.lang.String s = bs.toStringUtf8();
416        if (bs.isValidUtf8()) {
417          name_ = s;
418        }
419        return s;
420      }
421    }
422    /**
423     * <code>required string name = 1;</code>
424     *
425     * <pre>
426     *
427     *The short name of this node (e.g., a class name without the enclosing
428     *package, or a package name without the name of the enclosing package.
429     * </pre>
430     */
431    public com.google.protobuf.ByteString
432        getNameBytes() {
433      java.lang.Object ref = name_;
434      if (ref instanceof java.lang.String) {
435        com.google.protobuf.ByteString b = 
436            com.google.protobuf.ByteString.copyFromUtf8(
437                (java.lang.String) ref);
438        name_ = b;
439        return b;
440      } else {
441        return (com.google.protobuf.ByteString) ref;
442      }
443    }
444
445    // required string full_name = 2;
446    public static final int FULL_NAME_FIELD_NUMBER = 2;
447    private java.lang.Object fullName_;
448    /**
449     * <code>required string full_name = 2;</code>
450     *
451     * <pre>
452     *
453     *For some languages it can be difficult to map from a list of nodes to
454     *the correct short name, so for now, the full name is (redundantly)
455     *encoded here.  In Java, the full name is a bunch of short names that
456     *have been concatenated with "." and/or "$".
457     * </pre>
458     */
459    public boolean hasFullName() {
460      return ((bitField0_ & 0x00000002) == 0x00000002);
461    }
462    /**
463     * <code>required string full_name = 2;</code>
464     *
465     * <pre>
466     *
467     *For some languages it can be difficult to map from a list of nodes to
468     *the correct short name, so for now, the full name is (redundantly)
469     *encoded here.  In Java, the full name is a bunch of short names that
470     *have been concatenated with "." and/or "$".
471     * </pre>
472     */
473    public java.lang.String getFullName() {
474      java.lang.Object ref = fullName_;
475      if (ref instanceof java.lang.String) {
476        return (java.lang.String) ref;
477      } else {
478        com.google.protobuf.ByteString bs = 
479            (com.google.protobuf.ByteString) ref;
480        java.lang.String s = bs.toStringUtf8();
481        if (bs.isValidUtf8()) {
482          fullName_ = s;
483        }
484        return s;
485      }
486    }
487    /**
488     * <code>required string full_name = 2;</code>
489     *
490     * <pre>
491     *
492     *For some languages it can be difficult to map from a list of nodes to
493     *the correct short name, so for now, the full name is (redundantly)
494     *encoded here.  In Java, the full name is a bunch of short names that
495     *have been concatenated with "." and/or "$".
496     * </pre>
497     */
498    public com.google.protobuf.ByteString
499        getFullNameBytes() {
500      java.lang.Object ref = fullName_;
501      if (ref instanceof java.lang.String) {
502        com.google.protobuf.ByteString b = 
503            com.google.protobuf.ByteString.copyFromUtf8(
504                (java.lang.String) ref);
505        fullName_ = b;
506        return b;
507      } else {
508        return (com.google.protobuf.ByteString) ref;
509      }
510    }
511
512    // optional .ClassNode class_node = 3;
513    public static final int CLASS_NODE_FIELD_NUMBER = 3;
514    private org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode classNode_;
515    /**
516     * <code>optional .ClassNode class_node = 3;</code>
517     *
518     * <pre>
519     *
520     *Exactly one of the next three fields must be defined.  See below for
521     *their documentation.
522     * </pre>
523     */
524    public boolean hasClassNode() {
525      return ((bitField0_ & 0x00000004) == 0x00000004);
526    }
527    /**
528     * <code>optional .ClassNode class_node = 3;</code>
529     *
530     * <pre>
531     *
532     *Exactly one of the next three fields must be defined.  See below for
533     *their documentation.
534     * </pre>
535     */
536    public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode getClassNode() {
537      return classNode_;
538    }
539    /**
540     * <code>optional .ClassNode class_node = 3;</code>
541     *
542     * <pre>
543     *
544     *Exactly one of the next three fields must be defined.  See below for
545     *their documentation.
546     * </pre>
547     */
548    public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder getClassNodeOrBuilder() {
549      return classNode_;
550    }
551
552    // optional .NamedParameterNode named_parameter_node = 4;
553    public static final int NAMED_PARAMETER_NODE_FIELD_NUMBER = 4;
554    private org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode namedParameterNode_;
555    /**
556     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
557     */
558    public boolean hasNamedParameterNode() {
559      return ((bitField0_ & 0x00000008) == 0x00000008);
560    }
561    /**
562     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
563     */
564    public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode getNamedParameterNode() {
565      return namedParameterNode_;
566    }
567    /**
568     * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
569     */
570    public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder getNamedParameterNodeOrBuilder() {
571      return namedParameterNode_;
572    }
573
574    // optional .PackageNode package_node = 5;
575    public static final int PACKAGE_NODE_FIELD_NUMBER = 5;
576    private org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode packageNode_;
577    /**
578     * <code>optional .PackageNode package_node = 5;</code>
579     */
580    public boolean hasPackageNode() {
581      return ((bitField0_ & 0x00000010) == 0x00000010);
582    }
583    /**
584     * <code>optional .PackageNode package_node = 5;</code>
585     */
586    public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode getPackageNode() {
587      return packageNode_;
588    }
589    /**
590     * <code>optional .PackageNode package_node = 5;</code>
591     */
592    public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder getPackageNodeOrBuilder() {
593      return packageNode_;
594    }
595
596    // repeated .Node children = 6;
597    public static final int CHILDREN_FIELD_NUMBER = 6;
598    private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node> children_;
599    /**
600     * <code>repeated .Node children = 6;</code>
601     *
602     * <pre>
603     *
604     *Class hierarchy nodes are arranged in a tree that mirrors the language
605     *namespaces / packages that contain class names (e.g., Java packages,
606     *C++ namespaces).
607     *
608     *A NamedParameterNode cannot have any children.  A ClassNode can not have
609     *any package nodes as children.  PackageNodes cannot have PackageNodes as
610     *children.
611     * </pre>
612     */
613    public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node> getChildrenList() {
614      return children_;
615    }
616    /**
617     * <code>repeated .Node children = 6;</code>
618     *
619     * <pre>
620     *
621     *Class hierarchy nodes are arranged in a tree that mirrors the language
622     *namespaces / packages that contain class names (e.g., Java packages,
623     *C++ namespaces).
624     *
625     *A NamedParameterNode cannot have any children.  A ClassNode can not have
626     *any package nodes as children.  PackageNodes cannot have PackageNodes as
627     *children.
628     * </pre>
629     */
630    public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder> 
631        getChildrenOrBuilderList() {
632      return children_;
633    }
634    /**
635     * <code>repeated .Node children = 6;</code>
636     *
637     * <pre>
638     *
639     *Class hierarchy nodes are arranged in a tree that mirrors the language
640     *namespaces / packages that contain class names (e.g., Java packages,
641     *C++ namespaces).
642     *
643     *A NamedParameterNode cannot have any children.  A ClassNode can not have
644     *any package nodes as children.  PackageNodes cannot have PackageNodes as
645     *children.
646     * </pre>
647     */
648    public int getChildrenCount() {
649      return children_.size();
650    }
651    /**
652     * <code>repeated .Node children = 6;</code>
653     *
654     * <pre>
655     *
656     *Class hierarchy nodes are arranged in a tree that mirrors the language
657     *namespaces / packages that contain class names (e.g., Java packages,
658     *C++ namespaces).
659     *
660     *A NamedParameterNode cannot have any children.  A ClassNode can not have
661     *any package nodes as children.  PackageNodes cannot have PackageNodes as
662     *children.
663     * </pre>
664     */
665    public org.apache.reef.tang.proto.ClassHierarchyProto.Node getChildren(int index) {
666      return children_.get(index);
667    }
668    /**
669     * <code>repeated .Node children = 6;</code>
670     *
671     * <pre>
672     *
673     *Class hierarchy nodes are arranged in a tree that mirrors the language
674     *namespaces / packages that contain class names (e.g., Java packages,
675     *C++ namespaces).
676     *
677     *A NamedParameterNode cannot have any children.  A ClassNode can not have
678     *any package nodes as children.  PackageNodes cannot have PackageNodes as
679     *children.
680     * </pre>
681     */
682    public org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder getChildrenOrBuilder(
683        int index) {
684      return children_.get(index);
685    }
686
687    private void initFields() {
688      name_ = "";
689      fullName_ = "";
690      classNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance();
691      namedParameterNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
692      packageNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
693      children_ = java.util.Collections.emptyList();
694    }
695    private byte memoizedIsInitialized = -1;
696    public final boolean isInitialized() {
697      byte isInitialized = memoizedIsInitialized;
698      if (isInitialized != -1) return isInitialized == 1;
699
700      if (!hasName()) {
701        memoizedIsInitialized = 0;
702        return false;
703      }
704      if (!hasFullName()) {
705        memoizedIsInitialized = 0;
706        return false;
707      }
708      if (hasClassNode()) {
709        if (!getClassNode().isInitialized()) {
710          memoizedIsInitialized = 0;
711          return false;
712        }
713      }
714      if (hasNamedParameterNode()) {
715        if (!getNamedParameterNode().isInitialized()) {
716          memoizedIsInitialized = 0;
717          return false;
718        }
719      }
720      for (int i = 0; i < getChildrenCount(); i++) {
721        if (!getChildren(i).isInitialized()) {
722          memoizedIsInitialized = 0;
723          return false;
724        }
725      }
726      memoizedIsInitialized = 1;
727      return true;
728    }
729
730    public void writeTo(com.google.protobuf.CodedOutputStream output)
731                        throws java.io.IOException {
732      getSerializedSize();
733      if (((bitField0_ & 0x00000001) == 0x00000001)) {
734        output.writeBytes(1, getNameBytes());
735      }
736      if (((bitField0_ & 0x00000002) == 0x00000002)) {
737        output.writeBytes(2, getFullNameBytes());
738      }
739      if (((bitField0_ & 0x00000004) == 0x00000004)) {
740        output.writeMessage(3, classNode_);
741      }
742      if (((bitField0_ & 0x00000008) == 0x00000008)) {
743        output.writeMessage(4, namedParameterNode_);
744      }
745      if (((bitField0_ & 0x00000010) == 0x00000010)) {
746        output.writeMessage(5, packageNode_);
747      }
748      for (int i = 0; i < children_.size(); i++) {
749        output.writeMessage(6, children_.get(i));
750      }
751      getUnknownFields().writeTo(output);
752    }
753
754    private int memoizedSerializedSize = -1;
755    public int getSerializedSize() {
756      int size = memoizedSerializedSize;
757      if (size != -1) return size;
758
759      size = 0;
760      if (((bitField0_ & 0x00000001) == 0x00000001)) {
761        size += com.google.protobuf.CodedOutputStream
762          .computeBytesSize(1, getNameBytes());
763      }
764      if (((bitField0_ & 0x00000002) == 0x00000002)) {
765        size += com.google.protobuf.CodedOutputStream
766          .computeBytesSize(2, getFullNameBytes());
767      }
768      if (((bitField0_ & 0x00000004) == 0x00000004)) {
769        size += com.google.protobuf.CodedOutputStream
770          .computeMessageSize(3, classNode_);
771      }
772      if (((bitField0_ & 0x00000008) == 0x00000008)) {
773        size += com.google.protobuf.CodedOutputStream
774          .computeMessageSize(4, namedParameterNode_);
775      }
776      if (((bitField0_ & 0x00000010) == 0x00000010)) {
777        size += com.google.protobuf.CodedOutputStream
778          .computeMessageSize(5, packageNode_);
779      }
780      for (int i = 0; i < children_.size(); i++) {
781        size += com.google.protobuf.CodedOutputStream
782          .computeMessageSize(6, children_.get(i));
783      }
784      size += getUnknownFields().getSerializedSize();
785      memoizedSerializedSize = size;
786      return size;
787    }
788
789    private static final long serialVersionUID = 0L;
790    @java.lang.Override
791    protected java.lang.Object writeReplace()
792        throws java.io.ObjectStreamException {
793      return super.writeReplace();
794    }
795
796    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
797        com.google.protobuf.ByteString data)
798        throws com.google.protobuf.InvalidProtocolBufferException {
799      return PARSER.parseFrom(data);
800    }
801    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
802        com.google.protobuf.ByteString data,
803        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
804        throws com.google.protobuf.InvalidProtocolBufferException {
805      return PARSER.parseFrom(data, extensionRegistry);
806    }
807    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(byte[] data)
808        throws com.google.protobuf.InvalidProtocolBufferException {
809      return PARSER.parseFrom(data);
810    }
811    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
812        byte[] data,
813        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
814        throws com.google.protobuf.InvalidProtocolBufferException {
815      return PARSER.parseFrom(data, extensionRegistry);
816    }
817    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(java.io.InputStream input)
818        throws java.io.IOException {
819      return PARSER.parseFrom(input);
820    }
821    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
822        java.io.InputStream input,
823        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
824        throws java.io.IOException {
825      return PARSER.parseFrom(input, extensionRegistry);
826    }
827    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseDelimitedFrom(java.io.InputStream input)
828        throws java.io.IOException {
829      return PARSER.parseDelimitedFrom(input);
830    }
831    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseDelimitedFrom(
832        java.io.InputStream input,
833        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
834        throws java.io.IOException {
835      return PARSER.parseDelimitedFrom(input, extensionRegistry);
836    }
837    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
838        com.google.protobuf.CodedInputStream input)
839        throws java.io.IOException {
840      return PARSER.parseFrom(input);
841    }
842    public static org.apache.reef.tang.proto.ClassHierarchyProto.Node parseFrom(
843        com.google.protobuf.CodedInputStream input,
844        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
845        throws java.io.IOException {
846      return PARSER.parseFrom(input, extensionRegistry);
847    }
848
849    public static Builder newBuilder() { return Builder.create(); }
850    public Builder newBuilderForType() { return newBuilder(); }
851    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.Node prototype) {
852      return newBuilder().mergeFrom(prototype);
853    }
854    public Builder toBuilder() { return newBuilder(this); }
855
856    @java.lang.Override
857    protected Builder newBuilderForType(
858        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
859      Builder builder = new Builder(parent);
860      return builder;
861    }
862    /**
863     * Protobuf type {@code Node}
864     *
865     * <pre>
866     *
867     *Node is the abstract base type for all the data encoded in a class hierarchy.
868     *It is represented as an (un)tagged union, so only one of the three optional
869     *fields can be non-null. 
870     * </pre>
871     */
872    public static final class Builder extends
873        com.google.protobuf.GeneratedMessage.Builder<Builder>
874       implements org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder {
875      public static final com.google.protobuf.Descriptors.Descriptor
876          getDescriptor() {
877        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_Node_descriptor;
878      }
879
880      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
881          internalGetFieldAccessorTable() {
882        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_Node_fieldAccessorTable
883            .ensureFieldAccessorsInitialized(
884                org.apache.reef.tang.proto.ClassHierarchyProto.Node.class, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder.class);
885      }
886
887      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.Node.newBuilder()
888      private Builder() {
889        maybeForceBuilderInitialization();
890      }
891
892      private Builder(
893          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
894        super(parent);
895        maybeForceBuilderInitialization();
896      }
897      private void maybeForceBuilderInitialization() {
898        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
899          getClassNodeFieldBuilder();
900          getNamedParameterNodeFieldBuilder();
901          getPackageNodeFieldBuilder();
902          getChildrenFieldBuilder();
903        }
904      }
905      private static Builder create() {
906        return new Builder();
907      }
908
909      public Builder clear() {
910        super.clear();
911        name_ = "";
912        bitField0_ = (bitField0_ & ~0x00000001);
913        fullName_ = "";
914        bitField0_ = (bitField0_ & ~0x00000002);
915        if (classNodeBuilder_ == null) {
916          classNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance();
917        } else {
918          classNodeBuilder_.clear();
919        }
920        bitField0_ = (bitField0_ & ~0x00000004);
921        if (namedParameterNodeBuilder_ == null) {
922          namedParameterNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
923        } else {
924          namedParameterNodeBuilder_.clear();
925        }
926        bitField0_ = (bitField0_ & ~0x00000008);
927        if (packageNodeBuilder_ == null) {
928          packageNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
929        } else {
930          packageNodeBuilder_.clear();
931        }
932        bitField0_ = (bitField0_ & ~0x00000010);
933        if (childrenBuilder_ == null) {
934          children_ = java.util.Collections.emptyList();
935          bitField0_ = (bitField0_ & ~0x00000020);
936        } else {
937          childrenBuilder_.clear();
938        }
939        return this;
940      }
941
942      public Builder clone() {
943        return create().mergeFrom(buildPartial());
944      }
945
946      public com.google.protobuf.Descriptors.Descriptor
947          getDescriptorForType() {
948        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_Node_descriptor;
949      }
950
951      public org.apache.reef.tang.proto.ClassHierarchyProto.Node getDefaultInstanceForType() {
952        return org.apache.reef.tang.proto.ClassHierarchyProto.Node.getDefaultInstance();
953      }
954
955      public org.apache.reef.tang.proto.ClassHierarchyProto.Node build() {
956        org.apache.reef.tang.proto.ClassHierarchyProto.Node result = buildPartial();
957        if (!result.isInitialized()) {
958          throw newUninitializedMessageException(result);
959        }
960        return result;
961      }
962
963      public org.apache.reef.tang.proto.ClassHierarchyProto.Node buildPartial() {
964        org.apache.reef.tang.proto.ClassHierarchyProto.Node result = new org.apache.reef.tang.proto.ClassHierarchyProto.Node(this);
965        int from_bitField0_ = bitField0_;
966        int to_bitField0_ = 0;
967        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
968          to_bitField0_ |= 0x00000001;
969        }
970        result.name_ = name_;
971        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
972          to_bitField0_ |= 0x00000002;
973        }
974        result.fullName_ = fullName_;
975        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
976          to_bitField0_ |= 0x00000004;
977        }
978        if (classNodeBuilder_ == null) {
979          result.classNode_ = classNode_;
980        } else {
981          result.classNode_ = classNodeBuilder_.build();
982        }
983        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
984          to_bitField0_ |= 0x00000008;
985        }
986        if (namedParameterNodeBuilder_ == null) {
987          result.namedParameterNode_ = namedParameterNode_;
988        } else {
989          result.namedParameterNode_ = namedParameterNodeBuilder_.build();
990        }
991        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
992          to_bitField0_ |= 0x00000010;
993        }
994        if (packageNodeBuilder_ == null) {
995          result.packageNode_ = packageNode_;
996        } else {
997          result.packageNode_ = packageNodeBuilder_.build();
998        }
999        if (childrenBuilder_ == null) {
1000          if (((bitField0_ & 0x00000020) == 0x00000020)) {
1001            children_ = java.util.Collections.unmodifiableList(children_);
1002            bitField0_ = (bitField0_ & ~0x00000020);
1003          }
1004          result.children_ = children_;
1005        } else {
1006          result.children_ = childrenBuilder_.build();
1007        }
1008        result.bitField0_ = to_bitField0_;
1009        onBuilt();
1010        return result;
1011      }
1012
1013      public Builder mergeFrom(com.google.protobuf.Message other) {
1014        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.Node) {
1015          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.Node)other);
1016        } else {
1017          super.mergeFrom(other);
1018          return this;
1019        }
1020      }
1021
1022      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.Node other) {
1023        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.Node.getDefaultInstance()) return this;
1024        if (other.hasName()) {
1025          bitField0_ |= 0x00000001;
1026          name_ = other.name_;
1027          onChanged();
1028        }
1029        if (other.hasFullName()) {
1030          bitField0_ |= 0x00000002;
1031          fullName_ = other.fullName_;
1032          onChanged();
1033        }
1034        if (other.hasClassNode()) {
1035          mergeClassNode(other.getClassNode());
1036        }
1037        if (other.hasNamedParameterNode()) {
1038          mergeNamedParameterNode(other.getNamedParameterNode());
1039        }
1040        if (other.hasPackageNode()) {
1041          mergePackageNode(other.getPackageNode());
1042        }
1043        if (childrenBuilder_ == null) {
1044          if (!other.children_.isEmpty()) {
1045            if (children_.isEmpty()) {
1046              children_ = other.children_;
1047              bitField0_ = (bitField0_ & ~0x00000020);
1048            } else {
1049              ensureChildrenIsMutable();
1050              children_.addAll(other.children_);
1051            }
1052            onChanged();
1053          }
1054        } else {
1055          if (!other.children_.isEmpty()) {
1056            if (childrenBuilder_.isEmpty()) {
1057              childrenBuilder_.dispose();
1058              childrenBuilder_ = null;
1059              children_ = other.children_;
1060              bitField0_ = (bitField0_ & ~0x00000020);
1061              childrenBuilder_ = 
1062                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
1063                   getChildrenFieldBuilder() : null;
1064            } else {
1065              childrenBuilder_.addAllMessages(other.children_);
1066            }
1067          }
1068        }
1069        this.mergeUnknownFields(other.getUnknownFields());
1070        return this;
1071      }
1072
1073      public final boolean isInitialized() {
1074        if (!hasName()) {
1075          
1076          return false;
1077        }
1078        if (!hasFullName()) {
1079          
1080          return false;
1081        }
1082        if (hasClassNode()) {
1083          if (!getClassNode().isInitialized()) {
1084            
1085            return false;
1086          }
1087        }
1088        if (hasNamedParameterNode()) {
1089          if (!getNamedParameterNode().isInitialized()) {
1090            
1091            return false;
1092          }
1093        }
1094        for (int i = 0; i < getChildrenCount(); i++) {
1095          if (!getChildren(i).isInitialized()) {
1096            
1097            return false;
1098          }
1099        }
1100        return true;
1101      }
1102
1103      public Builder mergeFrom(
1104          com.google.protobuf.CodedInputStream input,
1105          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
1106          throws java.io.IOException {
1107        org.apache.reef.tang.proto.ClassHierarchyProto.Node parsedMessage = null;
1108        try {
1109          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
1110        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
1111          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.Node) e.getUnfinishedMessage();
1112          throw e;
1113        } finally {
1114          if (parsedMessage != null) {
1115            mergeFrom(parsedMessage);
1116          }
1117        }
1118        return this;
1119      }
1120      private int bitField0_;
1121
1122      // required string name = 1;
1123      private java.lang.Object name_ = "";
1124      /**
1125       * <code>required string name = 1;</code>
1126       *
1127       * <pre>
1128       *
1129       *The short name of this node (e.g., a class name without the enclosing
1130       *package, or a package name without the name of the enclosing package.
1131       * </pre>
1132       */
1133      public boolean hasName() {
1134        return ((bitField0_ & 0x00000001) == 0x00000001);
1135      }
1136      /**
1137       * <code>required string name = 1;</code>
1138       *
1139       * <pre>
1140       *
1141       *The short name of this node (e.g., a class name without the enclosing
1142       *package, or a package name without the name of the enclosing package.
1143       * </pre>
1144       */
1145      public java.lang.String getName() {
1146        java.lang.Object ref = name_;
1147        if (!(ref instanceof java.lang.String)) {
1148          java.lang.String s = ((com.google.protobuf.ByteString) ref)
1149              .toStringUtf8();
1150          name_ = s;
1151          return s;
1152        } else {
1153          return (java.lang.String) ref;
1154        }
1155      }
1156      /**
1157       * <code>required string name = 1;</code>
1158       *
1159       * <pre>
1160       *
1161       *The short name of this node (e.g., a class name without the enclosing
1162       *package, or a package name without the name of the enclosing package.
1163       * </pre>
1164       */
1165      public com.google.protobuf.ByteString
1166          getNameBytes() {
1167        java.lang.Object ref = name_;
1168        if (ref instanceof String) {
1169          com.google.protobuf.ByteString b = 
1170              com.google.protobuf.ByteString.copyFromUtf8(
1171                  (java.lang.String) ref);
1172          name_ = b;
1173          return b;
1174        } else {
1175          return (com.google.protobuf.ByteString) ref;
1176        }
1177      }
1178      /**
1179       * <code>required string name = 1;</code>
1180       *
1181       * <pre>
1182       *
1183       *The short name of this node (e.g., a class name without the enclosing
1184       *package, or a package name without the name of the enclosing package.
1185       * </pre>
1186       */
1187      public Builder setName(
1188          java.lang.String value) {
1189        if (value == null) {
1190    throw new NullPointerException();
1191  }
1192  bitField0_ |= 0x00000001;
1193        name_ = value;
1194        onChanged();
1195        return this;
1196      }
1197      /**
1198       * <code>required string name = 1;</code>
1199       *
1200       * <pre>
1201       *
1202       *The short name of this node (e.g., a class name without the enclosing
1203       *package, or a package name without the name of the enclosing package.
1204       * </pre>
1205       */
1206      public Builder clearName() {
1207        bitField0_ = (bitField0_ & ~0x00000001);
1208        name_ = getDefaultInstance().getName();
1209        onChanged();
1210        return this;
1211      }
1212      /**
1213       * <code>required string name = 1;</code>
1214       *
1215       * <pre>
1216       *
1217       *The short name of this node (e.g., a class name without the enclosing
1218       *package, or a package name without the name of the enclosing package.
1219       * </pre>
1220       */
1221      public Builder setNameBytes(
1222          com.google.protobuf.ByteString value) {
1223        if (value == null) {
1224    throw new NullPointerException();
1225  }
1226  bitField0_ |= 0x00000001;
1227        name_ = value;
1228        onChanged();
1229        return this;
1230      }
1231
1232      // required string full_name = 2;
1233      private java.lang.Object fullName_ = "";
1234      /**
1235       * <code>required string full_name = 2;</code>
1236       *
1237       * <pre>
1238       *
1239       *For some languages it can be difficult to map from a list of nodes to
1240       *the correct short name, so for now, the full name is (redundantly)
1241       *encoded here.  In Java, the full name is a bunch of short names that
1242       *have been concatenated with "." and/or "$".
1243       * </pre>
1244       */
1245      public boolean hasFullName() {
1246        return ((bitField0_ & 0x00000002) == 0x00000002);
1247      }
1248      /**
1249       * <code>required string full_name = 2;</code>
1250       *
1251       * <pre>
1252       *
1253       *For some languages it can be difficult to map from a list of nodes to
1254       *the correct short name, so for now, the full name is (redundantly)
1255       *encoded here.  In Java, the full name is a bunch of short names that
1256       *have been concatenated with "." and/or "$".
1257       * </pre>
1258       */
1259      public java.lang.String getFullName() {
1260        java.lang.Object ref = fullName_;
1261        if (!(ref instanceof java.lang.String)) {
1262          java.lang.String s = ((com.google.protobuf.ByteString) ref)
1263              .toStringUtf8();
1264          fullName_ = s;
1265          return s;
1266        } else {
1267          return (java.lang.String) ref;
1268        }
1269      }
1270      /**
1271       * <code>required string full_name = 2;</code>
1272       *
1273       * <pre>
1274       *
1275       *For some languages it can be difficult to map from a list of nodes to
1276       *the correct short name, so for now, the full name is (redundantly)
1277       *encoded here.  In Java, the full name is a bunch of short names that
1278       *have been concatenated with "." and/or "$".
1279       * </pre>
1280       */
1281      public com.google.protobuf.ByteString
1282          getFullNameBytes() {
1283        java.lang.Object ref = fullName_;
1284        if (ref instanceof String) {
1285          com.google.protobuf.ByteString b = 
1286              com.google.protobuf.ByteString.copyFromUtf8(
1287                  (java.lang.String) ref);
1288          fullName_ = b;
1289          return b;
1290        } else {
1291          return (com.google.protobuf.ByteString) ref;
1292        }
1293      }
1294      /**
1295       * <code>required string full_name = 2;</code>
1296       *
1297       * <pre>
1298       *
1299       *For some languages it can be difficult to map from a list of nodes to
1300       *the correct short name, so for now, the full name is (redundantly)
1301       *encoded here.  In Java, the full name is a bunch of short names that
1302       *have been concatenated with "." and/or "$".
1303       * </pre>
1304       */
1305      public Builder setFullName(
1306          java.lang.String value) {
1307        if (value == null) {
1308    throw new NullPointerException();
1309  }
1310  bitField0_ |= 0x00000002;
1311        fullName_ = value;
1312        onChanged();
1313        return this;
1314      }
1315      /**
1316       * <code>required string full_name = 2;</code>
1317       *
1318       * <pre>
1319       *
1320       *For some languages it can be difficult to map from a list of nodes to
1321       *the correct short name, so for now, the full name is (redundantly)
1322       *encoded here.  In Java, the full name is a bunch of short names that
1323       *have been concatenated with "." and/or "$".
1324       * </pre>
1325       */
1326      public Builder clearFullName() {
1327        bitField0_ = (bitField0_ & ~0x00000002);
1328        fullName_ = getDefaultInstance().getFullName();
1329        onChanged();
1330        return this;
1331      }
1332      /**
1333       * <code>required string full_name = 2;</code>
1334       *
1335       * <pre>
1336       *
1337       *For some languages it can be difficult to map from a list of nodes to
1338       *the correct short name, so for now, the full name is (redundantly)
1339       *encoded here.  In Java, the full name is a bunch of short names that
1340       *have been concatenated with "." and/or "$".
1341       * </pre>
1342       */
1343      public Builder setFullNameBytes(
1344          com.google.protobuf.ByteString value) {
1345        if (value == null) {
1346    throw new NullPointerException();
1347  }
1348  bitField0_ |= 0x00000002;
1349        fullName_ = value;
1350        onChanged();
1351        return this;
1352      }
1353
1354      // optional .ClassNode class_node = 3;
1355      private org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode classNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance();
1356      private com.google.protobuf.SingleFieldBuilder<
1357          org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder> classNodeBuilder_;
1358      /**
1359       * <code>optional .ClassNode class_node = 3;</code>
1360       *
1361       * <pre>
1362       *
1363       *Exactly one of the next three fields must be defined.  See below for
1364       *their documentation.
1365       * </pre>
1366       */
1367      public boolean hasClassNode() {
1368        return ((bitField0_ & 0x00000004) == 0x00000004);
1369      }
1370      /**
1371       * <code>optional .ClassNode class_node = 3;</code>
1372       *
1373       * <pre>
1374       *
1375       *Exactly one of the next three fields must be defined.  See below for
1376       *their documentation.
1377       * </pre>
1378       */
1379      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode getClassNode() {
1380        if (classNodeBuilder_ == null) {
1381          return classNode_;
1382        } else {
1383          return classNodeBuilder_.getMessage();
1384        }
1385      }
1386      /**
1387       * <code>optional .ClassNode class_node = 3;</code>
1388       *
1389       * <pre>
1390       *
1391       *Exactly one of the next three fields must be defined.  See below for
1392       *their documentation.
1393       * </pre>
1394       */
1395      public Builder setClassNode(org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode value) {
1396        if (classNodeBuilder_ == null) {
1397          if (value == null) {
1398            throw new NullPointerException();
1399          }
1400          classNode_ = value;
1401          onChanged();
1402        } else {
1403          classNodeBuilder_.setMessage(value);
1404        }
1405        bitField0_ |= 0x00000004;
1406        return this;
1407      }
1408      /**
1409       * <code>optional .ClassNode class_node = 3;</code>
1410       *
1411       * <pre>
1412       *
1413       *Exactly one of the next three fields must be defined.  See below for
1414       *their documentation.
1415       * </pre>
1416       */
1417      public Builder setClassNode(
1418          org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder builderForValue) {
1419        if (classNodeBuilder_ == null) {
1420          classNode_ = builderForValue.build();
1421          onChanged();
1422        } else {
1423          classNodeBuilder_.setMessage(builderForValue.build());
1424        }
1425        bitField0_ |= 0x00000004;
1426        return this;
1427      }
1428      /**
1429       * <code>optional .ClassNode class_node = 3;</code>
1430       *
1431       * <pre>
1432       *
1433       *Exactly one of the next three fields must be defined.  See below for
1434       *their documentation.
1435       * </pre>
1436       */
1437      public Builder mergeClassNode(org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode value) {
1438        if (classNodeBuilder_ == null) {
1439          if (((bitField0_ & 0x00000004) == 0x00000004) &&
1440              classNode_ != org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance()) {
1441            classNode_ =
1442              org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.newBuilder(classNode_).mergeFrom(value).buildPartial();
1443          } else {
1444            classNode_ = value;
1445          }
1446          onChanged();
1447        } else {
1448          classNodeBuilder_.mergeFrom(value);
1449        }
1450        bitField0_ |= 0x00000004;
1451        return this;
1452      }
1453      /**
1454       * <code>optional .ClassNode class_node = 3;</code>
1455       *
1456       * <pre>
1457       *
1458       *Exactly one of the next three fields must be defined.  See below for
1459       *their documentation.
1460       * </pre>
1461       */
1462      public Builder clearClassNode() {
1463        if (classNodeBuilder_ == null) {
1464          classNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance();
1465          onChanged();
1466        } else {
1467          classNodeBuilder_.clear();
1468        }
1469        bitField0_ = (bitField0_ & ~0x00000004);
1470        return this;
1471      }
1472      /**
1473       * <code>optional .ClassNode class_node = 3;</code>
1474       *
1475       * <pre>
1476       *
1477       *Exactly one of the next three fields must be defined.  See below for
1478       *their documentation.
1479       * </pre>
1480       */
1481      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder getClassNodeBuilder() {
1482        bitField0_ |= 0x00000004;
1483        onChanged();
1484        return getClassNodeFieldBuilder().getBuilder();
1485      }
1486      /**
1487       * <code>optional .ClassNode class_node = 3;</code>
1488       *
1489       * <pre>
1490       *
1491       *Exactly one of the next three fields must be defined.  See below for
1492       *their documentation.
1493       * </pre>
1494       */
1495      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder getClassNodeOrBuilder() {
1496        if (classNodeBuilder_ != null) {
1497          return classNodeBuilder_.getMessageOrBuilder();
1498        } else {
1499          return classNode_;
1500        }
1501      }
1502      /**
1503       * <code>optional .ClassNode class_node = 3;</code>
1504       *
1505       * <pre>
1506       *
1507       *Exactly one of the next three fields must be defined.  See below for
1508       *their documentation.
1509       * </pre>
1510       */
1511      private com.google.protobuf.SingleFieldBuilder<
1512          org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder> 
1513          getClassNodeFieldBuilder() {
1514        if (classNodeBuilder_ == null) {
1515          classNodeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
1516              org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder>(
1517                  classNode_,
1518                  getParentForChildren(),
1519                  isClean());
1520          classNode_ = null;
1521        }
1522        return classNodeBuilder_;
1523      }
1524
1525      // optional .NamedParameterNode named_parameter_node = 4;
1526      private org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode namedParameterNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
1527      private com.google.protobuf.SingleFieldBuilder<
1528          org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder> namedParameterNodeBuilder_;
1529      /**
1530       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1531       */
1532      public boolean hasNamedParameterNode() {
1533        return ((bitField0_ & 0x00000008) == 0x00000008);
1534      }
1535      /**
1536       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1537       */
1538      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode getNamedParameterNode() {
1539        if (namedParameterNodeBuilder_ == null) {
1540          return namedParameterNode_;
1541        } else {
1542          return namedParameterNodeBuilder_.getMessage();
1543        }
1544      }
1545      /**
1546       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1547       */
1548      public Builder setNamedParameterNode(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode value) {
1549        if (namedParameterNodeBuilder_ == null) {
1550          if (value == null) {
1551            throw new NullPointerException();
1552          }
1553          namedParameterNode_ = value;
1554          onChanged();
1555        } else {
1556          namedParameterNodeBuilder_.setMessage(value);
1557        }
1558        bitField0_ |= 0x00000008;
1559        return this;
1560      }
1561      /**
1562       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1563       */
1564      public Builder setNamedParameterNode(
1565          org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder builderForValue) {
1566        if (namedParameterNodeBuilder_ == null) {
1567          namedParameterNode_ = builderForValue.build();
1568          onChanged();
1569        } else {
1570          namedParameterNodeBuilder_.setMessage(builderForValue.build());
1571        }
1572        bitField0_ |= 0x00000008;
1573        return this;
1574      }
1575      /**
1576       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1577       */
1578      public Builder mergeNamedParameterNode(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode value) {
1579        if (namedParameterNodeBuilder_ == null) {
1580          if (((bitField0_ & 0x00000008) == 0x00000008) &&
1581              namedParameterNode_ != org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance()) {
1582            namedParameterNode_ =
1583              org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.newBuilder(namedParameterNode_).mergeFrom(value).buildPartial();
1584          } else {
1585            namedParameterNode_ = value;
1586          }
1587          onChanged();
1588        } else {
1589          namedParameterNodeBuilder_.mergeFrom(value);
1590        }
1591        bitField0_ |= 0x00000008;
1592        return this;
1593      }
1594      /**
1595       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1596       */
1597      public Builder clearNamedParameterNode() {
1598        if (namedParameterNodeBuilder_ == null) {
1599          namedParameterNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
1600          onChanged();
1601        } else {
1602          namedParameterNodeBuilder_.clear();
1603        }
1604        bitField0_ = (bitField0_ & ~0x00000008);
1605        return this;
1606      }
1607      /**
1608       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1609       */
1610      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder getNamedParameterNodeBuilder() {
1611        bitField0_ |= 0x00000008;
1612        onChanged();
1613        return getNamedParameterNodeFieldBuilder().getBuilder();
1614      }
1615      /**
1616       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1617       */
1618      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder getNamedParameterNodeOrBuilder() {
1619        if (namedParameterNodeBuilder_ != null) {
1620          return namedParameterNodeBuilder_.getMessageOrBuilder();
1621        } else {
1622          return namedParameterNode_;
1623        }
1624      }
1625      /**
1626       * <code>optional .NamedParameterNode named_parameter_node = 4;</code>
1627       */
1628      private com.google.protobuf.SingleFieldBuilder<
1629          org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder> 
1630          getNamedParameterNodeFieldBuilder() {
1631        if (namedParameterNodeBuilder_ == null) {
1632          namedParameterNodeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
1633              org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder>(
1634                  namedParameterNode_,
1635                  getParentForChildren(),
1636                  isClean());
1637          namedParameterNode_ = null;
1638        }
1639        return namedParameterNodeBuilder_;
1640      }
1641
1642      // optional .PackageNode package_node = 5;
1643      private org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode packageNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
1644      private com.google.protobuf.SingleFieldBuilder<
1645          org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder> packageNodeBuilder_;
1646      /**
1647       * <code>optional .PackageNode package_node = 5;</code>
1648       */
1649      public boolean hasPackageNode() {
1650        return ((bitField0_ & 0x00000010) == 0x00000010);
1651      }
1652      /**
1653       * <code>optional .PackageNode package_node = 5;</code>
1654       */
1655      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode getPackageNode() {
1656        if (packageNodeBuilder_ == null) {
1657          return packageNode_;
1658        } else {
1659          return packageNodeBuilder_.getMessage();
1660        }
1661      }
1662      /**
1663       * <code>optional .PackageNode package_node = 5;</code>
1664       */
1665      public Builder setPackageNode(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode value) {
1666        if (packageNodeBuilder_ == null) {
1667          if (value == null) {
1668            throw new NullPointerException();
1669          }
1670          packageNode_ = value;
1671          onChanged();
1672        } else {
1673          packageNodeBuilder_.setMessage(value);
1674        }
1675        bitField0_ |= 0x00000010;
1676        return this;
1677      }
1678      /**
1679       * <code>optional .PackageNode package_node = 5;</code>
1680       */
1681      public Builder setPackageNode(
1682          org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder builderForValue) {
1683        if (packageNodeBuilder_ == null) {
1684          packageNode_ = builderForValue.build();
1685          onChanged();
1686        } else {
1687          packageNodeBuilder_.setMessage(builderForValue.build());
1688        }
1689        bitField0_ |= 0x00000010;
1690        return this;
1691      }
1692      /**
1693       * <code>optional .PackageNode package_node = 5;</code>
1694       */
1695      public Builder mergePackageNode(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode value) {
1696        if (packageNodeBuilder_ == null) {
1697          if (((bitField0_ & 0x00000010) == 0x00000010) &&
1698              packageNode_ != org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance()) {
1699            packageNode_ =
1700              org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.newBuilder(packageNode_).mergeFrom(value).buildPartial();
1701          } else {
1702            packageNode_ = value;
1703          }
1704          onChanged();
1705        } else {
1706          packageNodeBuilder_.mergeFrom(value);
1707        }
1708        bitField0_ |= 0x00000010;
1709        return this;
1710      }
1711      /**
1712       * <code>optional .PackageNode package_node = 5;</code>
1713       */
1714      public Builder clearPackageNode() {
1715        if (packageNodeBuilder_ == null) {
1716          packageNode_ = org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
1717          onChanged();
1718        } else {
1719          packageNodeBuilder_.clear();
1720        }
1721        bitField0_ = (bitField0_ & ~0x00000010);
1722        return this;
1723      }
1724      /**
1725       * <code>optional .PackageNode package_node = 5;</code>
1726       */
1727      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder getPackageNodeBuilder() {
1728        bitField0_ |= 0x00000010;
1729        onChanged();
1730        return getPackageNodeFieldBuilder().getBuilder();
1731      }
1732      /**
1733       * <code>optional .PackageNode package_node = 5;</code>
1734       */
1735      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder getPackageNodeOrBuilder() {
1736        if (packageNodeBuilder_ != null) {
1737          return packageNodeBuilder_.getMessageOrBuilder();
1738        } else {
1739          return packageNode_;
1740        }
1741      }
1742      /**
1743       * <code>optional .PackageNode package_node = 5;</code>
1744       */
1745      private com.google.protobuf.SingleFieldBuilder<
1746          org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder> 
1747          getPackageNodeFieldBuilder() {
1748        if (packageNodeBuilder_ == null) {
1749          packageNodeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
1750              org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder>(
1751                  packageNode_,
1752                  getParentForChildren(),
1753                  isClean());
1754          packageNode_ = null;
1755        }
1756        return packageNodeBuilder_;
1757      }
1758
1759      // repeated .Node children = 6;
1760      private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node> children_ =
1761        java.util.Collections.emptyList();
1762      private void ensureChildrenIsMutable() {
1763        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
1764          children_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.Node>(children_);
1765          bitField0_ |= 0x00000020;
1766         }
1767      }
1768
1769      private com.google.protobuf.RepeatedFieldBuilder<
1770          org.apache.reef.tang.proto.ClassHierarchyProto.Node, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder> childrenBuilder_;
1771
1772      /**
1773       * <code>repeated .Node children = 6;</code>
1774       *
1775       * <pre>
1776       *
1777       *Class hierarchy nodes are arranged in a tree that mirrors the language
1778       *namespaces / packages that contain class names (e.g., Java packages,
1779       *C++ namespaces).
1780       *
1781       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1782       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1783       *children.
1784       * </pre>
1785       */
1786      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node> getChildrenList() {
1787        if (childrenBuilder_ == null) {
1788          return java.util.Collections.unmodifiableList(children_);
1789        } else {
1790          return childrenBuilder_.getMessageList();
1791        }
1792      }
1793      /**
1794       * <code>repeated .Node children = 6;</code>
1795       *
1796       * <pre>
1797       *
1798       *Class hierarchy nodes are arranged in a tree that mirrors the language
1799       *namespaces / packages that contain class names (e.g., Java packages,
1800       *C++ namespaces).
1801       *
1802       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1803       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1804       *children.
1805       * </pre>
1806       */
1807      public int getChildrenCount() {
1808        if (childrenBuilder_ == null) {
1809          return children_.size();
1810        } else {
1811          return childrenBuilder_.getCount();
1812        }
1813      }
1814      /**
1815       * <code>repeated .Node children = 6;</code>
1816       *
1817       * <pre>
1818       *
1819       *Class hierarchy nodes are arranged in a tree that mirrors the language
1820       *namespaces / packages that contain class names (e.g., Java packages,
1821       *C++ namespaces).
1822       *
1823       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1824       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1825       *children.
1826       * </pre>
1827       */
1828      public org.apache.reef.tang.proto.ClassHierarchyProto.Node getChildren(int index) {
1829        if (childrenBuilder_ == null) {
1830          return children_.get(index);
1831        } else {
1832          return childrenBuilder_.getMessage(index);
1833        }
1834      }
1835      /**
1836       * <code>repeated .Node children = 6;</code>
1837       *
1838       * <pre>
1839       *
1840       *Class hierarchy nodes are arranged in a tree that mirrors the language
1841       *namespaces / packages that contain class names (e.g., Java packages,
1842       *C++ namespaces).
1843       *
1844       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1845       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1846       *children.
1847       * </pre>
1848       */
1849      public Builder setChildren(
1850          int index, org.apache.reef.tang.proto.ClassHierarchyProto.Node value) {
1851        if (childrenBuilder_ == null) {
1852          if (value == null) {
1853            throw new NullPointerException();
1854          }
1855          ensureChildrenIsMutable();
1856          children_.set(index, value);
1857          onChanged();
1858        } else {
1859          childrenBuilder_.setMessage(index, value);
1860        }
1861        return this;
1862      }
1863      /**
1864       * <code>repeated .Node children = 6;</code>
1865       *
1866       * <pre>
1867       *
1868       *Class hierarchy nodes are arranged in a tree that mirrors the language
1869       *namespaces / packages that contain class names (e.g., Java packages,
1870       *C++ namespaces).
1871       *
1872       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1873       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1874       *children.
1875       * </pre>
1876       */
1877      public Builder setChildren(
1878          int index, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder builderForValue) {
1879        if (childrenBuilder_ == null) {
1880          ensureChildrenIsMutable();
1881          children_.set(index, builderForValue.build());
1882          onChanged();
1883        } else {
1884          childrenBuilder_.setMessage(index, builderForValue.build());
1885        }
1886        return this;
1887      }
1888      /**
1889       * <code>repeated .Node children = 6;</code>
1890       *
1891       * <pre>
1892       *
1893       *Class hierarchy nodes are arranged in a tree that mirrors the language
1894       *namespaces / packages that contain class names (e.g., Java packages,
1895       *C++ namespaces).
1896       *
1897       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1898       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1899       *children.
1900       * </pre>
1901       */
1902      public Builder addChildren(org.apache.reef.tang.proto.ClassHierarchyProto.Node value) {
1903        if (childrenBuilder_ == null) {
1904          if (value == null) {
1905            throw new NullPointerException();
1906          }
1907          ensureChildrenIsMutable();
1908          children_.add(value);
1909          onChanged();
1910        } else {
1911          childrenBuilder_.addMessage(value);
1912        }
1913        return this;
1914      }
1915      /**
1916       * <code>repeated .Node children = 6;</code>
1917       *
1918       * <pre>
1919       *
1920       *Class hierarchy nodes are arranged in a tree that mirrors the language
1921       *namespaces / packages that contain class names (e.g., Java packages,
1922       *C++ namespaces).
1923       *
1924       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1925       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1926       *children.
1927       * </pre>
1928       */
1929      public Builder addChildren(
1930          int index, org.apache.reef.tang.proto.ClassHierarchyProto.Node value) {
1931        if (childrenBuilder_ == null) {
1932          if (value == null) {
1933            throw new NullPointerException();
1934          }
1935          ensureChildrenIsMutable();
1936          children_.add(index, value);
1937          onChanged();
1938        } else {
1939          childrenBuilder_.addMessage(index, value);
1940        }
1941        return this;
1942      }
1943      /**
1944       * <code>repeated .Node children = 6;</code>
1945       *
1946       * <pre>
1947       *
1948       *Class hierarchy nodes are arranged in a tree that mirrors the language
1949       *namespaces / packages that contain class names (e.g., Java packages,
1950       *C++ namespaces).
1951       *
1952       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1953       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1954       *children.
1955       * </pre>
1956       */
1957      public Builder addChildren(
1958          org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder builderForValue) {
1959        if (childrenBuilder_ == null) {
1960          ensureChildrenIsMutable();
1961          children_.add(builderForValue.build());
1962          onChanged();
1963        } else {
1964          childrenBuilder_.addMessage(builderForValue.build());
1965        }
1966        return this;
1967      }
1968      /**
1969       * <code>repeated .Node children = 6;</code>
1970       *
1971       * <pre>
1972       *
1973       *Class hierarchy nodes are arranged in a tree that mirrors the language
1974       *namespaces / packages that contain class names (e.g., Java packages,
1975       *C++ namespaces).
1976       *
1977       *A NamedParameterNode cannot have any children.  A ClassNode can not have
1978       *any package nodes as children.  PackageNodes cannot have PackageNodes as
1979       *children.
1980       * </pre>
1981       */
1982      public Builder addChildren(
1983          int index, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder builderForValue) {
1984        if (childrenBuilder_ == null) {
1985          ensureChildrenIsMutable();
1986          children_.add(index, builderForValue.build());
1987          onChanged();
1988        } else {
1989          childrenBuilder_.addMessage(index, builderForValue.build());
1990        }
1991        return this;
1992      }
1993      /**
1994       * <code>repeated .Node children = 6;</code>
1995       *
1996       * <pre>
1997       *
1998       *Class hierarchy nodes are arranged in a tree that mirrors the language
1999       *namespaces / packages that contain class names (e.g., Java packages,
2000       *C++ namespaces).
2001       *
2002       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2003       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2004       *children.
2005       * </pre>
2006       */
2007      public Builder addAllChildren(
2008          java.lang.Iterable<? extends org.apache.reef.tang.proto.ClassHierarchyProto.Node> values) {
2009        if (childrenBuilder_ == null) {
2010          ensureChildrenIsMutable();
2011          super.addAll(values, children_);
2012          onChanged();
2013        } else {
2014          childrenBuilder_.addAllMessages(values);
2015        }
2016        return this;
2017      }
2018      /**
2019       * <code>repeated .Node children = 6;</code>
2020       *
2021       * <pre>
2022       *
2023       *Class hierarchy nodes are arranged in a tree that mirrors the language
2024       *namespaces / packages that contain class names (e.g., Java packages,
2025       *C++ namespaces).
2026       *
2027       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2028       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2029       *children.
2030       * </pre>
2031       */
2032      public Builder clearChildren() {
2033        if (childrenBuilder_ == null) {
2034          children_ = java.util.Collections.emptyList();
2035          bitField0_ = (bitField0_ & ~0x00000020);
2036          onChanged();
2037        } else {
2038          childrenBuilder_.clear();
2039        }
2040        return this;
2041      }
2042      /**
2043       * <code>repeated .Node children = 6;</code>
2044       *
2045       * <pre>
2046       *
2047       *Class hierarchy nodes are arranged in a tree that mirrors the language
2048       *namespaces / packages that contain class names (e.g., Java packages,
2049       *C++ namespaces).
2050       *
2051       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2052       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2053       *children.
2054       * </pre>
2055       */
2056      public Builder removeChildren(int index) {
2057        if (childrenBuilder_ == null) {
2058          ensureChildrenIsMutable();
2059          children_.remove(index);
2060          onChanged();
2061        } else {
2062          childrenBuilder_.remove(index);
2063        }
2064        return this;
2065      }
2066      /**
2067       * <code>repeated .Node children = 6;</code>
2068       *
2069       * <pre>
2070       *
2071       *Class hierarchy nodes are arranged in a tree that mirrors the language
2072       *namespaces / packages that contain class names (e.g., Java packages,
2073       *C++ namespaces).
2074       *
2075       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2076       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2077       *children.
2078       * </pre>
2079       */
2080      public org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder getChildrenBuilder(
2081          int index) {
2082        return getChildrenFieldBuilder().getBuilder(index);
2083      }
2084      /**
2085       * <code>repeated .Node children = 6;</code>
2086       *
2087       * <pre>
2088       *
2089       *Class hierarchy nodes are arranged in a tree that mirrors the language
2090       *namespaces / packages that contain class names (e.g., Java packages,
2091       *C++ namespaces).
2092       *
2093       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2094       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2095       *children.
2096       * </pre>
2097       */
2098      public org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder getChildrenOrBuilder(
2099          int index) {
2100        if (childrenBuilder_ == null) {
2101          return children_.get(index);  } else {
2102          return childrenBuilder_.getMessageOrBuilder(index);
2103        }
2104      }
2105      /**
2106       * <code>repeated .Node children = 6;</code>
2107       *
2108       * <pre>
2109       *
2110       *Class hierarchy nodes are arranged in a tree that mirrors the language
2111       *namespaces / packages that contain class names (e.g., Java packages,
2112       *C++ namespaces).
2113       *
2114       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2115       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2116       *children.
2117       * </pre>
2118       */
2119      public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder> 
2120           getChildrenOrBuilderList() {
2121        if (childrenBuilder_ != null) {
2122          return childrenBuilder_.getMessageOrBuilderList();
2123        } else {
2124          return java.util.Collections.unmodifiableList(children_);
2125        }
2126      }
2127      /**
2128       * <code>repeated .Node children = 6;</code>
2129       *
2130       * <pre>
2131       *
2132       *Class hierarchy nodes are arranged in a tree that mirrors the language
2133       *namespaces / packages that contain class names (e.g., Java packages,
2134       *C++ namespaces).
2135       *
2136       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2137       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2138       *children.
2139       * </pre>
2140       */
2141      public org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder addChildrenBuilder() {
2142        return getChildrenFieldBuilder().addBuilder(
2143            org.apache.reef.tang.proto.ClassHierarchyProto.Node.getDefaultInstance());
2144      }
2145      /**
2146       * <code>repeated .Node children = 6;</code>
2147       *
2148       * <pre>
2149       *
2150       *Class hierarchy nodes are arranged in a tree that mirrors the language
2151       *namespaces / packages that contain class names (e.g., Java packages,
2152       *C++ namespaces).
2153       *
2154       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2155       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2156       *children.
2157       * </pre>
2158       */
2159      public org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder addChildrenBuilder(
2160          int index) {
2161        return getChildrenFieldBuilder().addBuilder(
2162            index, org.apache.reef.tang.proto.ClassHierarchyProto.Node.getDefaultInstance());
2163      }
2164      /**
2165       * <code>repeated .Node children = 6;</code>
2166       *
2167       * <pre>
2168       *
2169       *Class hierarchy nodes are arranged in a tree that mirrors the language
2170       *namespaces / packages that contain class names (e.g., Java packages,
2171       *C++ namespaces).
2172       *
2173       *A NamedParameterNode cannot have any children.  A ClassNode can not have
2174       *any package nodes as children.  PackageNodes cannot have PackageNodes as
2175       *children.
2176       * </pre>
2177       */
2178      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder> 
2179           getChildrenBuilderList() {
2180        return getChildrenFieldBuilder().getBuilderList();
2181      }
2182      private com.google.protobuf.RepeatedFieldBuilder<
2183          org.apache.reef.tang.proto.ClassHierarchyProto.Node, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder> 
2184          getChildrenFieldBuilder() {
2185        if (childrenBuilder_ == null) {
2186          childrenBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
2187              org.apache.reef.tang.proto.ClassHierarchyProto.Node, org.apache.reef.tang.proto.ClassHierarchyProto.Node.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.NodeOrBuilder>(
2188                  children_,
2189                  ((bitField0_ & 0x00000020) == 0x00000020),
2190                  getParentForChildren(),
2191                  isClean());
2192          children_ = null;
2193        }
2194        return childrenBuilder_;
2195      }
2196
2197      // @@protoc_insertion_point(builder_scope:Node)
2198    }
2199
2200    static {
2201      defaultInstance = new Node(true);
2202      defaultInstance.initFields();
2203    }
2204
2205    // @@protoc_insertion_point(class_scope:Node)
2206  }
2207
2208  public interface ClassNodeOrBuilder
2209      extends com.google.protobuf.MessageOrBuilder {
2210
2211    // required bool is_injection_candidate = 1;
2212    /**
2213     * <code>required bool is_injection_candidate = 1;</code>
2214     *
2215     * <pre>
2216     *
2217     *Some classes cannot be injected for language-specific reasons.  For
2218     *example, Java's non-static inner classes need a reference to the outer
2219     *class in order to be instantiated.  Set this boolean to false if there
2220     *is some reason why Tang cannot possibly inject this class.
2221     * </pre>
2222     */
2223    boolean hasIsInjectionCandidate();
2224    /**
2225     * <code>required bool is_injection_candidate = 1;</code>
2226     *
2227     * <pre>
2228     *
2229     *Some classes cannot be injected for language-specific reasons.  For
2230     *example, Java's non-static inner classes need a reference to the outer
2231     *class in order to be instantiated.  Set this boolean to false if there
2232     *is some reason why Tang cannot possibly inject this class.
2233     * </pre>
2234     */
2235    boolean getIsInjectionCandidate();
2236
2237    // required bool is_external_constructor = 2;
2238    /**
2239     * <code>required bool is_external_constructor = 2;</code>
2240     *
2241     * <pre>
2242     *
2243     *This field will be set to true if this class is a Tang
2244     *ExternalConstructor implementation.
2245     *
2246     *If this is set to true, then some other class *must* contain this 
2247     *ClassNode's name in its impl_full_names field.
2248     * </pre>
2249     */
2250    boolean hasIsExternalConstructor();
2251    /**
2252     * <code>required bool is_external_constructor = 2;</code>
2253     *
2254     * <pre>
2255     *
2256     *This field will be set to true if this class is a Tang
2257     *ExternalConstructor implementation.
2258     *
2259     *If this is set to true, then some other class *must* contain this 
2260     *ClassNode's name in its impl_full_names field.
2261     * </pre>
2262     */
2263    boolean getIsExternalConstructor();
2264
2265    // required bool is_unit = 3;
2266    /**
2267     * <code>required bool is_unit = 3;</code>
2268     *
2269     * <pre>
2270     *
2271     *This field will be set to true if this class is annotated as a Tang
2272     *Unit.
2273     * </pre>
2274     */
2275    boolean hasIsUnit();
2276    /**
2277     * <code>required bool is_unit = 3;</code>
2278     *
2279     * <pre>
2280     *
2281     *This field will be set to true if this class is annotated as a Tang
2282     *Unit.
2283     * </pre>
2284     */
2285    boolean getIsUnit();
2286
2287    // repeated .ConstructorDef InjectableConstructors = 4;
2288    /**
2289     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2290     *
2291     * <pre>
2292     *
2293     *A list of all the constructors that are defined by this class and 
2294     *annotated to be injectable.
2295     * </pre>
2296     */
2297    java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> 
2298        getInjectableConstructorsList();
2299    /**
2300     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2301     *
2302     * <pre>
2303     *
2304     *A list of all the constructors that are defined by this class and 
2305     *annotated to be injectable.
2306     * </pre>
2307     */
2308    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getInjectableConstructors(int index);
2309    /**
2310     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2311     *
2312     * <pre>
2313     *
2314     *A list of all the constructors that are defined by this class and 
2315     *annotated to be injectable.
2316     * </pre>
2317     */
2318    int getInjectableConstructorsCount();
2319    /**
2320     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2321     *
2322     * <pre>
2323     *
2324     *A list of all the constructors that are defined by this class and 
2325     *annotated to be injectable.
2326     * </pre>
2327     */
2328    java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
2329        getInjectableConstructorsOrBuilderList();
2330    /**
2331     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2332     *
2333     * <pre>
2334     *
2335     *A list of all the constructors that are defined by this class and 
2336     *annotated to be injectable.
2337     * </pre>
2338     */
2339    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getInjectableConstructorsOrBuilder(
2340        int index);
2341
2342    // repeated .ConstructorDef OtherConstructors = 5;
2343    /**
2344     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2345     *
2346     * <pre>
2347     *
2348     *A list of all the other constructors (so that they can be registered
2349     *as legacy constructors if the configuration tells us to treat them
2350     *as though they were annotated with an Inject).
2351     * </pre>
2352     */
2353    java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> 
2354        getOtherConstructorsList();
2355    /**
2356     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2357     *
2358     * <pre>
2359     *
2360     *A list of all the other constructors (so that they can be registered
2361     *as legacy constructors if the configuration tells us to treat them
2362     *as though they were annotated with an Inject).
2363     * </pre>
2364     */
2365    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getOtherConstructors(int index);
2366    /**
2367     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2368     *
2369     * <pre>
2370     *
2371     *A list of all the other constructors (so that they can be registered
2372     *as legacy constructors if the configuration tells us to treat them
2373     *as though they were annotated with an Inject).
2374     * </pre>
2375     */
2376    int getOtherConstructorsCount();
2377    /**
2378     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2379     *
2380     * <pre>
2381     *
2382     *A list of all the other constructors (so that they can be registered
2383     *as legacy constructors if the configuration tells us to treat them
2384     *as though they were annotated with an Inject).
2385     * </pre>
2386     */
2387    java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
2388        getOtherConstructorsOrBuilderList();
2389    /**
2390     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2391     *
2392     * <pre>
2393     *
2394     *A list of all the other constructors (so that they can be registered
2395     *as legacy constructors if the configuration tells us to treat them
2396     *as though they were annotated with an Inject).
2397     * </pre>
2398     */
2399    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getOtherConstructorsOrBuilder(
2400        int index);
2401
2402    // repeated string impl_full_names = 6;
2403    /**
2404     * <code>repeated string impl_full_names = 6;</code>
2405     *
2406     * <pre>
2407     *
2408     *A list of all the ClassNodes that implement this class, including
2409     *legacy constructors. 
2410     * </pre>
2411     */
2412    java.util.List<java.lang.String>
2413    getImplFullNamesList();
2414    /**
2415     * <code>repeated string impl_full_names = 6;</code>
2416     *
2417     * <pre>
2418     *
2419     *A list of all the ClassNodes that implement this class, including
2420     *legacy constructors. 
2421     * </pre>
2422     */
2423    int getImplFullNamesCount();
2424    /**
2425     * <code>repeated string impl_full_names = 6;</code>
2426     *
2427     * <pre>
2428     *
2429     *A list of all the ClassNodes that implement this class, including
2430     *legacy constructors. 
2431     * </pre>
2432     */
2433    java.lang.String getImplFullNames(int index);
2434    /**
2435     * <code>repeated string impl_full_names = 6;</code>
2436     *
2437     * <pre>
2438     *
2439     *A list of all the ClassNodes that implement this class, including
2440     *legacy constructors. 
2441     * </pre>
2442     */
2443    com.google.protobuf.ByteString
2444        getImplFullNamesBytes(int index);
2445
2446    // optional string default_implementation = 7;
2447    /**
2448     * <code>optional string default_implementation = 7;</code>
2449     */
2450    boolean hasDefaultImplementation();
2451    /**
2452     * <code>optional string default_implementation = 7;</code>
2453     */
2454    java.lang.String getDefaultImplementation();
2455    /**
2456     * <code>optional string default_implementation = 7;</code>
2457     */
2458    com.google.protobuf.ByteString
2459        getDefaultImplementationBytes();
2460  }
2461  /**
2462   * Protobuf type {@code ClassNode}
2463   */
2464  public static final class ClassNode extends
2465      com.google.protobuf.GeneratedMessage
2466      implements ClassNodeOrBuilder {
2467    // Use ClassNode.newBuilder() to construct.
2468    private ClassNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
2469      super(builder);
2470      this.unknownFields = builder.getUnknownFields();
2471    }
2472    private ClassNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
2473
2474    private static final ClassNode defaultInstance;
2475    public static ClassNode getDefaultInstance() {
2476      return defaultInstance;
2477    }
2478
2479    public ClassNode getDefaultInstanceForType() {
2480      return defaultInstance;
2481    }
2482
2483    private final com.google.protobuf.UnknownFieldSet unknownFields;
2484    @java.lang.Override
2485    public final com.google.protobuf.UnknownFieldSet
2486        getUnknownFields() {
2487      return this.unknownFields;
2488    }
2489    private ClassNode(
2490        com.google.protobuf.CodedInputStream input,
2491        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
2492        throws com.google.protobuf.InvalidProtocolBufferException {
2493      initFields();
2494      int mutable_bitField0_ = 0;
2495      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
2496          com.google.protobuf.UnknownFieldSet.newBuilder();
2497      try {
2498        boolean done = false;
2499        while (!done) {
2500          int tag = input.readTag();
2501          switch (tag) {
2502            case 0:
2503              done = true;
2504              break;
2505            default: {
2506              if (!parseUnknownField(input, unknownFields,
2507                                     extensionRegistry, tag)) {
2508                done = true;
2509              }
2510              break;
2511            }
2512            case 8: {
2513              bitField0_ |= 0x00000001;
2514              isInjectionCandidate_ = input.readBool();
2515              break;
2516            }
2517            case 16: {
2518              bitField0_ |= 0x00000002;
2519              isExternalConstructor_ = input.readBool();
2520              break;
2521            }
2522            case 24: {
2523              bitField0_ |= 0x00000004;
2524              isUnit_ = input.readBool();
2525              break;
2526            }
2527            case 34: {
2528              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
2529                injectableConstructors_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef>();
2530                mutable_bitField0_ |= 0x00000008;
2531              }
2532              injectableConstructors_.add(input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.PARSER, extensionRegistry));
2533              break;
2534            }
2535            case 42: {
2536              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
2537                otherConstructors_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef>();
2538                mutable_bitField0_ |= 0x00000010;
2539              }
2540              otherConstructors_.add(input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.PARSER, extensionRegistry));
2541              break;
2542            }
2543            case 50: {
2544              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
2545                implFullNames_ = new com.google.protobuf.LazyStringArrayList();
2546                mutable_bitField0_ |= 0x00000020;
2547              }
2548              implFullNames_.add(input.readBytes());
2549              break;
2550            }
2551            case 58: {
2552              bitField0_ |= 0x00000008;
2553              defaultImplementation_ = input.readBytes();
2554              break;
2555            }
2556          }
2557        }
2558      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
2559        throw e.setUnfinishedMessage(this);
2560      } catch (java.io.IOException e) {
2561        throw new com.google.protobuf.InvalidProtocolBufferException(
2562            e.getMessage()).setUnfinishedMessage(this);
2563      } finally {
2564        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
2565          injectableConstructors_ = java.util.Collections.unmodifiableList(injectableConstructors_);
2566        }
2567        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
2568          otherConstructors_ = java.util.Collections.unmodifiableList(otherConstructors_);
2569        }
2570        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
2571          implFullNames_ = new com.google.protobuf.UnmodifiableLazyStringList(implFullNames_);
2572        }
2573        this.unknownFields = unknownFields.build();
2574        makeExtensionsImmutable();
2575      }
2576    }
2577    public static final com.google.protobuf.Descriptors.Descriptor
2578        getDescriptor() {
2579      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ClassNode_descriptor;
2580    }
2581
2582    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
2583        internalGetFieldAccessorTable() {
2584      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ClassNode_fieldAccessorTable
2585          .ensureFieldAccessorsInitialized(
2586              org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder.class);
2587    }
2588
2589    public static com.google.protobuf.Parser<ClassNode> PARSER =
2590        new com.google.protobuf.AbstractParser<ClassNode>() {
2591      public ClassNode parsePartialFrom(
2592          com.google.protobuf.CodedInputStream input,
2593          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
2594          throws com.google.protobuf.InvalidProtocolBufferException {
2595        return new ClassNode(input, extensionRegistry);
2596      }
2597    };
2598
2599    @java.lang.Override
2600    public com.google.protobuf.Parser<ClassNode> getParserForType() {
2601      return PARSER;
2602    }
2603
2604    private int bitField0_;
2605    // required bool is_injection_candidate = 1;
2606    public static final int IS_INJECTION_CANDIDATE_FIELD_NUMBER = 1;
2607    private boolean isInjectionCandidate_;
2608    /**
2609     * <code>required bool is_injection_candidate = 1;</code>
2610     *
2611     * <pre>
2612     *
2613     *Some classes cannot be injected for language-specific reasons.  For
2614     *example, Java's non-static inner classes need a reference to the outer
2615     *class in order to be instantiated.  Set this boolean to false if there
2616     *is some reason why Tang cannot possibly inject this class.
2617     * </pre>
2618     */
2619    public boolean hasIsInjectionCandidate() {
2620      return ((bitField0_ & 0x00000001) == 0x00000001);
2621    }
2622    /**
2623     * <code>required bool is_injection_candidate = 1;</code>
2624     *
2625     * <pre>
2626     *
2627     *Some classes cannot be injected for language-specific reasons.  For
2628     *example, Java's non-static inner classes need a reference to the outer
2629     *class in order to be instantiated.  Set this boolean to false if there
2630     *is some reason why Tang cannot possibly inject this class.
2631     * </pre>
2632     */
2633    public boolean getIsInjectionCandidate() {
2634      return isInjectionCandidate_;
2635    }
2636
2637    // required bool is_external_constructor = 2;
2638    public static final int IS_EXTERNAL_CONSTRUCTOR_FIELD_NUMBER = 2;
2639    private boolean isExternalConstructor_;
2640    /**
2641     * <code>required bool is_external_constructor = 2;</code>
2642     *
2643     * <pre>
2644     *
2645     *This field will be set to true if this class is a Tang
2646     *ExternalConstructor implementation.
2647     *
2648     *If this is set to true, then some other class *must* contain this 
2649     *ClassNode's name in its impl_full_names field.
2650     * </pre>
2651     */
2652    public boolean hasIsExternalConstructor() {
2653      return ((bitField0_ & 0x00000002) == 0x00000002);
2654    }
2655    /**
2656     * <code>required bool is_external_constructor = 2;</code>
2657     *
2658     * <pre>
2659     *
2660     *This field will be set to true if this class is a Tang
2661     *ExternalConstructor implementation.
2662     *
2663     *If this is set to true, then some other class *must* contain this 
2664     *ClassNode's name in its impl_full_names field.
2665     * </pre>
2666     */
2667    public boolean getIsExternalConstructor() {
2668      return isExternalConstructor_;
2669    }
2670
2671    // required bool is_unit = 3;
2672    public static final int IS_UNIT_FIELD_NUMBER = 3;
2673    private boolean isUnit_;
2674    /**
2675     * <code>required bool is_unit = 3;</code>
2676     *
2677     * <pre>
2678     *
2679     *This field will be set to true if this class is annotated as a Tang
2680     *Unit.
2681     * </pre>
2682     */
2683    public boolean hasIsUnit() {
2684      return ((bitField0_ & 0x00000004) == 0x00000004);
2685    }
2686    /**
2687     * <code>required bool is_unit = 3;</code>
2688     *
2689     * <pre>
2690     *
2691     *This field will be set to true if this class is annotated as a Tang
2692     *Unit.
2693     * </pre>
2694     */
2695    public boolean getIsUnit() {
2696      return isUnit_;
2697    }
2698
2699    // repeated .ConstructorDef InjectableConstructors = 4;
2700    public static final int INJECTABLECONSTRUCTORS_FIELD_NUMBER = 4;
2701    private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> injectableConstructors_;
2702    /**
2703     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2704     *
2705     * <pre>
2706     *
2707     *A list of all the constructors that are defined by this class and 
2708     *annotated to be injectable.
2709     * </pre>
2710     */
2711    public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> getInjectableConstructorsList() {
2712      return injectableConstructors_;
2713    }
2714    /**
2715     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2716     *
2717     * <pre>
2718     *
2719     *A list of all the constructors that are defined by this class and 
2720     *annotated to be injectable.
2721     * </pre>
2722     */
2723    public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
2724        getInjectableConstructorsOrBuilderList() {
2725      return injectableConstructors_;
2726    }
2727    /**
2728     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2729     *
2730     * <pre>
2731     *
2732     *A list of all the constructors that are defined by this class and 
2733     *annotated to be injectable.
2734     * </pre>
2735     */
2736    public int getInjectableConstructorsCount() {
2737      return injectableConstructors_.size();
2738    }
2739    /**
2740     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2741     *
2742     * <pre>
2743     *
2744     *A list of all the constructors that are defined by this class and 
2745     *annotated to be injectable.
2746     * </pre>
2747     */
2748    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getInjectableConstructors(int index) {
2749      return injectableConstructors_.get(index);
2750    }
2751    /**
2752     * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
2753     *
2754     * <pre>
2755     *
2756     *A list of all the constructors that are defined by this class and 
2757     *annotated to be injectable.
2758     * </pre>
2759     */
2760    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getInjectableConstructorsOrBuilder(
2761        int index) {
2762      return injectableConstructors_.get(index);
2763    }
2764
2765    // repeated .ConstructorDef OtherConstructors = 5;
2766    public static final int OTHERCONSTRUCTORS_FIELD_NUMBER = 5;
2767    private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> otherConstructors_;
2768    /**
2769     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2770     *
2771     * <pre>
2772     *
2773     *A list of all the other constructors (so that they can be registered
2774     *as legacy constructors if the configuration tells us to treat them
2775     *as though they were annotated with an Inject).
2776     * </pre>
2777     */
2778    public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> getOtherConstructorsList() {
2779      return otherConstructors_;
2780    }
2781    /**
2782     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2783     *
2784     * <pre>
2785     *
2786     *A list of all the other constructors (so that they can be registered
2787     *as legacy constructors if the configuration tells us to treat them
2788     *as though they were annotated with an Inject).
2789     * </pre>
2790     */
2791    public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
2792        getOtherConstructorsOrBuilderList() {
2793      return otherConstructors_;
2794    }
2795    /**
2796     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2797     *
2798     * <pre>
2799     *
2800     *A list of all the other constructors (so that they can be registered
2801     *as legacy constructors if the configuration tells us to treat them
2802     *as though they were annotated with an Inject).
2803     * </pre>
2804     */
2805    public int getOtherConstructorsCount() {
2806      return otherConstructors_.size();
2807    }
2808    /**
2809     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2810     *
2811     * <pre>
2812     *
2813     *A list of all the other constructors (so that they can be registered
2814     *as legacy constructors if the configuration tells us to treat them
2815     *as though they were annotated with an Inject).
2816     * </pre>
2817     */
2818    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getOtherConstructors(int index) {
2819      return otherConstructors_.get(index);
2820    }
2821    /**
2822     * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
2823     *
2824     * <pre>
2825     *
2826     *A list of all the other constructors (so that they can be registered
2827     *as legacy constructors if the configuration tells us to treat them
2828     *as though they were annotated with an Inject).
2829     * </pre>
2830     */
2831    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getOtherConstructorsOrBuilder(
2832        int index) {
2833      return otherConstructors_.get(index);
2834    }
2835
2836    // repeated string impl_full_names = 6;
2837    public static final int IMPL_FULL_NAMES_FIELD_NUMBER = 6;
2838    private com.google.protobuf.LazyStringList implFullNames_;
2839    /**
2840     * <code>repeated string impl_full_names = 6;</code>
2841     *
2842     * <pre>
2843     *
2844     *A list of all the ClassNodes that implement this class, including
2845     *legacy constructors. 
2846     * </pre>
2847     */
2848    public java.util.List<java.lang.String>
2849        getImplFullNamesList() {
2850      return implFullNames_;
2851    }
2852    /**
2853     * <code>repeated string impl_full_names = 6;</code>
2854     *
2855     * <pre>
2856     *
2857     *A list of all the ClassNodes that implement this class, including
2858     *legacy constructors. 
2859     * </pre>
2860     */
2861    public int getImplFullNamesCount() {
2862      return implFullNames_.size();
2863    }
2864    /**
2865     * <code>repeated string impl_full_names = 6;</code>
2866     *
2867     * <pre>
2868     *
2869     *A list of all the ClassNodes that implement this class, including
2870     *legacy constructors. 
2871     * </pre>
2872     */
2873    public java.lang.String getImplFullNames(int index) {
2874      return implFullNames_.get(index);
2875    }
2876    /**
2877     * <code>repeated string impl_full_names = 6;</code>
2878     *
2879     * <pre>
2880     *
2881     *A list of all the ClassNodes that implement this class, including
2882     *legacy constructors. 
2883     * </pre>
2884     */
2885    public com.google.protobuf.ByteString
2886        getImplFullNamesBytes(int index) {
2887      return implFullNames_.getByteString(index);
2888    }
2889
2890    // optional string default_implementation = 7;
2891    public static final int DEFAULT_IMPLEMENTATION_FIELD_NUMBER = 7;
2892    private java.lang.Object defaultImplementation_;
2893    /**
2894     * <code>optional string default_implementation = 7;</code>
2895     */
2896    public boolean hasDefaultImplementation() {
2897      return ((bitField0_ & 0x00000008) == 0x00000008);
2898    }
2899    /**
2900     * <code>optional string default_implementation = 7;</code>
2901     */
2902    public java.lang.String getDefaultImplementation() {
2903      java.lang.Object ref = defaultImplementation_;
2904      if (ref instanceof java.lang.String) {
2905        return (java.lang.String) ref;
2906      } else {
2907        com.google.protobuf.ByteString bs = 
2908            (com.google.protobuf.ByteString) ref;
2909        java.lang.String s = bs.toStringUtf8();
2910        if (bs.isValidUtf8()) {
2911          defaultImplementation_ = s;
2912        }
2913        return s;
2914      }
2915    }
2916    /**
2917     * <code>optional string default_implementation = 7;</code>
2918     */
2919    public com.google.protobuf.ByteString
2920        getDefaultImplementationBytes() {
2921      java.lang.Object ref = defaultImplementation_;
2922      if (ref instanceof java.lang.String) {
2923        com.google.protobuf.ByteString b = 
2924            com.google.protobuf.ByteString.copyFromUtf8(
2925                (java.lang.String) ref);
2926        defaultImplementation_ = b;
2927        return b;
2928      } else {
2929        return (com.google.protobuf.ByteString) ref;
2930      }
2931    }
2932
2933    private void initFields() {
2934      isInjectionCandidate_ = false;
2935      isExternalConstructor_ = false;
2936      isUnit_ = false;
2937      injectableConstructors_ = java.util.Collections.emptyList();
2938      otherConstructors_ = java.util.Collections.emptyList();
2939      implFullNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
2940      defaultImplementation_ = "";
2941    }
2942    private byte memoizedIsInitialized = -1;
2943    public final boolean isInitialized() {
2944      byte isInitialized = memoizedIsInitialized;
2945      if (isInitialized != -1) return isInitialized == 1;
2946
2947      if (!hasIsInjectionCandidate()) {
2948        memoizedIsInitialized = 0;
2949        return false;
2950      }
2951      if (!hasIsExternalConstructor()) {
2952        memoizedIsInitialized = 0;
2953        return false;
2954      }
2955      if (!hasIsUnit()) {
2956        memoizedIsInitialized = 0;
2957        return false;
2958      }
2959      for (int i = 0; i < getInjectableConstructorsCount(); i++) {
2960        if (!getInjectableConstructors(i).isInitialized()) {
2961          memoizedIsInitialized = 0;
2962          return false;
2963        }
2964      }
2965      for (int i = 0; i < getOtherConstructorsCount(); i++) {
2966        if (!getOtherConstructors(i).isInitialized()) {
2967          memoizedIsInitialized = 0;
2968          return false;
2969        }
2970      }
2971      memoizedIsInitialized = 1;
2972      return true;
2973    }
2974
2975    public void writeTo(com.google.protobuf.CodedOutputStream output)
2976                        throws java.io.IOException {
2977      getSerializedSize();
2978      if (((bitField0_ & 0x00000001) == 0x00000001)) {
2979        output.writeBool(1, isInjectionCandidate_);
2980      }
2981      if (((bitField0_ & 0x00000002) == 0x00000002)) {
2982        output.writeBool(2, isExternalConstructor_);
2983      }
2984      if (((bitField0_ & 0x00000004) == 0x00000004)) {
2985        output.writeBool(3, isUnit_);
2986      }
2987      for (int i = 0; i < injectableConstructors_.size(); i++) {
2988        output.writeMessage(4, injectableConstructors_.get(i));
2989      }
2990      for (int i = 0; i < otherConstructors_.size(); i++) {
2991        output.writeMessage(5, otherConstructors_.get(i));
2992      }
2993      for (int i = 0; i < implFullNames_.size(); i++) {
2994        output.writeBytes(6, implFullNames_.getByteString(i));
2995      }
2996      if (((bitField0_ & 0x00000008) == 0x00000008)) {
2997        output.writeBytes(7, getDefaultImplementationBytes());
2998      }
2999      getUnknownFields().writeTo(output);
3000    }
3001
3002    private int memoizedSerializedSize = -1;
3003    public int getSerializedSize() {
3004      int size = memoizedSerializedSize;
3005      if (size != -1) return size;
3006
3007      size = 0;
3008      if (((bitField0_ & 0x00000001) == 0x00000001)) {
3009        size += com.google.protobuf.CodedOutputStream
3010          .computeBoolSize(1, isInjectionCandidate_);
3011      }
3012      if (((bitField0_ & 0x00000002) == 0x00000002)) {
3013        size += com.google.protobuf.CodedOutputStream
3014          .computeBoolSize(2, isExternalConstructor_);
3015      }
3016      if (((bitField0_ & 0x00000004) == 0x00000004)) {
3017        size += com.google.protobuf.CodedOutputStream
3018          .computeBoolSize(3, isUnit_);
3019      }
3020      for (int i = 0; i < injectableConstructors_.size(); i++) {
3021        size += com.google.protobuf.CodedOutputStream
3022          .computeMessageSize(4, injectableConstructors_.get(i));
3023      }
3024      for (int i = 0; i < otherConstructors_.size(); i++) {
3025        size += com.google.protobuf.CodedOutputStream
3026          .computeMessageSize(5, otherConstructors_.get(i));
3027      }
3028      {
3029        int dataSize = 0;
3030        for (int i = 0; i < implFullNames_.size(); i++) {
3031          dataSize += com.google.protobuf.CodedOutputStream
3032            .computeBytesSizeNoTag(implFullNames_.getByteString(i));
3033        }
3034        size += dataSize;
3035        size += 1 * getImplFullNamesList().size();
3036      }
3037      if (((bitField0_ & 0x00000008) == 0x00000008)) {
3038        size += com.google.protobuf.CodedOutputStream
3039          .computeBytesSize(7, getDefaultImplementationBytes());
3040      }
3041      size += getUnknownFields().getSerializedSize();
3042      memoizedSerializedSize = size;
3043      return size;
3044    }
3045
3046    private static final long serialVersionUID = 0L;
3047    @java.lang.Override
3048    protected java.lang.Object writeReplace()
3049        throws java.io.ObjectStreamException {
3050      return super.writeReplace();
3051    }
3052
3053    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3054        com.google.protobuf.ByteString data)
3055        throws com.google.protobuf.InvalidProtocolBufferException {
3056      return PARSER.parseFrom(data);
3057    }
3058    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3059        com.google.protobuf.ByteString data,
3060        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3061        throws com.google.protobuf.InvalidProtocolBufferException {
3062      return PARSER.parseFrom(data, extensionRegistry);
3063    }
3064    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(byte[] data)
3065        throws com.google.protobuf.InvalidProtocolBufferException {
3066      return PARSER.parseFrom(data);
3067    }
3068    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3069        byte[] data,
3070        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3071        throws com.google.protobuf.InvalidProtocolBufferException {
3072      return PARSER.parseFrom(data, extensionRegistry);
3073    }
3074    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(java.io.InputStream input)
3075        throws java.io.IOException {
3076      return PARSER.parseFrom(input);
3077    }
3078    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3079        java.io.InputStream input,
3080        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3081        throws java.io.IOException {
3082      return PARSER.parseFrom(input, extensionRegistry);
3083    }
3084    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseDelimitedFrom(java.io.InputStream input)
3085        throws java.io.IOException {
3086      return PARSER.parseDelimitedFrom(input);
3087    }
3088    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseDelimitedFrom(
3089        java.io.InputStream input,
3090        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3091        throws java.io.IOException {
3092      return PARSER.parseDelimitedFrom(input, extensionRegistry);
3093    }
3094    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3095        com.google.protobuf.CodedInputStream input)
3096        throws java.io.IOException {
3097      return PARSER.parseFrom(input);
3098    }
3099    public static org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parseFrom(
3100        com.google.protobuf.CodedInputStream input,
3101        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3102        throws java.io.IOException {
3103      return PARSER.parseFrom(input, extensionRegistry);
3104    }
3105
3106    public static Builder newBuilder() { return Builder.create(); }
3107    public Builder newBuilderForType() { return newBuilder(); }
3108    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode prototype) {
3109      return newBuilder().mergeFrom(prototype);
3110    }
3111    public Builder toBuilder() { return newBuilder(this); }
3112
3113    @java.lang.Override
3114    protected Builder newBuilderForType(
3115        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
3116      Builder builder = new Builder(parent);
3117      return builder;
3118    }
3119    /**
3120     * Protobuf type {@code ClassNode}
3121     */
3122    public static final class Builder extends
3123        com.google.protobuf.GeneratedMessage.Builder<Builder>
3124       implements org.apache.reef.tang.proto.ClassHierarchyProto.ClassNodeOrBuilder {
3125      public static final com.google.protobuf.Descriptors.Descriptor
3126          getDescriptor() {
3127        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ClassNode_descriptor;
3128      }
3129
3130      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
3131          internalGetFieldAccessorTable() {
3132        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ClassNode_fieldAccessorTable
3133            .ensureFieldAccessorsInitialized(
3134                org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.Builder.class);
3135      }
3136
3137      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.newBuilder()
3138      private Builder() {
3139        maybeForceBuilderInitialization();
3140      }
3141
3142      private Builder(
3143          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
3144        super(parent);
3145        maybeForceBuilderInitialization();
3146      }
3147      private void maybeForceBuilderInitialization() {
3148        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
3149          getInjectableConstructorsFieldBuilder();
3150          getOtherConstructorsFieldBuilder();
3151        }
3152      }
3153      private static Builder create() {
3154        return new Builder();
3155      }
3156
3157      public Builder clear() {
3158        super.clear();
3159        isInjectionCandidate_ = false;
3160        bitField0_ = (bitField0_ & ~0x00000001);
3161        isExternalConstructor_ = false;
3162        bitField0_ = (bitField0_ & ~0x00000002);
3163        isUnit_ = false;
3164        bitField0_ = (bitField0_ & ~0x00000004);
3165        if (injectableConstructorsBuilder_ == null) {
3166          injectableConstructors_ = java.util.Collections.emptyList();
3167          bitField0_ = (bitField0_ & ~0x00000008);
3168        } else {
3169          injectableConstructorsBuilder_.clear();
3170        }
3171        if (otherConstructorsBuilder_ == null) {
3172          otherConstructors_ = java.util.Collections.emptyList();
3173          bitField0_ = (bitField0_ & ~0x00000010);
3174        } else {
3175          otherConstructorsBuilder_.clear();
3176        }
3177        implFullNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
3178        bitField0_ = (bitField0_ & ~0x00000020);
3179        defaultImplementation_ = "";
3180        bitField0_ = (bitField0_ & ~0x00000040);
3181        return this;
3182      }
3183
3184      public Builder clone() {
3185        return create().mergeFrom(buildPartial());
3186      }
3187
3188      public com.google.protobuf.Descriptors.Descriptor
3189          getDescriptorForType() {
3190        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ClassNode_descriptor;
3191      }
3192
3193      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode getDefaultInstanceForType() {
3194        return org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance();
3195      }
3196
3197      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode build() {
3198        org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode result = buildPartial();
3199        if (!result.isInitialized()) {
3200          throw newUninitializedMessageException(result);
3201        }
3202        return result;
3203      }
3204
3205      public org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode buildPartial() {
3206        org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode result = new org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode(this);
3207        int from_bitField0_ = bitField0_;
3208        int to_bitField0_ = 0;
3209        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
3210          to_bitField0_ |= 0x00000001;
3211        }
3212        result.isInjectionCandidate_ = isInjectionCandidate_;
3213        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
3214          to_bitField0_ |= 0x00000002;
3215        }
3216        result.isExternalConstructor_ = isExternalConstructor_;
3217        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
3218          to_bitField0_ |= 0x00000004;
3219        }
3220        result.isUnit_ = isUnit_;
3221        if (injectableConstructorsBuilder_ == null) {
3222          if (((bitField0_ & 0x00000008) == 0x00000008)) {
3223            injectableConstructors_ = java.util.Collections.unmodifiableList(injectableConstructors_);
3224            bitField0_ = (bitField0_ & ~0x00000008);
3225          }
3226          result.injectableConstructors_ = injectableConstructors_;
3227        } else {
3228          result.injectableConstructors_ = injectableConstructorsBuilder_.build();
3229        }
3230        if (otherConstructorsBuilder_ == null) {
3231          if (((bitField0_ & 0x00000010) == 0x00000010)) {
3232            otherConstructors_ = java.util.Collections.unmodifiableList(otherConstructors_);
3233            bitField0_ = (bitField0_ & ~0x00000010);
3234          }
3235          result.otherConstructors_ = otherConstructors_;
3236        } else {
3237          result.otherConstructors_ = otherConstructorsBuilder_.build();
3238        }
3239        if (((bitField0_ & 0x00000020) == 0x00000020)) {
3240          implFullNames_ = new com.google.protobuf.UnmodifiableLazyStringList(
3241              implFullNames_);
3242          bitField0_ = (bitField0_ & ~0x00000020);
3243        }
3244        result.implFullNames_ = implFullNames_;
3245        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
3246          to_bitField0_ |= 0x00000008;
3247        }
3248        result.defaultImplementation_ = defaultImplementation_;
3249        result.bitField0_ = to_bitField0_;
3250        onBuilt();
3251        return result;
3252      }
3253
3254      public Builder mergeFrom(com.google.protobuf.Message other) {
3255        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode) {
3256          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode)other);
3257        } else {
3258          super.mergeFrom(other);
3259          return this;
3260        }
3261      }
3262
3263      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode other) {
3264        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode.getDefaultInstance()) return this;
3265        if (other.hasIsInjectionCandidate()) {
3266          setIsInjectionCandidate(other.getIsInjectionCandidate());
3267        }
3268        if (other.hasIsExternalConstructor()) {
3269          setIsExternalConstructor(other.getIsExternalConstructor());
3270        }
3271        if (other.hasIsUnit()) {
3272          setIsUnit(other.getIsUnit());
3273        }
3274        if (injectableConstructorsBuilder_ == null) {
3275          if (!other.injectableConstructors_.isEmpty()) {
3276            if (injectableConstructors_.isEmpty()) {
3277              injectableConstructors_ = other.injectableConstructors_;
3278              bitField0_ = (bitField0_ & ~0x00000008);
3279            } else {
3280              ensureInjectableConstructorsIsMutable();
3281              injectableConstructors_.addAll(other.injectableConstructors_);
3282            }
3283            onChanged();
3284          }
3285        } else {
3286          if (!other.injectableConstructors_.isEmpty()) {
3287            if (injectableConstructorsBuilder_.isEmpty()) {
3288              injectableConstructorsBuilder_.dispose();
3289              injectableConstructorsBuilder_ = null;
3290              injectableConstructors_ = other.injectableConstructors_;
3291              bitField0_ = (bitField0_ & ~0x00000008);
3292              injectableConstructorsBuilder_ = 
3293                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
3294                   getInjectableConstructorsFieldBuilder() : null;
3295            } else {
3296              injectableConstructorsBuilder_.addAllMessages(other.injectableConstructors_);
3297            }
3298          }
3299        }
3300        if (otherConstructorsBuilder_ == null) {
3301          if (!other.otherConstructors_.isEmpty()) {
3302            if (otherConstructors_.isEmpty()) {
3303              otherConstructors_ = other.otherConstructors_;
3304              bitField0_ = (bitField0_ & ~0x00000010);
3305            } else {
3306              ensureOtherConstructorsIsMutable();
3307              otherConstructors_.addAll(other.otherConstructors_);
3308            }
3309            onChanged();
3310          }
3311        } else {
3312          if (!other.otherConstructors_.isEmpty()) {
3313            if (otherConstructorsBuilder_.isEmpty()) {
3314              otherConstructorsBuilder_.dispose();
3315              otherConstructorsBuilder_ = null;
3316              otherConstructors_ = other.otherConstructors_;
3317              bitField0_ = (bitField0_ & ~0x00000010);
3318              otherConstructorsBuilder_ = 
3319                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
3320                   getOtherConstructorsFieldBuilder() : null;
3321            } else {
3322              otherConstructorsBuilder_.addAllMessages(other.otherConstructors_);
3323            }
3324          }
3325        }
3326        if (!other.implFullNames_.isEmpty()) {
3327          if (implFullNames_.isEmpty()) {
3328            implFullNames_ = other.implFullNames_;
3329            bitField0_ = (bitField0_ & ~0x00000020);
3330          } else {
3331            ensureImplFullNamesIsMutable();
3332            implFullNames_.addAll(other.implFullNames_);
3333          }
3334          onChanged();
3335        }
3336        if (other.hasDefaultImplementation()) {
3337          bitField0_ |= 0x00000040;
3338          defaultImplementation_ = other.defaultImplementation_;
3339          onChanged();
3340        }
3341        this.mergeUnknownFields(other.getUnknownFields());
3342        return this;
3343      }
3344
3345      public final boolean isInitialized() {
3346        if (!hasIsInjectionCandidate()) {
3347          
3348          return false;
3349        }
3350        if (!hasIsExternalConstructor()) {
3351          
3352          return false;
3353        }
3354        if (!hasIsUnit()) {
3355          
3356          return false;
3357        }
3358        for (int i = 0; i < getInjectableConstructorsCount(); i++) {
3359          if (!getInjectableConstructors(i).isInitialized()) {
3360            
3361            return false;
3362          }
3363        }
3364        for (int i = 0; i < getOtherConstructorsCount(); i++) {
3365          if (!getOtherConstructors(i).isInitialized()) {
3366            
3367            return false;
3368          }
3369        }
3370        return true;
3371      }
3372
3373      public Builder mergeFrom(
3374          com.google.protobuf.CodedInputStream input,
3375          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
3376          throws java.io.IOException {
3377        org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode parsedMessage = null;
3378        try {
3379          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
3380        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
3381          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.ClassNode) e.getUnfinishedMessage();
3382          throw e;
3383        } finally {
3384          if (parsedMessage != null) {
3385            mergeFrom(parsedMessage);
3386          }
3387        }
3388        return this;
3389      }
3390      private int bitField0_;
3391
3392      // required bool is_injection_candidate = 1;
3393      private boolean isInjectionCandidate_ ;
3394      /**
3395       * <code>required bool is_injection_candidate = 1;</code>
3396       *
3397       * <pre>
3398       *
3399       *Some classes cannot be injected for language-specific reasons.  For
3400       *example, Java's non-static inner classes need a reference to the outer
3401       *class in order to be instantiated.  Set this boolean to false if there
3402       *is some reason why Tang cannot possibly inject this class.
3403       * </pre>
3404       */
3405      public boolean hasIsInjectionCandidate() {
3406        return ((bitField0_ & 0x00000001) == 0x00000001);
3407      }
3408      /**
3409       * <code>required bool is_injection_candidate = 1;</code>
3410       *
3411       * <pre>
3412       *
3413       *Some classes cannot be injected for language-specific reasons.  For
3414       *example, Java's non-static inner classes need a reference to the outer
3415       *class in order to be instantiated.  Set this boolean to false if there
3416       *is some reason why Tang cannot possibly inject this class.
3417       * </pre>
3418       */
3419      public boolean getIsInjectionCandidate() {
3420        return isInjectionCandidate_;
3421      }
3422      /**
3423       * <code>required bool is_injection_candidate = 1;</code>
3424       *
3425       * <pre>
3426       *
3427       *Some classes cannot be injected for language-specific reasons.  For
3428       *example, Java's non-static inner classes need a reference to the outer
3429       *class in order to be instantiated.  Set this boolean to false if there
3430       *is some reason why Tang cannot possibly inject this class.
3431       * </pre>
3432       */
3433      public Builder setIsInjectionCandidate(boolean value) {
3434        bitField0_ |= 0x00000001;
3435        isInjectionCandidate_ = value;
3436        onChanged();
3437        return this;
3438      }
3439      /**
3440       * <code>required bool is_injection_candidate = 1;</code>
3441       *
3442       * <pre>
3443       *
3444       *Some classes cannot be injected for language-specific reasons.  For
3445       *example, Java's non-static inner classes need a reference to the outer
3446       *class in order to be instantiated.  Set this boolean to false if there
3447       *is some reason why Tang cannot possibly inject this class.
3448       * </pre>
3449       */
3450      public Builder clearIsInjectionCandidate() {
3451        bitField0_ = (bitField0_ & ~0x00000001);
3452        isInjectionCandidate_ = false;
3453        onChanged();
3454        return this;
3455      }
3456
3457      // required bool is_external_constructor = 2;
3458      private boolean isExternalConstructor_ ;
3459      /**
3460       * <code>required bool is_external_constructor = 2;</code>
3461       *
3462       * <pre>
3463       *
3464       *This field will be set to true if this class is a Tang
3465       *ExternalConstructor implementation.
3466       *
3467       *If this is set to true, then some other class *must* contain this 
3468       *ClassNode's name in its impl_full_names field.
3469       * </pre>
3470       */
3471      public boolean hasIsExternalConstructor() {
3472        return ((bitField0_ & 0x00000002) == 0x00000002);
3473      }
3474      /**
3475       * <code>required bool is_external_constructor = 2;</code>
3476       *
3477       * <pre>
3478       *
3479       *This field will be set to true if this class is a Tang
3480       *ExternalConstructor implementation.
3481       *
3482       *If this is set to true, then some other class *must* contain this 
3483       *ClassNode's name in its impl_full_names field.
3484       * </pre>
3485       */
3486      public boolean getIsExternalConstructor() {
3487        return isExternalConstructor_;
3488      }
3489      /**
3490       * <code>required bool is_external_constructor = 2;</code>
3491       *
3492       * <pre>
3493       *
3494       *This field will be set to true if this class is a Tang
3495       *ExternalConstructor implementation.
3496       *
3497       *If this is set to true, then some other class *must* contain this 
3498       *ClassNode's name in its impl_full_names field.
3499       * </pre>
3500       */
3501      public Builder setIsExternalConstructor(boolean value) {
3502        bitField0_ |= 0x00000002;
3503        isExternalConstructor_ = value;
3504        onChanged();
3505        return this;
3506      }
3507      /**
3508       * <code>required bool is_external_constructor = 2;</code>
3509       *
3510       * <pre>
3511       *
3512       *This field will be set to true if this class is a Tang
3513       *ExternalConstructor implementation.
3514       *
3515       *If this is set to true, then some other class *must* contain this 
3516       *ClassNode's name in its impl_full_names field.
3517       * </pre>
3518       */
3519      public Builder clearIsExternalConstructor() {
3520        bitField0_ = (bitField0_ & ~0x00000002);
3521        isExternalConstructor_ = false;
3522        onChanged();
3523        return this;
3524      }
3525
3526      // required bool is_unit = 3;
3527      private boolean isUnit_ ;
3528      /**
3529       * <code>required bool is_unit = 3;</code>
3530       *
3531       * <pre>
3532       *
3533       *This field will be set to true if this class is annotated as a Tang
3534       *Unit.
3535       * </pre>
3536       */
3537      public boolean hasIsUnit() {
3538        return ((bitField0_ & 0x00000004) == 0x00000004);
3539      }
3540      /**
3541       * <code>required bool is_unit = 3;</code>
3542       *
3543       * <pre>
3544       *
3545       *This field will be set to true if this class is annotated as a Tang
3546       *Unit.
3547       * </pre>
3548       */
3549      public boolean getIsUnit() {
3550        return isUnit_;
3551      }
3552      /**
3553       * <code>required bool is_unit = 3;</code>
3554       *
3555       * <pre>
3556       *
3557       *This field will be set to true if this class is annotated as a Tang
3558       *Unit.
3559       * </pre>
3560       */
3561      public Builder setIsUnit(boolean value) {
3562        bitField0_ |= 0x00000004;
3563        isUnit_ = value;
3564        onChanged();
3565        return this;
3566      }
3567      /**
3568       * <code>required bool is_unit = 3;</code>
3569       *
3570       * <pre>
3571       *
3572       *This field will be set to true if this class is annotated as a Tang
3573       *Unit.
3574       * </pre>
3575       */
3576      public Builder clearIsUnit() {
3577        bitField0_ = (bitField0_ & ~0x00000004);
3578        isUnit_ = false;
3579        onChanged();
3580        return this;
3581      }
3582
3583      // repeated .ConstructorDef InjectableConstructors = 4;
3584      private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> injectableConstructors_ =
3585        java.util.Collections.emptyList();
3586      private void ensureInjectableConstructorsIsMutable() {
3587        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
3588          injectableConstructors_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef>(injectableConstructors_);
3589          bitField0_ |= 0x00000008;
3590         }
3591      }
3592
3593      private com.google.protobuf.RepeatedFieldBuilder<
3594          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> injectableConstructorsBuilder_;
3595
3596      /**
3597       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3598       *
3599       * <pre>
3600       *
3601       *A list of all the constructors that are defined by this class and 
3602       *annotated to be injectable.
3603       * </pre>
3604       */
3605      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> getInjectableConstructorsList() {
3606        if (injectableConstructorsBuilder_ == null) {
3607          return java.util.Collections.unmodifiableList(injectableConstructors_);
3608        } else {
3609          return injectableConstructorsBuilder_.getMessageList();
3610        }
3611      }
3612      /**
3613       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3614       *
3615       * <pre>
3616       *
3617       *A list of all the constructors that are defined by this class and 
3618       *annotated to be injectable.
3619       * </pre>
3620       */
3621      public int getInjectableConstructorsCount() {
3622        if (injectableConstructorsBuilder_ == null) {
3623          return injectableConstructors_.size();
3624        } else {
3625          return injectableConstructorsBuilder_.getCount();
3626        }
3627      }
3628      /**
3629       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3630       *
3631       * <pre>
3632       *
3633       *A list of all the constructors that are defined by this class and 
3634       *annotated to be injectable.
3635       * </pre>
3636       */
3637      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getInjectableConstructors(int index) {
3638        if (injectableConstructorsBuilder_ == null) {
3639          return injectableConstructors_.get(index);
3640        } else {
3641          return injectableConstructorsBuilder_.getMessage(index);
3642        }
3643      }
3644      /**
3645       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3646       *
3647       * <pre>
3648       *
3649       *A list of all the constructors that are defined by this class and 
3650       *annotated to be injectable.
3651       * </pre>
3652       */
3653      public Builder setInjectableConstructors(
3654          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
3655        if (injectableConstructorsBuilder_ == null) {
3656          if (value == null) {
3657            throw new NullPointerException();
3658          }
3659          ensureInjectableConstructorsIsMutable();
3660          injectableConstructors_.set(index, value);
3661          onChanged();
3662        } else {
3663          injectableConstructorsBuilder_.setMessage(index, value);
3664        }
3665        return this;
3666      }
3667      /**
3668       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3669       *
3670       * <pre>
3671       *
3672       *A list of all the constructors that are defined by this class and 
3673       *annotated to be injectable.
3674       * </pre>
3675       */
3676      public Builder setInjectableConstructors(
3677          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
3678        if (injectableConstructorsBuilder_ == null) {
3679          ensureInjectableConstructorsIsMutable();
3680          injectableConstructors_.set(index, builderForValue.build());
3681          onChanged();
3682        } else {
3683          injectableConstructorsBuilder_.setMessage(index, builderForValue.build());
3684        }
3685        return this;
3686      }
3687      /**
3688       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3689       *
3690       * <pre>
3691       *
3692       *A list of all the constructors that are defined by this class and 
3693       *annotated to be injectable.
3694       * </pre>
3695       */
3696      public Builder addInjectableConstructors(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
3697        if (injectableConstructorsBuilder_ == null) {
3698          if (value == null) {
3699            throw new NullPointerException();
3700          }
3701          ensureInjectableConstructorsIsMutable();
3702          injectableConstructors_.add(value);
3703          onChanged();
3704        } else {
3705          injectableConstructorsBuilder_.addMessage(value);
3706        }
3707        return this;
3708      }
3709      /**
3710       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3711       *
3712       * <pre>
3713       *
3714       *A list of all the constructors that are defined by this class and 
3715       *annotated to be injectable.
3716       * </pre>
3717       */
3718      public Builder addInjectableConstructors(
3719          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
3720        if (injectableConstructorsBuilder_ == null) {
3721          if (value == null) {
3722            throw new NullPointerException();
3723          }
3724          ensureInjectableConstructorsIsMutable();
3725          injectableConstructors_.add(index, value);
3726          onChanged();
3727        } else {
3728          injectableConstructorsBuilder_.addMessage(index, value);
3729        }
3730        return this;
3731      }
3732      /**
3733       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3734       *
3735       * <pre>
3736       *
3737       *A list of all the constructors that are defined by this class and 
3738       *annotated to be injectable.
3739       * </pre>
3740       */
3741      public Builder addInjectableConstructors(
3742          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
3743        if (injectableConstructorsBuilder_ == null) {
3744          ensureInjectableConstructorsIsMutable();
3745          injectableConstructors_.add(builderForValue.build());
3746          onChanged();
3747        } else {
3748          injectableConstructorsBuilder_.addMessage(builderForValue.build());
3749        }
3750        return this;
3751      }
3752      /**
3753       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3754       *
3755       * <pre>
3756       *
3757       *A list of all the constructors that are defined by this class and 
3758       *annotated to be injectable.
3759       * </pre>
3760       */
3761      public Builder addInjectableConstructors(
3762          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
3763        if (injectableConstructorsBuilder_ == null) {
3764          ensureInjectableConstructorsIsMutable();
3765          injectableConstructors_.add(index, builderForValue.build());
3766          onChanged();
3767        } else {
3768          injectableConstructorsBuilder_.addMessage(index, builderForValue.build());
3769        }
3770        return this;
3771      }
3772      /**
3773       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3774       *
3775       * <pre>
3776       *
3777       *A list of all the constructors that are defined by this class and 
3778       *annotated to be injectable.
3779       * </pre>
3780       */
3781      public Builder addAllInjectableConstructors(
3782          java.lang.Iterable<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> values) {
3783        if (injectableConstructorsBuilder_ == null) {
3784          ensureInjectableConstructorsIsMutable();
3785          super.addAll(values, injectableConstructors_);
3786          onChanged();
3787        } else {
3788          injectableConstructorsBuilder_.addAllMessages(values);
3789        }
3790        return this;
3791      }
3792      /**
3793       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3794       *
3795       * <pre>
3796       *
3797       *A list of all the constructors that are defined by this class and 
3798       *annotated to be injectable.
3799       * </pre>
3800       */
3801      public Builder clearInjectableConstructors() {
3802        if (injectableConstructorsBuilder_ == null) {
3803          injectableConstructors_ = java.util.Collections.emptyList();
3804          bitField0_ = (bitField0_ & ~0x00000008);
3805          onChanged();
3806        } else {
3807          injectableConstructorsBuilder_.clear();
3808        }
3809        return this;
3810      }
3811      /**
3812       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3813       *
3814       * <pre>
3815       *
3816       *A list of all the constructors that are defined by this class and 
3817       *annotated to be injectable.
3818       * </pre>
3819       */
3820      public Builder removeInjectableConstructors(int index) {
3821        if (injectableConstructorsBuilder_ == null) {
3822          ensureInjectableConstructorsIsMutable();
3823          injectableConstructors_.remove(index);
3824          onChanged();
3825        } else {
3826          injectableConstructorsBuilder_.remove(index);
3827        }
3828        return this;
3829      }
3830      /**
3831       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3832       *
3833       * <pre>
3834       *
3835       *A list of all the constructors that are defined by this class and 
3836       *annotated to be injectable.
3837       * </pre>
3838       */
3839      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder getInjectableConstructorsBuilder(
3840          int index) {
3841        return getInjectableConstructorsFieldBuilder().getBuilder(index);
3842      }
3843      /**
3844       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3845       *
3846       * <pre>
3847       *
3848       *A list of all the constructors that are defined by this class and 
3849       *annotated to be injectable.
3850       * </pre>
3851       */
3852      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getInjectableConstructorsOrBuilder(
3853          int index) {
3854        if (injectableConstructorsBuilder_ == null) {
3855          return injectableConstructors_.get(index);  } else {
3856          return injectableConstructorsBuilder_.getMessageOrBuilder(index);
3857        }
3858      }
3859      /**
3860       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3861       *
3862       * <pre>
3863       *
3864       *A list of all the constructors that are defined by this class and 
3865       *annotated to be injectable.
3866       * </pre>
3867       */
3868      public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
3869           getInjectableConstructorsOrBuilderList() {
3870        if (injectableConstructorsBuilder_ != null) {
3871          return injectableConstructorsBuilder_.getMessageOrBuilderList();
3872        } else {
3873          return java.util.Collections.unmodifiableList(injectableConstructors_);
3874        }
3875      }
3876      /**
3877       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3878       *
3879       * <pre>
3880       *
3881       *A list of all the constructors that are defined by this class and 
3882       *annotated to be injectable.
3883       * </pre>
3884       */
3885      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder addInjectableConstructorsBuilder() {
3886        return getInjectableConstructorsFieldBuilder().addBuilder(
3887            org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance());
3888      }
3889      /**
3890       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3891       *
3892       * <pre>
3893       *
3894       *A list of all the constructors that are defined by this class and 
3895       *annotated to be injectable.
3896       * </pre>
3897       */
3898      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder addInjectableConstructorsBuilder(
3899          int index) {
3900        return getInjectableConstructorsFieldBuilder().addBuilder(
3901            index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance());
3902      }
3903      /**
3904       * <code>repeated .ConstructorDef InjectableConstructors = 4;</code>
3905       *
3906       * <pre>
3907       *
3908       *A list of all the constructors that are defined by this class and 
3909       *annotated to be injectable.
3910       * </pre>
3911       */
3912      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder> 
3913           getInjectableConstructorsBuilderList() {
3914        return getInjectableConstructorsFieldBuilder().getBuilderList();
3915      }
3916      private com.google.protobuf.RepeatedFieldBuilder<
3917          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
3918          getInjectableConstructorsFieldBuilder() {
3919        if (injectableConstructorsBuilder_ == null) {
3920          injectableConstructorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
3921              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder>(
3922                  injectableConstructors_,
3923                  ((bitField0_ & 0x00000008) == 0x00000008),
3924                  getParentForChildren(),
3925                  isClean());
3926          injectableConstructors_ = null;
3927        }
3928        return injectableConstructorsBuilder_;
3929      }
3930
3931      // repeated .ConstructorDef OtherConstructors = 5;
3932      private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> otherConstructors_ =
3933        java.util.Collections.emptyList();
3934      private void ensureOtherConstructorsIsMutable() {
3935        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
3936          otherConstructors_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef>(otherConstructors_);
3937          bitField0_ |= 0x00000010;
3938         }
3939      }
3940
3941      private com.google.protobuf.RepeatedFieldBuilder<
3942          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> otherConstructorsBuilder_;
3943
3944      /**
3945       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
3946       *
3947       * <pre>
3948       *
3949       *A list of all the other constructors (so that they can be registered
3950       *as legacy constructors if the configuration tells us to treat them
3951       *as though they were annotated with an Inject).
3952       * </pre>
3953       */
3954      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> getOtherConstructorsList() {
3955        if (otherConstructorsBuilder_ == null) {
3956          return java.util.Collections.unmodifiableList(otherConstructors_);
3957        } else {
3958          return otherConstructorsBuilder_.getMessageList();
3959        }
3960      }
3961      /**
3962       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
3963       *
3964       * <pre>
3965       *
3966       *A list of all the other constructors (so that they can be registered
3967       *as legacy constructors if the configuration tells us to treat them
3968       *as though they were annotated with an Inject).
3969       * </pre>
3970       */
3971      public int getOtherConstructorsCount() {
3972        if (otherConstructorsBuilder_ == null) {
3973          return otherConstructors_.size();
3974        } else {
3975          return otherConstructorsBuilder_.getCount();
3976        }
3977      }
3978      /**
3979       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
3980       *
3981       * <pre>
3982       *
3983       *A list of all the other constructors (so that they can be registered
3984       *as legacy constructors if the configuration tells us to treat them
3985       *as though they were annotated with an Inject).
3986       * </pre>
3987       */
3988      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getOtherConstructors(int index) {
3989        if (otherConstructorsBuilder_ == null) {
3990          return otherConstructors_.get(index);
3991        } else {
3992          return otherConstructorsBuilder_.getMessage(index);
3993        }
3994      }
3995      /**
3996       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
3997       *
3998       * <pre>
3999       *
4000       *A list of all the other constructors (so that they can be registered
4001       *as legacy constructors if the configuration tells us to treat them
4002       *as though they were annotated with an Inject).
4003       * </pre>
4004       */
4005      public Builder setOtherConstructors(
4006          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
4007        if (otherConstructorsBuilder_ == null) {
4008          if (value == null) {
4009            throw new NullPointerException();
4010          }
4011          ensureOtherConstructorsIsMutable();
4012          otherConstructors_.set(index, value);
4013          onChanged();
4014        } else {
4015          otherConstructorsBuilder_.setMessage(index, value);
4016        }
4017        return this;
4018      }
4019      /**
4020       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4021       *
4022       * <pre>
4023       *
4024       *A list of all the other constructors (so that they can be registered
4025       *as legacy constructors if the configuration tells us to treat them
4026       *as though they were annotated with an Inject).
4027       * </pre>
4028       */
4029      public Builder setOtherConstructors(
4030          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
4031        if (otherConstructorsBuilder_ == null) {
4032          ensureOtherConstructorsIsMutable();
4033          otherConstructors_.set(index, builderForValue.build());
4034          onChanged();
4035        } else {
4036          otherConstructorsBuilder_.setMessage(index, builderForValue.build());
4037        }
4038        return this;
4039      }
4040      /**
4041       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4042       *
4043       * <pre>
4044       *
4045       *A list of all the other constructors (so that they can be registered
4046       *as legacy constructors if the configuration tells us to treat them
4047       *as though they were annotated with an Inject).
4048       * </pre>
4049       */
4050      public Builder addOtherConstructors(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
4051        if (otherConstructorsBuilder_ == null) {
4052          if (value == null) {
4053            throw new NullPointerException();
4054          }
4055          ensureOtherConstructorsIsMutable();
4056          otherConstructors_.add(value);
4057          onChanged();
4058        } else {
4059          otherConstructorsBuilder_.addMessage(value);
4060        }
4061        return this;
4062      }
4063      /**
4064       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4065       *
4066       * <pre>
4067       *
4068       *A list of all the other constructors (so that they can be registered
4069       *as legacy constructors if the configuration tells us to treat them
4070       *as though they were annotated with an Inject).
4071       * </pre>
4072       */
4073      public Builder addOtherConstructors(
4074          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef value) {
4075        if (otherConstructorsBuilder_ == null) {
4076          if (value == null) {
4077            throw new NullPointerException();
4078          }
4079          ensureOtherConstructorsIsMutable();
4080          otherConstructors_.add(index, value);
4081          onChanged();
4082        } else {
4083          otherConstructorsBuilder_.addMessage(index, value);
4084        }
4085        return this;
4086      }
4087      /**
4088       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4089       *
4090       * <pre>
4091       *
4092       *A list of all the other constructors (so that they can be registered
4093       *as legacy constructors if the configuration tells us to treat them
4094       *as though they were annotated with an Inject).
4095       * </pre>
4096       */
4097      public Builder addOtherConstructors(
4098          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
4099        if (otherConstructorsBuilder_ == null) {
4100          ensureOtherConstructorsIsMutable();
4101          otherConstructors_.add(builderForValue.build());
4102          onChanged();
4103        } else {
4104          otherConstructorsBuilder_.addMessage(builderForValue.build());
4105        }
4106        return this;
4107      }
4108      /**
4109       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4110       *
4111       * <pre>
4112       *
4113       *A list of all the other constructors (so that they can be registered
4114       *as legacy constructors if the configuration tells us to treat them
4115       *as though they were annotated with an Inject).
4116       * </pre>
4117       */
4118      public Builder addOtherConstructors(
4119          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder builderForValue) {
4120        if (otherConstructorsBuilder_ == null) {
4121          ensureOtherConstructorsIsMutable();
4122          otherConstructors_.add(index, builderForValue.build());
4123          onChanged();
4124        } else {
4125          otherConstructorsBuilder_.addMessage(index, builderForValue.build());
4126        }
4127        return this;
4128      }
4129      /**
4130       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4131       *
4132       * <pre>
4133       *
4134       *A list of all the other constructors (so that they can be registered
4135       *as legacy constructors if the configuration tells us to treat them
4136       *as though they were annotated with an Inject).
4137       * </pre>
4138       */
4139      public Builder addAllOtherConstructors(
4140          java.lang.Iterable<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef> values) {
4141        if (otherConstructorsBuilder_ == null) {
4142          ensureOtherConstructorsIsMutable();
4143          super.addAll(values, otherConstructors_);
4144          onChanged();
4145        } else {
4146          otherConstructorsBuilder_.addAllMessages(values);
4147        }
4148        return this;
4149      }
4150      /**
4151       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4152       *
4153       * <pre>
4154       *
4155       *A list of all the other constructors (so that they can be registered
4156       *as legacy constructors if the configuration tells us to treat them
4157       *as though they were annotated with an Inject).
4158       * </pre>
4159       */
4160      public Builder clearOtherConstructors() {
4161        if (otherConstructorsBuilder_ == null) {
4162          otherConstructors_ = java.util.Collections.emptyList();
4163          bitField0_ = (bitField0_ & ~0x00000010);
4164          onChanged();
4165        } else {
4166          otherConstructorsBuilder_.clear();
4167        }
4168        return this;
4169      }
4170      /**
4171       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4172       *
4173       * <pre>
4174       *
4175       *A list of all the other constructors (so that they can be registered
4176       *as legacy constructors if the configuration tells us to treat them
4177       *as though they were annotated with an Inject).
4178       * </pre>
4179       */
4180      public Builder removeOtherConstructors(int index) {
4181        if (otherConstructorsBuilder_ == null) {
4182          ensureOtherConstructorsIsMutable();
4183          otherConstructors_.remove(index);
4184          onChanged();
4185        } else {
4186          otherConstructorsBuilder_.remove(index);
4187        }
4188        return this;
4189      }
4190      /**
4191       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4192       *
4193       * <pre>
4194       *
4195       *A list of all the other constructors (so that they can be registered
4196       *as legacy constructors if the configuration tells us to treat them
4197       *as though they were annotated with an Inject).
4198       * </pre>
4199       */
4200      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder getOtherConstructorsBuilder(
4201          int index) {
4202        return getOtherConstructorsFieldBuilder().getBuilder(index);
4203      }
4204      /**
4205       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4206       *
4207       * <pre>
4208       *
4209       *A list of all the other constructors (so that they can be registered
4210       *as legacy constructors if the configuration tells us to treat them
4211       *as though they were annotated with an Inject).
4212       * </pre>
4213       */
4214      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder getOtherConstructorsOrBuilder(
4215          int index) {
4216        if (otherConstructorsBuilder_ == null) {
4217          return otherConstructors_.get(index);  } else {
4218          return otherConstructorsBuilder_.getMessageOrBuilder(index);
4219        }
4220      }
4221      /**
4222       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4223       *
4224       * <pre>
4225       *
4226       *A list of all the other constructors (so that they can be registered
4227       *as legacy constructors if the configuration tells us to treat them
4228       *as though they were annotated with an Inject).
4229       * </pre>
4230       */
4231      public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
4232           getOtherConstructorsOrBuilderList() {
4233        if (otherConstructorsBuilder_ != null) {
4234          return otherConstructorsBuilder_.getMessageOrBuilderList();
4235        } else {
4236          return java.util.Collections.unmodifiableList(otherConstructors_);
4237        }
4238      }
4239      /**
4240       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4241       *
4242       * <pre>
4243       *
4244       *A list of all the other constructors (so that they can be registered
4245       *as legacy constructors if the configuration tells us to treat them
4246       *as though they were annotated with an Inject).
4247       * </pre>
4248       */
4249      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder addOtherConstructorsBuilder() {
4250        return getOtherConstructorsFieldBuilder().addBuilder(
4251            org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance());
4252      }
4253      /**
4254       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4255       *
4256       * <pre>
4257       *
4258       *A list of all the other constructors (so that they can be registered
4259       *as legacy constructors if the configuration tells us to treat them
4260       *as though they were annotated with an Inject).
4261       * </pre>
4262       */
4263      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder addOtherConstructorsBuilder(
4264          int index) {
4265        return getOtherConstructorsFieldBuilder().addBuilder(
4266            index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance());
4267      }
4268      /**
4269       * <code>repeated .ConstructorDef OtherConstructors = 5;</code>
4270       *
4271       * <pre>
4272       *
4273       *A list of all the other constructors (so that they can be registered
4274       *as legacy constructors if the configuration tells us to treat them
4275       *as though they were annotated with an Inject).
4276       * </pre>
4277       */
4278      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder> 
4279           getOtherConstructorsBuilderList() {
4280        return getOtherConstructorsFieldBuilder().getBuilderList();
4281      }
4282      private com.google.protobuf.RepeatedFieldBuilder<
4283          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder> 
4284          getOtherConstructorsFieldBuilder() {
4285        if (otherConstructorsBuilder_ == null) {
4286          otherConstructorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
4287              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder>(
4288                  otherConstructors_,
4289                  ((bitField0_ & 0x00000010) == 0x00000010),
4290                  getParentForChildren(),
4291                  isClean());
4292          otherConstructors_ = null;
4293        }
4294        return otherConstructorsBuilder_;
4295      }
4296
4297      // repeated string impl_full_names = 6;
4298      private com.google.protobuf.LazyStringList implFullNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
4299      private void ensureImplFullNamesIsMutable() {
4300        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
4301          implFullNames_ = new com.google.protobuf.LazyStringArrayList(implFullNames_);
4302          bitField0_ |= 0x00000020;
4303         }
4304      }
4305      /**
4306       * <code>repeated string impl_full_names = 6;</code>
4307       *
4308       * <pre>
4309       *
4310       *A list of all the ClassNodes that implement this class, including
4311       *legacy constructors. 
4312       * </pre>
4313       */
4314      public java.util.List<java.lang.String>
4315          getImplFullNamesList() {
4316        return java.util.Collections.unmodifiableList(implFullNames_);
4317      }
4318      /**
4319       * <code>repeated string impl_full_names = 6;</code>
4320       *
4321       * <pre>
4322       *
4323       *A list of all the ClassNodes that implement this class, including
4324       *legacy constructors. 
4325       * </pre>
4326       */
4327      public int getImplFullNamesCount() {
4328        return implFullNames_.size();
4329      }
4330      /**
4331       * <code>repeated string impl_full_names = 6;</code>
4332       *
4333       * <pre>
4334       *
4335       *A list of all the ClassNodes that implement this class, including
4336       *legacy constructors. 
4337       * </pre>
4338       */
4339      public java.lang.String getImplFullNames(int index) {
4340        return implFullNames_.get(index);
4341      }
4342      /**
4343       * <code>repeated string impl_full_names = 6;</code>
4344       *
4345       * <pre>
4346       *
4347       *A list of all the ClassNodes that implement this class, including
4348       *legacy constructors. 
4349       * </pre>
4350       */
4351      public com.google.protobuf.ByteString
4352          getImplFullNamesBytes(int index) {
4353        return implFullNames_.getByteString(index);
4354      }
4355      /**
4356       * <code>repeated string impl_full_names = 6;</code>
4357       *
4358       * <pre>
4359       *
4360       *A list of all the ClassNodes that implement this class, including
4361       *legacy constructors. 
4362       * </pre>
4363       */
4364      public Builder setImplFullNames(
4365          int index, java.lang.String value) {
4366        if (value == null) {
4367    throw new NullPointerException();
4368  }
4369  ensureImplFullNamesIsMutable();
4370        implFullNames_.set(index, value);
4371        onChanged();
4372        return this;
4373      }
4374      /**
4375       * <code>repeated string impl_full_names = 6;</code>
4376       *
4377       * <pre>
4378       *
4379       *A list of all the ClassNodes that implement this class, including
4380       *legacy constructors. 
4381       * </pre>
4382       */
4383      public Builder addImplFullNames(
4384          java.lang.String value) {
4385        if (value == null) {
4386    throw new NullPointerException();
4387  }
4388  ensureImplFullNamesIsMutable();
4389        implFullNames_.add(value);
4390        onChanged();
4391        return this;
4392      }
4393      /**
4394       * <code>repeated string impl_full_names = 6;</code>
4395       *
4396       * <pre>
4397       *
4398       *A list of all the ClassNodes that implement this class, including
4399       *legacy constructors. 
4400       * </pre>
4401       */
4402      public Builder addAllImplFullNames(
4403          java.lang.Iterable<java.lang.String> values) {
4404        ensureImplFullNamesIsMutable();
4405        super.addAll(values, implFullNames_);
4406        onChanged();
4407        return this;
4408      }
4409      /**
4410       * <code>repeated string impl_full_names = 6;</code>
4411       *
4412       * <pre>
4413       *
4414       *A list of all the ClassNodes that implement this class, including
4415       *legacy constructors. 
4416       * </pre>
4417       */
4418      public Builder clearImplFullNames() {
4419        implFullNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
4420        bitField0_ = (bitField0_ & ~0x00000020);
4421        onChanged();
4422        return this;
4423      }
4424      /**
4425       * <code>repeated string impl_full_names = 6;</code>
4426       *
4427       * <pre>
4428       *
4429       *A list of all the ClassNodes that implement this class, including
4430       *legacy constructors. 
4431       * </pre>
4432       */
4433      public Builder addImplFullNamesBytes(
4434          com.google.protobuf.ByteString value) {
4435        if (value == null) {
4436    throw new NullPointerException();
4437  }
4438  ensureImplFullNamesIsMutable();
4439        implFullNames_.add(value);
4440        onChanged();
4441        return this;
4442      }
4443
4444      // optional string default_implementation = 7;
4445      private java.lang.Object defaultImplementation_ = "";
4446      /**
4447       * <code>optional string default_implementation = 7;</code>
4448       */
4449      public boolean hasDefaultImplementation() {
4450        return ((bitField0_ & 0x00000040) == 0x00000040);
4451      }
4452      /**
4453       * <code>optional string default_implementation = 7;</code>
4454       */
4455      public java.lang.String getDefaultImplementation() {
4456        java.lang.Object ref = defaultImplementation_;
4457        if (!(ref instanceof java.lang.String)) {
4458          java.lang.String s = ((com.google.protobuf.ByteString) ref)
4459              .toStringUtf8();
4460          defaultImplementation_ = s;
4461          return s;
4462        } else {
4463          return (java.lang.String) ref;
4464        }
4465      }
4466      /**
4467       * <code>optional string default_implementation = 7;</code>
4468       */
4469      public com.google.protobuf.ByteString
4470          getDefaultImplementationBytes() {
4471        java.lang.Object ref = defaultImplementation_;
4472        if (ref instanceof String) {
4473          com.google.protobuf.ByteString b = 
4474              com.google.protobuf.ByteString.copyFromUtf8(
4475                  (java.lang.String) ref);
4476          defaultImplementation_ = b;
4477          return b;
4478        } else {
4479          return (com.google.protobuf.ByteString) ref;
4480        }
4481      }
4482      /**
4483       * <code>optional string default_implementation = 7;</code>
4484       */
4485      public Builder setDefaultImplementation(
4486          java.lang.String value) {
4487        if (value == null) {
4488    throw new NullPointerException();
4489  }
4490  bitField0_ |= 0x00000040;
4491        defaultImplementation_ = value;
4492        onChanged();
4493        return this;
4494      }
4495      /**
4496       * <code>optional string default_implementation = 7;</code>
4497       */
4498      public Builder clearDefaultImplementation() {
4499        bitField0_ = (bitField0_ & ~0x00000040);
4500        defaultImplementation_ = getDefaultInstance().getDefaultImplementation();
4501        onChanged();
4502        return this;
4503      }
4504      /**
4505       * <code>optional string default_implementation = 7;</code>
4506       */
4507      public Builder setDefaultImplementationBytes(
4508          com.google.protobuf.ByteString value) {
4509        if (value == null) {
4510    throw new NullPointerException();
4511  }
4512  bitField0_ |= 0x00000040;
4513        defaultImplementation_ = value;
4514        onChanged();
4515        return this;
4516      }
4517
4518      // @@protoc_insertion_point(builder_scope:ClassNode)
4519    }
4520
4521    static {
4522      defaultInstance = new ClassNode(true);
4523      defaultInstance.initFields();
4524    }
4525
4526    // @@protoc_insertion_point(class_scope:ClassNode)
4527  }
4528
4529  public interface NamedParameterNodeOrBuilder
4530      extends com.google.protobuf.MessageOrBuilder {
4531
4532    // required string simple_arg_class_name = 1;
4533    /**
4534     * <code>required string simple_arg_class_name = 1;</code>
4535     *
4536     * <pre>
4537     *
4538     *The short name (Node.name) of the type of argument this node names.
4539     * </pre>
4540     */
4541    boolean hasSimpleArgClassName();
4542    /**
4543     * <code>required string simple_arg_class_name = 1;</code>
4544     *
4545     * <pre>
4546     *
4547     *The short name (Node.name) of the type of argument this node names.
4548     * </pre>
4549     */
4550    java.lang.String getSimpleArgClassName();
4551    /**
4552     * <code>required string simple_arg_class_name = 1;</code>
4553     *
4554     * <pre>
4555     *
4556     *The short name (Node.name) of the type of argument this node names.
4557     * </pre>
4558     */
4559    com.google.protobuf.ByteString
4560        getSimpleArgClassNameBytes();
4561
4562    // required string full_arg_class_name = 2;
4563    /**
4564     * <code>required string full_arg_class_name = 2;</code>
4565     *
4566     * <pre>
4567     *
4568     *The full name (Node.full_name) of the type of argument that this node
4569     *names.
4570     * </pre>
4571     */
4572    boolean hasFullArgClassName();
4573    /**
4574     * <code>required string full_arg_class_name = 2;</code>
4575     *
4576     * <pre>
4577     *
4578     *The full name (Node.full_name) of the type of argument that this node
4579     *names.
4580     * </pre>
4581     */
4582    java.lang.String getFullArgClassName();
4583    /**
4584     * <code>required string full_arg_class_name = 2;</code>
4585     *
4586     * <pre>
4587     *
4588     *The full name (Node.full_name) of the type of argument that this node
4589     *names.
4590     * </pre>
4591     */
4592    com.google.protobuf.ByteString
4593        getFullArgClassNameBytes();
4594
4595    // required bool is_set = 3;
4596    /**
4597     * <code>required bool is_set = 3;</code>
4598     */
4599    boolean hasIsSet();
4600    /**
4601     * <code>required bool is_set = 3;</code>
4602     */
4603    boolean getIsSet();
4604
4605    // required bool is_list = 4;
4606    /**
4607     * <code>required bool is_list = 4;</code>
4608     */
4609    boolean hasIsList();
4610    /**
4611     * <code>required bool is_list = 4;</code>
4612     */
4613    boolean getIsList();
4614
4615    // optional string documentation = 5;
4616    /**
4617     * <code>optional string documentation = 5;</code>
4618     *
4619     * <pre>
4620     *
4621     *An optional human readable documentation string describing the purpose
4622     *of this NamedParameter.
4623     * </pre>
4624     */
4625    boolean hasDocumentation();
4626    /**
4627     * <code>optional string documentation = 5;</code>
4628     *
4629     * <pre>
4630     *
4631     *An optional human readable documentation string describing the purpose
4632     *of this NamedParameter.
4633     * </pre>
4634     */
4635    java.lang.String getDocumentation();
4636    /**
4637     * <code>optional string documentation = 5;</code>
4638     *
4639     * <pre>
4640     *
4641     *An optional human readable documentation string describing the purpose
4642     *of this NamedParameter.
4643     * </pre>
4644     */
4645    com.google.protobuf.ByteString
4646        getDocumentationBytes();
4647
4648    // optional string short_name = 6;
4649    /**
4650     * <code>optional string short_name = 6;</code>
4651     *
4652     * <pre>
4653     *
4654     *A shorter name for this parameter.  This is used for command line
4655     *processing. (So utilities that see --short_name=xxx will set this
4656     *NamedParameter to "xxx", for example).  
4657     * </pre>
4658     */
4659    boolean hasShortName();
4660    /**
4661     * <code>optional string short_name = 6;</code>
4662     *
4663     * <pre>
4664     *
4665     *A shorter name for this parameter.  This is used for command line
4666     *processing. (So utilities that see --short_name=xxx will set this
4667     *NamedParameter to "xxx", for example).  
4668     * </pre>
4669     */
4670    java.lang.String getShortName();
4671    /**
4672     * <code>optional string short_name = 6;</code>
4673     *
4674     * <pre>
4675     *
4676     *A shorter name for this parameter.  This is used for command line
4677     *processing. (So utilities that see --short_name=xxx will set this
4678     *NamedParameter to "xxx", for example).  
4679     * </pre>
4680     */
4681    com.google.protobuf.ByteString
4682        getShortNameBytes();
4683
4684    // repeated string instance_default = 7;
4685    /**
4686     * <code>repeated string instance_default = 7;</code>
4687     *
4688     * <pre>
4689     * calling this "default_instance" breaks protoc.
4690     * </pre>
4691     */
4692    java.util.List<java.lang.String>
4693    getInstanceDefaultList();
4694    /**
4695     * <code>repeated string instance_default = 7;</code>
4696     *
4697     * <pre>
4698     * calling this "default_instance" breaks protoc.
4699     * </pre>
4700     */
4701    int getInstanceDefaultCount();
4702    /**
4703     * <code>repeated string instance_default = 7;</code>
4704     *
4705     * <pre>
4706     * calling this "default_instance" breaks protoc.
4707     * </pre>
4708     */
4709    java.lang.String getInstanceDefault(int index);
4710    /**
4711     * <code>repeated string instance_default = 7;</code>
4712     *
4713     * <pre>
4714     * calling this "default_instance" breaks protoc.
4715     * </pre>
4716     */
4717    com.google.protobuf.ByteString
4718        getInstanceDefaultBytes(int index);
4719  }
4720  /**
4721   * Protobuf type {@code NamedParameterNode}
4722   */
4723  public static final class NamedParameterNode extends
4724      com.google.protobuf.GeneratedMessage
4725      implements NamedParameterNodeOrBuilder {
4726    // Use NamedParameterNode.newBuilder() to construct.
4727    private NamedParameterNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
4728      super(builder);
4729      this.unknownFields = builder.getUnknownFields();
4730    }
4731    private NamedParameterNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
4732
4733    private static final NamedParameterNode defaultInstance;
4734    public static NamedParameterNode getDefaultInstance() {
4735      return defaultInstance;
4736    }
4737
4738    public NamedParameterNode getDefaultInstanceForType() {
4739      return defaultInstance;
4740    }
4741
4742    private final com.google.protobuf.UnknownFieldSet unknownFields;
4743    @java.lang.Override
4744    public final com.google.protobuf.UnknownFieldSet
4745        getUnknownFields() {
4746      return this.unknownFields;
4747    }
4748    private NamedParameterNode(
4749        com.google.protobuf.CodedInputStream input,
4750        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
4751        throws com.google.protobuf.InvalidProtocolBufferException {
4752      initFields();
4753      int mutable_bitField0_ = 0;
4754      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
4755          com.google.protobuf.UnknownFieldSet.newBuilder();
4756      try {
4757        boolean done = false;
4758        while (!done) {
4759          int tag = input.readTag();
4760          switch (tag) {
4761            case 0:
4762              done = true;
4763              break;
4764            default: {
4765              if (!parseUnknownField(input, unknownFields,
4766                                     extensionRegistry, tag)) {
4767                done = true;
4768              }
4769              break;
4770            }
4771            case 10: {
4772              bitField0_ |= 0x00000001;
4773              simpleArgClassName_ = input.readBytes();
4774              break;
4775            }
4776            case 18: {
4777              bitField0_ |= 0x00000002;
4778              fullArgClassName_ = input.readBytes();
4779              break;
4780            }
4781            case 24: {
4782              bitField0_ |= 0x00000004;
4783              isSet_ = input.readBool();
4784              break;
4785            }
4786            case 32: {
4787              bitField0_ |= 0x00000008;
4788              isList_ = input.readBool();
4789              break;
4790            }
4791            case 42: {
4792              bitField0_ |= 0x00000010;
4793              documentation_ = input.readBytes();
4794              break;
4795            }
4796            case 50: {
4797              bitField0_ |= 0x00000020;
4798              shortName_ = input.readBytes();
4799              break;
4800            }
4801            case 58: {
4802              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
4803                instanceDefault_ = new com.google.protobuf.LazyStringArrayList();
4804                mutable_bitField0_ |= 0x00000040;
4805              }
4806              instanceDefault_.add(input.readBytes());
4807              break;
4808            }
4809          }
4810        }
4811      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
4812        throw e.setUnfinishedMessage(this);
4813      } catch (java.io.IOException e) {
4814        throw new com.google.protobuf.InvalidProtocolBufferException(
4815            e.getMessage()).setUnfinishedMessage(this);
4816      } finally {
4817        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
4818          instanceDefault_ = new com.google.protobuf.UnmodifiableLazyStringList(instanceDefault_);
4819        }
4820        this.unknownFields = unknownFields.build();
4821        makeExtensionsImmutable();
4822      }
4823    }
4824    public static final com.google.protobuf.Descriptors.Descriptor
4825        getDescriptor() {
4826      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
4827    }
4828
4829    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
4830        internalGetFieldAccessorTable() {
4831      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_fieldAccessorTable
4832          .ensureFieldAccessorsInitialized(
4833              org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder.class);
4834    }
4835
4836    public static com.google.protobuf.Parser<NamedParameterNode> PARSER =
4837        new com.google.protobuf.AbstractParser<NamedParameterNode>() {
4838      public NamedParameterNode parsePartialFrom(
4839          com.google.protobuf.CodedInputStream input,
4840          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
4841          throws com.google.protobuf.InvalidProtocolBufferException {
4842        return new NamedParameterNode(input, extensionRegistry);
4843      }
4844    };
4845
4846    @java.lang.Override
4847    public com.google.protobuf.Parser<NamedParameterNode> getParserForType() {
4848      return PARSER;
4849    }
4850
4851    private int bitField0_;
4852    // required string simple_arg_class_name = 1;
4853    public static final int SIMPLE_ARG_CLASS_NAME_FIELD_NUMBER = 1;
4854    private java.lang.Object simpleArgClassName_;
4855    /**
4856     * <code>required string simple_arg_class_name = 1;</code>
4857     *
4858     * <pre>
4859     *
4860     *The short name (Node.name) of the type of argument this node names.
4861     * </pre>
4862     */
4863    public boolean hasSimpleArgClassName() {
4864      return ((bitField0_ & 0x00000001) == 0x00000001);
4865    }
4866    /**
4867     * <code>required string simple_arg_class_name = 1;</code>
4868     *
4869     * <pre>
4870     *
4871     *The short name (Node.name) of the type of argument this node names.
4872     * </pre>
4873     */
4874    public java.lang.String getSimpleArgClassName() {
4875      java.lang.Object ref = simpleArgClassName_;
4876      if (ref instanceof java.lang.String) {
4877        return (java.lang.String) ref;
4878      } else {
4879        com.google.protobuf.ByteString bs = 
4880            (com.google.protobuf.ByteString) ref;
4881        java.lang.String s = bs.toStringUtf8();
4882        if (bs.isValidUtf8()) {
4883          simpleArgClassName_ = s;
4884        }
4885        return s;
4886      }
4887    }
4888    /**
4889     * <code>required string simple_arg_class_name = 1;</code>
4890     *
4891     * <pre>
4892     *
4893     *The short name (Node.name) of the type of argument this node names.
4894     * </pre>
4895     */
4896    public com.google.protobuf.ByteString
4897        getSimpleArgClassNameBytes() {
4898      java.lang.Object ref = simpleArgClassName_;
4899      if (ref instanceof java.lang.String) {
4900        com.google.protobuf.ByteString b = 
4901            com.google.protobuf.ByteString.copyFromUtf8(
4902                (java.lang.String) ref);
4903        simpleArgClassName_ = b;
4904        return b;
4905      } else {
4906        return (com.google.protobuf.ByteString) ref;
4907      }
4908    }
4909
4910    // required string full_arg_class_name = 2;
4911    public static final int FULL_ARG_CLASS_NAME_FIELD_NUMBER = 2;
4912    private java.lang.Object fullArgClassName_;
4913    /**
4914     * <code>required string full_arg_class_name = 2;</code>
4915     *
4916     * <pre>
4917     *
4918     *The full name (Node.full_name) of the type of argument that this node
4919     *names.
4920     * </pre>
4921     */
4922    public boolean hasFullArgClassName() {
4923      return ((bitField0_ & 0x00000002) == 0x00000002);
4924    }
4925    /**
4926     * <code>required string full_arg_class_name = 2;</code>
4927     *
4928     * <pre>
4929     *
4930     *The full name (Node.full_name) of the type of argument that this node
4931     *names.
4932     * </pre>
4933     */
4934    public java.lang.String getFullArgClassName() {
4935      java.lang.Object ref = fullArgClassName_;
4936      if (ref instanceof java.lang.String) {
4937        return (java.lang.String) ref;
4938      } else {
4939        com.google.protobuf.ByteString bs = 
4940            (com.google.protobuf.ByteString) ref;
4941        java.lang.String s = bs.toStringUtf8();
4942        if (bs.isValidUtf8()) {
4943          fullArgClassName_ = s;
4944        }
4945        return s;
4946      }
4947    }
4948    /**
4949     * <code>required string full_arg_class_name = 2;</code>
4950     *
4951     * <pre>
4952     *
4953     *The full name (Node.full_name) of the type of argument that this node
4954     *names.
4955     * </pre>
4956     */
4957    public com.google.protobuf.ByteString
4958        getFullArgClassNameBytes() {
4959      java.lang.Object ref = fullArgClassName_;
4960      if (ref instanceof java.lang.String) {
4961        com.google.protobuf.ByteString b = 
4962            com.google.protobuf.ByteString.copyFromUtf8(
4963                (java.lang.String) ref);
4964        fullArgClassName_ = b;
4965        return b;
4966      } else {
4967        return (com.google.protobuf.ByteString) ref;
4968      }
4969    }
4970
4971    // required bool is_set = 3;
4972    public static final int IS_SET_FIELD_NUMBER = 3;
4973    private boolean isSet_;
4974    /**
4975     * <code>required bool is_set = 3;</code>
4976     */
4977    public boolean hasIsSet() {
4978      return ((bitField0_ & 0x00000004) == 0x00000004);
4979    }
4980    /**
4981     * <code>required bool is_set = 3;</code>
4982     */
4983    public boolean getIsSet() {
4984      return isSet_;
4985    }
4986
4987    // required bool is_list = 4;
4988    public static final int IS_LIST_FIELD_NUMBER = 4;
4989    private boolean isList_;
4990    /**
4991     * <code>required bool is_list = 4;</code>
4992     */
4993    public boolean hasIsList() {
4994      return ((bitField0_ & 0x00000008) == 0x00000008);
4995    }
4996    /**
4997     * <code>required bool is_list = 4;</code>
4998     */
4999    public boolean getIsList() {
5000      return isList_;
5001    }
5002
5003    // optional string documentation = 5;
5004    public static final int DOCUMENTATION_FIELD_NUMBER = 5;
5005    private java.lang.Object documentation_;
5006    /**
5007     * <code>optional string documentation = 5;</code>
5008     *
5009     * <pre>
5010     *
5011     *An optional human readable documentation string describing the purpose
5012     *of this NamedParameter.
5013     * </pre>
5014     */
5015    public boolean hasDocumentation() {
5016      return ((bitField0_ & 0x00000010) == 0x00000010);
5017    }
5018    /**
5019     * <code>optional string documentation = 5;</code>
5020     *
5021     * <pre>
5022     *
5023     *An optional human readable documentation string describing the purpose
5024     *of this NamedParameter.
5025     * </pre>
5026     */
5027    public java.lang.String getDocumentation() {
5028      java.lang.Object ref = documentation_;
5029      if (ref instanceof java.lang.String) {
5030        return (java.lang.String) ref;
5031      } else {
5032        com.google.protobuf.ByteString bs = 
5033            (com.google.protobuf.ByteString) ref;
5034        java.lang.String s = bs.toStringUtf8();
5035        if (bs.isValidUtf8()) {
5036          documentation_ = s;
5037        }
5038        return s;
5039      }
5040    }
5041    /**
5042     * <code>optional string documentation = 5;</code>
5043     *
5044     * <pre>
5045     *
5046     *An optional human readable documentation string describing the purpose
5047     *of this NamedParameter.
5048     * </pre>
5049     */
5050    public com.google.protobuf.ByteString
5051        getDocumentationBytes() {
5052      java.lang.Object ref = documentation_;
5053      if (ref instanceof java.lang.String) {
5054        com.google.protobuf.ByteString b = 
5055            com.google.protobuf.ByteString.copyFromUtf8(
5056                (java.lang.String) ref);
5057        documentation_ = b;
5058        return b;
5059      } else {
5060        return (com.google.protobuf.ByteString) ref;
5061      }
5062    }
5063
5064    // optional string short_name = 6;
5065    public static final int SHORT_NAME_FIELD_NUMBER = 6;
5066    private java.lang.Object shortName_;
5067    /**
5068     * <code>optional string short_name = 6;</code>
5069     *
5070     * <pre>
5071     *
5072     *A shorter name for this parameter.  This is used for command line
5073     *processing. (So utilities that see --short_name=xxx will set this
5074     *NamedParameter to "xxx", for example).  
5075     * </pre>
5076     */
5077    public boolean hasShortName() {
5078      return ((bitField0_ & 0x00000020) == 0x00000020);
5079    }
5080    /**
5081     * <code>optional string short_name = 6;</code>
5082     *
5083     * <pre>
5084     *
5085     *A shorter name for this parameter.  This is used for command line
5086     *processing. (So utilities that see --short_name=xxx will set this
5087     *NamedParameter to "xxx", for example).  
5088     * </pre>
5089     */
5090    public java.lang.String getShortName() {
5091      java.lang.Object ref = shortName_;
5092      if (ref instanceof java.lang.String) {
5093        return (java.lang.String) ref;
5094      } else {
5095        com.google.protobuf.ByteString bs = 
5096            (com.google.protobuf.ByteString) ref;
5097        java.lang.String s = bs.toStringUtf8();
5098        if (bs.isValidUtf8()) {
5099          shortName_ = s;
5100        }
5101        return s;
5102      }
5103    }
5104    /**
5105     * <code>optional string short_name = 6;</code>
5106     *
5107     * <pre>
5108     *
5109     *A shorter name for this parameter.  This is used for command line
5110     *processing. (So utilities that see --short_name=xxx will set this
5111     *NamedParameter to "xxx", for example).  
5112     * </pre>
5113     */
5114    public com.google.protobuf.ByteString
5115        getShortNameBytes() {
5116      java.lang.Object ref = shortName_;
5117      if (ref instanceof java.lang.String) {
5118        com.google.protobuf.ByteString b = 
5119            com.google.protobuf.ByteString.copyFromUtf8(
5120                (java.lang.String) ref);
5121        shortName_ = b;
5122        return b;
5123      } else {
5124        return (com.google.protobuf.ByteString) ref;
5125      }
5126    }
5127
5128    // repeated string instance_default = 7;
5129    public static final int INSTANCE_DEFAULT_FIELD_NUMBER = 7;
5130    private com.google.protobuf.LazyStringList instanceDefault_;
5131    /**
5132     * <code>repeated string instance_default = 7;</code>
5133     *
5134     * <pre>
5135     * calling this "default_instance" breaks protoc.
5136     * </pre>
5137     */
5138    public java.util.List<java.lang.String>
5139        getInstanceDefaultList() {
5140      return instanceDefault_;
5141    }
5142    /**
5143     * <code>repeated string instance_default = 7;</code>
5144     *
5145     * <pre>
5146     * calling this "default_instance" breaks protoc.
5147     * </pre>
5148     */
5149    public int getInstanceDefaultCount() {
5150      return instanceDefault_.size();
5151    }
5152    /**
5153     * <code>repeated string instance_default = 7;</code>
5154     *
5155     * <pre>
5156     * calling this "default_instance" breaks protoc.
5157     * </pre>
5158     */
5159    public java.lang.String getInstanceDefault(int index) {
5160      return instanceDefault_.get(index);
5161    }
5162    /**
5163     * <code>repeated string instance_default = 7;</code>
5164     *
5165     * <pre>
5166     * calling this "default_instance" breaks protoc.
5167     * </pre>
5168     */
5169    public com.google.protobuf.ByteString
5170        getInstanceDefaultBytes(int index) {
5171      return instanceDefault_.getByteString(index);
5172    }
5173
5174    private void initFields() {
5175      simpleArgClassName_ = "";
5176      fullArgClassName_ = "";
5177      isSet_ = false;
5178      isList_ = false;
5179      documentation_ = "";
5180      shortName_ = "";
5181      instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
5182    }
5183    private byte memoizedIsInitialized = -1;
5184    public final boolean isInitialized() {
5185      byte isInitialized = memoizedIsInitialized;
5186      if (isInitialized != -1) return isInitialized == 1;
5187
5188      if (!hasSimpleArgClassName()) {
5189        memoizedIsInitialized = 0;
5190        return false;
5191      }
5192      if (!hasFullArgClassName()) {
5193        memoizedIsInitialized = 0;
5194        return false;
5195      }
5196      if (!hasIsSet()) {
5197        memoizedIsInitialized = 0;
5198        return false;
5199      }
5200      if (!hasIsList()) {
5201        memoizedIsInitialized = 0;
5202        return false;
5203      }
5204      memoizedIsInitialized = 1;
5205      return true;
5206    }
5207
5208    public void writeTo(com.google.protobuf.CodedOutputStream output)
5209                        throws java.io.IOException {
5210      getSerializedSize();
5211      if (((bitField0_ & 0x00000001) == 0x00000001)) {
5212        output.writeBytes(1, getSimpleArgClassNameBytes());
5213      }
5214      if (((bitField0_ & 0x00000002) == 0x00000002)) {
5215        output.writeBytes(2, getFullArgClassNameBytes());
5216      }
5217      if (((bitField0_ & 0x00000004) == 0x00000004)) {
5218        output.writeBool(3, isSet_);
5219      }
5220      if (((bitField0_ & 0x00000008) == 0x00000008)) {
5221        output.writeBool(4, isList_);
5222      }
5223      if (((bitField0_ & 0x00000010) == 0x00000010)) {
5224        output.writeBytes(5, getDocumentationBytes());
5225      }
5226      if (((bitField0_ & 0x00000020) == 0x00000020)) {
5227        output.writeBytes(6, getShortNameBytes());
5228      }
5229      for (int i = 0; i < instanceDefault_.size(); i++) {
5230        output.writeBytes(7, instanceDefault_.getByteString(i));
5231      }
5232      getUnknownFields().writeTo(output);
5233    }
5234
5235    private int memoizedSerializedSize = -1;
5236    public int getSerializedSize() {
5237      int size = memoizedSerializedSize;
5238      if (size != -1) return size;
5239
5240      size = 0;
5241      if (((bitField0_ & 0x00000001) == 0x00000001)) {
5242        size += com.google.protobuf.CodedOutputStream
5243          .computeBytesSize(1, getSimpleArgClassNameBytes());
5244      }
5245      if (((bitField0_ & 0x00000002) == 0x00000002)) {
5246        size += com.google.protobuf.CodedOutputStream
5247          .computeBytesSize(2, getFullArgClassNameBytes());
5248      }
5249      if (((bitField0_ & 0x00000004) == 0x00000004)) {
5250        size += com.google.protobuf.CodedOutputStream
5251          .computeBoolSize(3, isSet_);
5252      }
5253      if (((bitField0_ & 0x00000008) == 0x00000008)) {
5254        size += com.google.protobuf.CodedOutputStream
5255          .computeBoolSize(4, isList_);
5256      }
5257      if (((bitField0_ & 0x00000010) == 0x00000010)) {
5258        size += com.google.protobuf.CodedOutputStream
5259          .computeBytesSize(5, getDocumentationBytes());
5260      }
5261      if (((bitField0_ & 0x00000020) == 0x00000020)) {
5262        size += com.google.protobuf.CodedOutputStream
5263          .computeBytesSize(6, getShortNameBytes());
5264      }
5265      {
5266        int dataSize = 0;
5267        for (int i = 0; i < instanceDefault_.size(); i++) {
5268          dataSize += com.google.protobuf.CodedOutputStream
5269            .computeBytesSizeNoTag(instanceDefault_.getByteString(i));
5270        }
5271        size += dataSize;
5272        size += 1 * getInstanceDefaultList().size();
5273      }
5274      size += getUnknownFields().getSerializedSize();
5275      memoizedSerializedSize = size;
5276      return size;
5277    }
5278
5279    private static final long serialVersionUID = 0L;
5280    @java.lang.Override
5281    protected java.lang.Object writeReplace()
5282        throws java.io.ObjectStreamException {
5283      return super.writeReplace();
5284    }
5285
5286    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5287        com.google.protobuf.ByteString data)
5288        throws com.google.protobuf.InvalidProtocolBufferException {
5289      return PARSER.parseFrom(data);
5290    }
5291    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5292        com.google.protobuf.ByteString data,
5293        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5294        throws com.google.protobuf.InvalidProtocolBufferException {
5295      return PARSER.parseFrom(data, extensionRegistry);
5296    }
5297    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(byte[] data)
5298        throws com.google.protobuf.InvalidProtocolBufferException {
5299      return PARSER.parseFrom(data);
5300    }
5301    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5302        byte[] data,
5303        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5304        throws com.google.protobuf.InvalidProtocolBufferException {
5305      return PARSER.parseFrom(data, extensionRegistry);
5306    }
5307    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(java.io.InputStream input)
5308        throws java.io.IOException {
5309      return PARSER.parseFrom(input);
5310    }
5311    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5312        java.io.InputStream input,
5313        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5314        throws java.io.IOException {
5315      return PARSER.parseFrom(input, extensionRegistry);
5316    }
5317    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseDelimitedFrom(java.io.InputStream input)
5318        throws java.io.IOException {
5319      return PARSER.parseDelimitedFrom(input);
5320    }
5321    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseDelimitedFrom(
5322        java.io.InputStream input,
5323        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5324        throws java.io.IOException {
5325      return PARSER.parseDelimitedFrom(input, extensionRegistry);
5326    }
5327    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5328        com.google.protobuf.CodedInputStream input)
5329        throws java.io.IOException {
5330      return PARSER.parseFrom(input);
5331    }
5332    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5333        com.google.protobuf.CodedInputStream input,
5334        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5335        throws java.io.IOException {
5336      return PARSER.parseFrom(input, extensionRegistry);
5337    }
5338
5339    public static Builder newBuilder() { return Builder.create(); }
5340    public Builder newBuilderForType() { return newBuilder(); }
5341    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode prototype) {
5342      return newBuilder().mergeFrom(prototype);
5343    }
5344    public Builder toBuilder() { return newBuilder(this); }
5345
5346    @java.lang.Override
5347    protected Builder newBuilderForType(
5348        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
5349      Builder builder = new Builder(parent);
5350      return builder;
5351    }
5352    /**
5353     * Protobuf type {@code NamedParameterNode}
5354     */
5355    public static final class Builder extends
5356        com.google.protobuf.GeneratedMessage.Builder<Builder>
5357       implements org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder {
5358      public static final com.google.protobuf.Descriptors.Descriptor
5359          getDescriptor() {
5360        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
5361      }
5362
5363      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
5364          internalGetFieldAccessorTable() {
5365        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_fieldAccessorTable
5366            .ensureFieldAccessorsInitialized(
5367                org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder.class);
5368      }
5369
5370      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.newBuilder()
5371      private Builder() {
5372        maybeForceBuilderInitialization();
5373      }
5374
5375      private Builder(
5376          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
5377        super(parent);
5378        maybeForceBuilderInitialization();
5379      }
5380      private void maybeForceBuilderInitialization() {
5381        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
5382        }
5383      }
5384      private static Builder create() {
5385        return new Builder();
5386      }
5387
5388      public Builder clear() {
5389        super.clear();
5390        simpleArgClassName_ = "";
5391        bitField0_ = (bitField0_ & ~0x00000001);
5392        fullArgClassName_ = "";
5393        bitField0_ = (bitField0_ & ~0x00000002);
5394        isSet_ = false;
5395        bitField0_ = (bitField0_ & ~0x00000004);
5396        isList_ = false;
5397        bitField0_ = (bitField0_ & ~0x00000008);
5398        documentation_ = "";
5399        bitField0_ = (bitField0_ & ~0x00000010);
5400        shortName_ = "";
5401        bitField0_ = (bitField0_ & ~0x00000020);
5402        instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
5403        bitField0_ = (bitField0_ & ~0x00000040);
5404        return this;
5405      }
5406
5407      public Builder clone() {
5408        return create().mergeFrom(buildPartial());
5409      }
5410
5411      public com.google.protobuf.Descriptors.Descriptor
5412          getDescriptorForType() {
5413        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
5414      }
5415
5416      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode getDefaultInstanceForType() {
5417        return org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
5418      }
5419
5420      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode build() {
5421        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode result = buildPartial();
5422        if (!result.isInitialized()) {
5423          throw newUninitializedMessageException(result);
5424        }
5425        return result;
5426      }
5427
5428      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode buildPartial() {
5429        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode result = new org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode(this);
5430        int from_bitField0_ = bitField0_;
5431        int to_bitField0_ = 0;
5432        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
5433          to_bitField0_ |= 0x00000001;
5434        }
5435        result.simpleArgClassName_ = simpleArgClassName_;
5436        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
5437          to_bitField0_ |= 0x00000002;
5438        }
5439        result.fullArgClassName_ = fullArgClassName_;
5440        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
5441          to_bitField0_ |= 0x00000004;
5442        }
5443        result.isSet_ = isSet_;
5444        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
5445          to_bitField0_ |= 0x00000008;
5446        }
5447        result.isList_ = isList_;
5448        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
5449          to_bitField0_ |= 0x00000010;
5450        }
5451        result.documentation_ = documentation_;
5452        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
5453          to_bitField0_ |= 0x00000020;
5454        }
5455        result.shortName_ = shortName_;
5456        if (((bitField0_ & 0x00000040) == 0x00000040)) {
5457          instanceDefault_ = new com.google.protobuf.UnmodifiableLazyStringList(
5458              instanceDefault_);
5459          bitField0_ = (bitField0_ & ~0x00000040);
5460        }
5461        result.instanceDefault_ = instanceDefault_;
5462        result.bitField0_ = to_bitField0_;
5463        onBuilt();
5464        return result;
5465      }
5466
5467      public Builder mergeFrom(com.google.protobuf.Message other) {
5468        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode) {
5469          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode)other);
5470        } else {
5471          super.mergeFrom(other);
5472          return this;
5473        }
5474      }
5475
5476      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode other) {
5477        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance()) return this;
5478        if (other.hasSimpleArgClassName()) {
5479          bitField0_ |= 0x00000001;
5480          simpleArgClassName_ = other.simpleArgClassName_;
5481          onChanged();
5482        }
5483        if (other.hasFullArgClassName()) {
5484          bitField0_ |= 0x00000002;
5485          fullArgClassName_ = other.fullArgClassName_;
5486          onChanged();
5487        }
5488        if (other.hasIsSet()) {
5489          setIsSet(other.getIsSet());
5490        }
5491        if (other.hasIsList()) {
5492          setIsList(other.getIsList());
5493        }
5494        if (other.hasDocumentation()) {
5495          bitField0_ |= 0x00000010;
5496          documentation_ = other.documentation_;
5497          onChanged();
5498        }
5499        if (other.hasShortName()) {
5500          bitField0_ |= 0x00000020;
5501          shortName_ = other.shortName_;
5502          onChanged();
5503        }
5504        if (!other.instanceDefault_.isEmpty()) {
5505          if (instanceDefault_.isEmpty()) {
5506            instanceDefault_ = other.instanceDefault_;
5507            bitField0_ = (bitField0_ & ~0x00000040);
5508          } else {
5509            ensureInstanceDefaultIsMutable();
5510            instanceDefault_.addAll(other.instanceDefault_);
5511          }
5512          onChanged();
5513        }
5514        this.mergeUnknownFields(other.getUnknownFields());
5515        return this;
5516      }
5517
5518      public final boolean isInitialized() {
5519        if (!hasSimpleArgClassName()) {
5520          
5521          return false;
5522        }
5523        if (!hasFullArgClassName()) {
5524          
5525          return false;
5526        }
5527        if (!hasIsSet()) {
5528          
5529          return false;
5530        }
5531        if (!hasIsList()) {
5532          
5533          return false;
5534        }
5535        return true;
5536      }
5537
5538      public Builder mergeFrom(
5539          com.google.protobuf.CodedInputStream input,
5540          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5541          throws java.io.IOException {
5542        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parsedMessage = null;
5543        try {
5544          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
5545        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
5546          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode) e.getUnfinishedMessage();
5547          throw e;
5548        } finally {
5549          if (parsedMessage != null) {
5550            mergeFrom(parsedMessage);
5551          }
5552        }
5553        return this;
5554      }
5555      private int bitField0_;
5556
5557      // required string simple_arg_class_name = 1;
5558      private java.lang.Object simpleArgClassName_ = "";
5559      /**
5560       * <code>required string simple_arg_class_name = 1;</code>
5561       *
5562       * <pre>
5563       *
5564       *The short name (Node.name) of the type of argument this node names.
5565       * </pre>
5566       */
5567      public boolean hasSimpleArgClassName() {
5568        return ((bitField0_ & 0x00000001) == 0x00000001);
5569      }
5570      /**
5571       * <code>required string simple_arg_class_name = 1;</code>
5572       *
5573       * <pre>
5574       *
5575       *The short name (Node.name) of the type of argument this node names.
5576       * </pre>
5577       */
5578      public java.lang.String getSimpleArgClassName() {
5579        java.lang.Object ref = simpleArgClassName_;
5580        if (!(ref instanceof java.lang.String)) {
5581          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5582              .toStringUtf8();
5583          simpleArgClassName_ = s;
5584          return s;
5585        } else {
5586          return (java.lang.String) ref;
5587        }
5588      }
5589      /**
5590       * <code>required string simple_arg_class_name = 1;</code>
5591       *
5592       * <pre>
5593       *
5594       *The short name (Node.name) of the type of argument this node names.
5595       * </pre>
5596       */
5597      public com.google.protobuf.ByteString
5598          getSimpleArgClassNameBytes() {
5599        java.lang.Object ref = simpleArgClassName_;
5600        if (ref instanceof String) {
5601          com.google.protobuf.ByteString b = 
5602              com.google.protobuf.ByteString.copyFromUtf8(
5603                  (java.lang.String) ref);
5604          simpleArgClassName_ = b;
5605          return b;
5606        } else {
5607          return (com.google.protobuf.ByteString) ref;
5608        }
5609      }
5610      /**
5611       * <code>required string simple_arg_class_name = 1;</code>
5612       *
5613       * <pre>
5614       *
5615       *The short name (Node.name) of the type of argument this node names.
5616       * </pre>
5617       */
5618      public Builder setSimpleArgClassName(
5619          java.lang.String value) {
5620        if (value == null) {
5621    throw new NullPointerException();
5622  }
5623  bitField0_ |= 0x00000001;
5624        simpleArgClassName_ = value;
5625        onChanged();
5626        return this;
5627      }
5628      /**
5629       * <code>required string simple_arg_class_name = 1;</code>
5630       *
5631       * <pre>
5632       *
5633       *The short name (Node.name) of the type of argument this node names.
5634       * </pre>
5635       */
5636      public Builder clearSimpleArgClassName() {
5637        bitField0_ = (bitField0_ & ~0x00000001);
5638        simpleArgClassName_ = getDefaultInstance().getSimpleArgClassName();
5639        onChanged();
5640        return this;
5641      }
5642      /**
5643       * <code>required string simple_arg_class_name = 1;</code>
5644       *
5645       * <pre>
5646       *
5647       *The short name (Node.name) of the type of argument this node names.
5648       * </pre>
5649       */
5650      public Builder setSimpleArgClassNameBytes(
5651          com.google.protobuf.ByteString value) {
5652        if (value == null) {
5653    throw new NullPointerException();
5654  }
5655  bitField0_ |= 0x00000001;
5656        simpleArgClassName_ = value;
5657        onChanged();
5658        return this;
5659      }
5660
5661      // required string full_arg_class_name = 2;
5662      private java.lang.Object fullArgClassName_ = "";
5663      /**
5664       * <code>required string full_arg_class_name = 2;</code>
5665       *
5666       * <pre>
5667       *
5668       *The full name (Node.full_name) of the type of argument that this node
5669       *names.
5670       * </pre>
5671       */
5672      public boolean hasFullArgClassName() {
5673        return ((bitField0_ & 0x00000002) == 0x00000002);
5674      }
5675      /**
5676       * <code>required string full_arg_class_name = 2;</code>
5677       *
5678       * <pre>
5679       *
5680       *The full name (Node.full_name) of the type of argument that this node
5681       *names.
5682       * </pre>
5683       */
5684      public java.lang.String getFullArgClassName() {
5685        java.lang.Object ref = fullArgClassName_;
5686        if (!(ref instanceof java.lang.String)) {
5687          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5688              .toStringUtf8();
5689          fullArgClassName_ = s;
5690          return s;
5691        } else {
5692          return (java.lang.String) ref;
5693        }
5694      }
5695      /**
5696       * <code>required string full_arg_class_name = 2;</code>
5697       *
5698       * <pre>
5699       *
5700       *The full name (Node.full_name) of the type of argument that this node
5701       *names.
5702       * </pre>
5703       */
5704      public com.google.protobuf.ByteString
5705          getFullArgClassNameBytes() {
5706        java.lang.Object ref = fullArgClassName_;
5707        if (ref instanceof String) {
5708          com.google.protobuf.ByteString b = 
5709              com.google.protobuf.ByteString.copyFromUtf8(
5710                  (java.lang.String) ref);
5711          fullArgClassName_ = b;
5712          return b;
5713        } else {
5714          return (com.google.protobuf.ByteString) ref;
5715        }
5716      }
5717      /**
5718       * <code>required string full_arg_class_name = 2;</code>
5719       *
5720       * <pre>
5721       *
5722       *The full name (Node.full_name) of the type of argument that this node
5723       *names.
5724       * </pre>
5725       */
5726      public Builder setFullArgClassName(
5727          java.lang.String value) {
5728        if (value == null) {
5729    throw new NullPointerException();
5730  }
5731  bitField0_ |= 0x00000002;
5732        fullArgClassName_ = value;
5733        onChanged();
5734        return this;
5735      }
5736      /**
5737       * <code>required string full_arg_class_name = 2;</code>
5738       *
5739       * <pre>
5740       *
5741       *The full name (Node.full_name) of the type of argument that this node
5742       *names.
5743       * </pre>
5744       */
5745      public Builder clearFullArgClassName() {
5746        bitField0_ = (bitField0_ & ~0x00000002);
5747        fullArgClassName_ = getDefaultInstance().getFullArgClassName();
5748        onChanged();
5749        return this;
5750      }
5751      /**
5752       * <code>required string full_arg_class_name = 2;</code>
5753       *
5754       * <pre>
5755       *
5756       *The full name (Node.full_name) of the type of argument that this node
5757       *names.
5758       * </pre>
5759       */
5760      public Builder setFullArgClassNameBytes(
5761          com.google.protobuf.ByteString value) {
5762        if (value == null) {
5763    throw new NullPointerException();
5764  }
5765  bitField0_ |= 0x00000002;
5766        fullArgClassName_ = value;
5767        onChanged();
5768        return this;
5769      }
5770
5771      // required bool is_set = 3;
5772      private boolean isSet_ ;
5773      /**
5774       * <code>required bool is_set = 3;</code>
5775       */
5776      public boolean hasIsSet() {
5777        return ((bitField0_ & 0x00000004) == 0x00000004);
5778      }
5779      /**
5780       * <code>required bool is_set = 3;</code>
5781       */
5782      public boolean getIsSet() {
5783        return isSet_;
5784      }
5785      /**
5786       * <code>required bool is_set = 3;</code>
5787       */
5788      public Builder setIsSet(boolean value) {
5789        bitField0_ |= 0x00000004;
5790        isSet_ = value;
5791        onChanged();
5792        return this;
5793      }
5794      /**
5795       * <code>required bool is_set = 3;</code>
5796       */
5797      public Builder clearIsSet() {
5798        bitField0_ = (bitField0_ & ~0x00000004);
5799        isSet_ = false;
5800        onChanged();
5801        return this;
5802      }
5803
5804      // required bool is_list = 4;
5805      private boolean isList_ ;
5806      /**
5807       * <code>required bool is_list = 4;</code>
5808       */
5809      public boolean hasIsList() {
5810        return ((bitField0_ & 0x00000008) == 0x00000008);
5811      }
5812      /**
5813       * <code>required bool is_list = 4;</code>
5814       */
5815      public boolean getIsList() {
5816        return isList_;
5817      }
5818      /**
5819       * <code>required bool is_list = 4;</code>
5820       */
5821      public Builder setIsList(boolean value) {
5822        bitField0_ |= 0x00000008;
5823        isList_ = value;
5824        onChanged();
5825        return this;
5826      }
5827      /**
5828       * <code>required bool is_list = 4;</code>
5829       */
5830      public Builder clearIsList() {
5831        bitField0_ = (bitField0_ & ~0x00000008);
5832        isList_ = false;
5833        onChanged();
5834        return this;
5835      }
5836
5837      // optional string documentation = 5;
5838      private java.lang.Object documentation_ = "";
5839      /**
5840       * <code>optional string documentation = 5;</code>
5841       *
5842       * <pre>
5843       *
5844       *An optional human readable documentation string describing the purpose
5845       *of this NamedParameter.
5846       * </pre>
5847       */
5848      public boolean hasDocumentation() {
5849        return ((bitField0_ & 0x00000010) == 0x00000010);
5850      }
5851      /**
5852       * <code>optional string documentation = 5;</code>
5853       *
5854       * <pre>
5855       *
5856       *An optional human readable documentation string describing the purpose
5857       *of this NamedParameter.
5858       * </pre>
5859       */
5860      public java.lang.String getDocumentation() {
5861        java.lang.Object ref = documentation_;
5862        if (!(ref instanceof java.lang.String)) {
5863          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5864              .toStringUtf8();
5865          documentation_ = s;
5866          return s;
5867        } else {
5868          return (java.lang.String) ref;
5869        }
5870      }
5871      /**
5872       * <code>optional string documentation = 5;</code>
5873       *
5874       * <pre>
5875       *
5876       *An optional human readable documentation string describing the purpose
5877       *of this NamedParameter.
5878       * </pre>
5879       */
5880      public com.google.protobuf.ByteString
5881          getDocumentationBytes() {
5882        java.lang.Object ref = documentation_;
5883        if (ref instanceof String) {
5884          com.google.protobuf.ByteString b = 
5885              com.google.protobuf.ByteString.copyFromUtf8(
5886                  (java.lang.String) ref);
5887          documentation_ = b;
5888          return b;
5889        } else {
5890          return (com.google.protobuf.ByteString) ref;
5891        }
5892      }
5893      /**
5894       * <code>optional string documentation = 5;</code>
5895       *
5896       * <pre>
5897       *
5898       *An optional human readable documentation string describing the purpose
5899       *of this NamedParameter.
5900       * </pre>
5901       */
5902      public Builder setDocumentation(
5903          java.lang.String value) {
5904        if (value == null) {
5905    throw new NullPointerException();
5906  }
5907  bitField0_ |= 0x00000010;
5908        documentation_ = value;
5909        onChanged();
5910        return this;
5911      }
5912      /**
5913       * <code>optional string documentation = 5;</code>
5914       *
5915       * <pre>
5916       *
5917       *An optional human readable documentation string describing the purpose
5918       *of this NamedParameter.
5919       * </pre>
5920       */
5921      public Builder clearDocumentation() {
5922        bitField0_ = (bitField0_ & ~0x00000010);
5923        documentation_ = getDefaultInstance().getDocumentation();
5924        onChanged();
5925        return this;
5926      }
5927      /**
5928       * <code>optional string documentation = 5;</code>
5929       *
5930       * <pre>
5931       *
5932       *An optional human readable documentation string describing the purpose
5933       *of this NamedParameter.
5934       * </pre>
5935       */
5936      public Builder setDocumentationBytes(
5937          com.google.protobuf.ByteString value) {
5938        if (value == null) {
5939    throw new NullPointerException();
5940  }
5941  bitField0_ |= 0x00000010;
5942        documentation_ = value;
5943        onChanged();
5944        return this;
5945      }
5946
5947      // optional string short_name = 6;
5948      private java.lang.Object shortName_ = "";
5949      /**
5950       * <code>optional string short_name = 6;</code>
5951       *
5952       * <pre>
5953       *
5954       *A shorter name for this parameter.  This is used for command line
5955       *processing. (So utilities that see --short_name=xxx will set this
5956       *NamedParameter to "xxx", for example).  
5957       * </pre>
5958       */
5959      public boolean hasShortName() {
5960        return ((bitField0_ & 0x00000020) == 0x00000020);
5961      }
5962      /**
5963       * <code>optional string short_name = 6;</code>
5964       *
5965       * <pre>
5966       *
5967       *A shorter name for this parameter.  This is used for command line
5968       *processing. (So utilities that see --short_name=xxx will set this
5969       *NamedParameter to "xxx", for example).  
5970       * </pre>
5971       */
5972      public java.lang.String getShortName() {
5973        java.lang.Object ref = shortName_;
5974        if (!(ref instanceof java.lang.String)) {
5975          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5976              .toStringUtf8();
5977          shortName_ = s;
5978          return s;
5979        } else {
5980          return (java.lang.String) ref;
5981        }
5982      }
5983      /**
5984       * <code>optional string short_name = 6;</code>
5985       *
5986       * <pre>
5987       *
5988       *A shorter name for this parameter.  This is used for command line
5989       *processing. (So utilities that see --short_name=xxx will set this
5990       *NamedParameter to "xxx", for example).  
5991       * </pre>
5992       */
5993      public com.google.protobuf.ByteString
5994          getShortNameBytes() {
5995        java.lang.Object ref = shortName_;
5996        if (ref instanceof String) {
5997          com.google.protobuf.ByteString b = 
5998              com.google.protobuf.ByteString.copyFromUtf8(
5999                  (java.lang.String) ref);
6000          shortName_ = b;
6001          return b;
6002        } else {
6003          return (com.google.protobuf.ByteString) ref;
6004        }
6005      }
6006      /**
6007       * <code>optional string short_name = 6;</code>
6008       *
6009       * <pre>
6010       *
6011       *A shorter name for this parameter.  This is used for command line
6012       *processing. (So utilities that see --short_name=xxx will set this
6013       *NamedParameter to "xxx", for example).  
6014       * </pre>
6015       */
6016      public Builder setShortName(
6017          java.lang.String value) {
6018        if (value == null) {
6019    throw new NullPointerException();
6020  }
6021  bitField0_ |= 0x00000020;
6022        shortName_ = value;
6023        onChanged();
6024        return this;
6025      }
6026      /**
6027       * <code>optional string short_name = 6;</code>
6028       *
6029       * <pre>
6030       *
6031       *A shorter name for this parameter.  This is used for command line
6032       *processing. (So utilities that see --short_name=xxx will set this
6033       *NamedParameter to "xxx", for example).  
6034       * </pre>
6035       */
6036      public Builder clearShortName() {
6037        bitField0_ = (bitField0_ & ~0x00000020);
6038        shortName_ = getDefaultInstance().getShortName();
6039        onChanged();
6040        return this;
6041      }
6042      /**
6043       * <code>optional string short_name = 6;</code>
6044       *
6045       * <pre>
6046       *
6047       *A shorter name for this parameter.  This is used for command line
6048       *processing. (So utilities that see --short_name=xxx will set this
6049       *NamedParameter to "xxx", for example).  
6050       * </pre>
6051       */
6052      public Builder setShortNameBytes(
6053          com.google.protobuf.ByteString value) {
6054        if (value == null) {
6055    throw new NullPointerException();
6056  }
6057  bitField0_ |= 0x00000020;
6058        shortName_ = value;
6059        onChanged();
6060        return this;
6061      }
6062
6063      // repeated string instance_default = 7;
6064      private com.google.protobuf.LazyStringList instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
6065      private void ensureInstanceDefaultIsMutable() {
6066        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
6067          instanceDefault_ = new com.google.protobuf.LazyStringArrayList(instanceDefault_);
6068          bitField0_ |= 0x00000040;
6069         }
6070      }
6071      /**
6072       * <code>repeated string instance_default = 7;</code>
6073       *
6074       * <pre>
6075       * calling this "default_instance" breaks protoc.
6076       * </pre>
6077       */
6078      public java.util.List<java.lang.String>
6079          getInstanceDefaultList() {
6080        return java.util.Collections.unmodifiableList(instanceDefault_);
6081      }
6082      /**
6083       * <code>repeated string instance_default = 7;</code>
6084       *
6085       * <pre>
6086       * calling this "default_instance" breaks protoc.
6087       * </pre>
6088       */
6089      public int getInstanceDefaultCount() {
6090        return instanceDefault_.size();
6091      }
6092      /**
6093       * <code>repeated string instance_default = 7;</code>
6094       *
6095       * <pre>
6096       * calling this "default_instance" breaks protoc.
6097       * </pre>
6098       */
6099      public java.lang.String getInstanceDefault(int index) {
6100        return instanceDefault_.get(index);
6101      }
6102      /**
6103       * <code>repeated string instance_default = 7;</code>
6104       *
6105       * <pre>
6106       * calling this "default_instance" breaks protoc.
6107       * </pre>
6108       */
6109      public com.google.protobuf.ByteString
6110          getInstanceDefaultBytes(int index) {
6111        return instanceDefault_.getByteString(index);
6112      }
6113      /**
6114       * <code>repeated string instance_default = 7;</code>
6115       *
6116       * <pre>
6117       * calling this "default_instance" breaks protoc.
6118       * </pre>
6119       */
6120      public Builder setInstanceDefault(
6121          int index, java.lang.String value) {
6122        if (value == null) {
6123    throw new NullPointerException();
6124  }
6125  ensureInstanceDefaultIsMutable();
6126        instanceDefault_.set(index, value);
6127        onChanged();
6128        return this;
6129      }
6130      /**
6131       * <code>repeated string instance_default = 7;</code>
6132       *
6133       * <pre>
6134       * calling this "default_instance" breaks protoc.
6135       * </pre>
6136       */
6137      public Builder addInstanceDefault(
6138          java.lang.String value) {
6139        if (value == null) {
6140    throw new NullPointerException();
6141  }
6142  ensureInstanceDefaultIsMutable();
6143        instanceDefault_.add(value);
6144        onChanged();
6145        return this;
6146      }
6147      /**
6148       * <code>repeated string instance_default = 7;</code>
6149       *
6150       * <pre>
6151       * calling this "default_instance" breaks protoc.
6152       * </pre>
6153       */
6154      public Builder addAllInstanceDefault(
6155          java.lang.Iterable<java.lang.String> values) {
6156        ensureInstanceDefaultIsMutable();
6157        super.addAll(values, instanceDefault_);
6158        onChanged();
6159        return this;
6160      }
6161      /**
6162       * <code>repeated string instance_default = 7;</code>
6163       *
6164       * <pre>
6165       * calling this "default_instance" breaks protoc.
6166       * </pre>
6167       */
6168      public Builder clearInstanceDefault() {
6169        instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
6170        bitField0_ = (bitField0_ & ~0x00000040);
6171        onChanged();
6172        return this;
6173      }
6174      /**
6175       * <code>repeated string instance_default = 7;</code>
6176       *
6177       * <pre>
6178       * calling this "default_instance" breaks protoc.
6179       * </pre>
6180       */
6181      public Builder addInstanceDefaultBytes(
6182          com.google.protobuf.ByteString value) {
6183        if (value == null) {
6184    throw new NullPointerException();
6185  }
6186  ensureInstanceDefaultIsMutable();
6187        instanceDefault_.add(value);
6188        onChanged();
6189        return this;
6190      }
6191
6192      // @@protoc_insertion_point(builder_scope:NamedParameterNode)
6193    }
6194
6195    static {
6196      defaultInstance = new NamedParameterNode(true);
6197      defaultInstance.initFields();
6198    }
6199
6200    // @@protoc_insertion_point(class_scope:NamedParameterNode)
6201  }
6202
6203  public interface PackageNodeOrBuilder
6204      extends com.google.protobuf.MessageOrBuilder {
6205  }
6206  /**
6207   * Protobuf type {@code PackageNode}
6208   *
6209   * <pre>
6210   *
6211   *Intentionally left blank.  Packages don't have any interesting
6212   *attributes except their names and children.
6213   * </pre>
6214   */
6215  public static final class PackageNode extends
6216      com.google.protobuf.GeneratedMessage
6217      implements PackageNodeOrBuilder {
6218    // Use PackageNode.newBuilder() to construct.
6219    private PackageNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
6220      super(builder);
6221      this.unknownFields = builder.getUnknownFields();
6222    }
6223    private PackageNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
6224
6225    private static final PackageNode defaultInstance;
6226    public static PackageNode getDefaultInstance() {
6227      return defaultInstance;
6228    }
6229
6230    public PackageNode getDefaultInstanceForType() {
6231      return defaultInstance;
6232    }
6233
6234    private final com.google.protobuf.UnknownFieldSet unknownFields;
6235    @java.lang.Override
6236    public final com.google.protobuf.UnknownFieldSet
6237        getUnknownFields() {
6238      return this.unknownFields;
6239    }
6240    private PackageNode(
6241        com.google.protobuf.CodedInputStream input,
6242        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6243        throws com.google.protobuf.InvalidProtocolBufferException {
6244      initFields();
6245      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
6246          com.google.protobuf.UnknownFieldSet.newBuilder();
6247      try {
6248        boolean done = false;
6249        while (!done) {
6250          int tag = input.readTag();
6251          switch (tag) {
6252            case 0:
6253              done = true;
6254              break;
6255            default: {
6256              if (!parseUnknownField(input, unknownFields,
6257                                     extensionRegistry, tag)) {
6258                done = true;
6259              }
6260              break;
6261            }
6262          }
6263        }
6264      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
6265        throw e.setUnfinishedMessage(this);
6266      } catch (java.io.IOException e) {
6267        throw new com.google.protobuf.InvalidProtocolBufferException(
6268            e.getMessage()).setUnfinishedMessage(this);
6269      } finally {
6270        this.unknownFields = unknownFields.build();
6271        makeExtensionsImmutable();
6272      }
6273    }
6274    public static final com.google.protobuf.Descriptors.Descriptor
6275        getDescriptor() {
6276      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6277    }
6278
6279    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6280        internalGetFieldAccessorTable() {
6281      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_fieldAccessorTable
6282          .ensureFieldAccessorsInitialized(
6283              org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder.class);
6284    }
6285
6286    public static com.google.protobuf.Parser<PackageNode> PARSER =
6287        new com.google.protobuf.AbstractParser<PackageNode>() {
6288      public PackageNode parsePartialFrom(
6289          com.google.protobuf.CodedInputStream input,
6290          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6291          throws com.google.protobuf.InvalidProtocolBufferException {
6292        return new PackageNode(input, extensionRegistry);
6293      }
6294    };
6295
6296    @java.lang.Override
6297    public com.google.protobuf.Parser<PackageNode> getParserForType() {
6298      return PARSER;
6299    }
6300
6301    private void initFields() {
6302    }
6303    private byte memoizedIsInitialized = -1;
6304    public final boolean isInitialized() {
6305      byte isInitialized = memoizedIsInitialized;
6306      if (isInitialized != -1) return isInitialized == 1;
6307
6308      memoizedIsInitialized = 1;
6309      return true;
6310    }
6311
6312    public void writeTo(com.google.protobuf.CodedOutputStream output)
6313                        throws java.io.IOException {
6314      getSerializedSize();
6315      getUnknownFields().writeTo(output);
6316    }
6317
6318    private int memoizedSerializedSize = -1;
6319    public int getSerializedSize() {
6320      int size = memoizedSerializedSize;
6321      if (size != -1) return size;
6322
6323      size = 0;
6324      size += getUnknownFields().getSerializedSize();
6325      memoizedSerializedSize = size;
6326      return size;
6327    }
6328
6329    private static final long serialVersionUID = 0L;
6330    @java.lang.Override
6331    protected java.lang.Object writeReplace()
6332        throws java.io.ObjectStreamException {
6333      return super.writeReplace();
6334    }
6335
6336    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6337        com.google.protobuf.ByteString data)
6338        throws com.google.protobuf.InvalidProtocolBufferException {
6339      return PARSER.parseFrom(data);
6340    }
6341    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6342        com.google.protobuf.ByteString data,
6343        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6344        throws com.google.protobuf.InvalidProtocolBufferException {
6345      return PARSER.parseFrom(data, extensionRegistry);
6346    }
6347    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(byte[] data)
6348        throws com.google.protobuf.InvalidProtocolBufferException {
6349      return PARSER.parseFrom(data);
6350    }
6351    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6352        byte[] data,
6353        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6354        throws com.google.protobuf.InvalidProtocolBufferException {
6355      return PARSER.parseFrom(data, extensionRegistry);
6356    }
6357    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(java.io.InputStream input)
6358        throws java.io.IOException {
6359      return PARSER.parseFrom(input);
6360    }
6361    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6362        java.io.InputStream input,
6363        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6364        throws java.io.IOException {
6365      return PARSER.parseFrom(input, extensionRegistry);
6366    }
6367    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseDelimitedFrom(java.io.InputStream input)
6368        throws java.io.IOException {
6369      return PARSER.parseDelimitedFrom(input);
6370    }
6371    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseDelimitedFrom(
6372        java.io.InputStream input,
6373        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6374        throws java.io.IOException {
6375      return PARSER.parseDelimitedFrom(input, extensionRegistry);
6376    }
6377    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6378        com.google.protobuf.CodedInputStream input)
6379        throws java.io.IOException {
6380      return PARSER.parseFrom(input);
6381    }
6382    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6383        com.google.protobuf.CodedInputStream input,
6384        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6385        throws java.io.IOException {
6386      return PARSER.parseFrom(input, extensionRegistry);
6387    }
6388
6389    public static Builder newBuilder() { return Builder.create(); }
6390    public Builder newBuilderForType() { return newBuilder(); }
6391    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode prototype) {
6392      return newBuilder().mergeFrom(prototype);
6393    }
6394    public Builder toBuilder() { return newBuilder(this); }
6395
6396    @java.lang.Override
6397    protected Builder newBuilderForType(
6398        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6399      Builder builder = new Builder(parent);
6400      return builder;
6401    }
6402    /**
6403     * Protobuf type {@code PackageNode}
6404     *
6405     * <pre>
6406     *
6407     *Intentionally left blank.  Packages don't have any interesting
6408     *attributes except their names and children.
6409     * </pre>
6410     */
6411    public static final class Builder extends
6412        com.google.protobuf.GeneratedMessage.Builder<Builder>
6413       implements org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder {
6414      public static final com.google.protobuf.Descriptors.Descriptor
6415          getDescriptor() {
6416        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6417      }
6418
6419      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6420          internalGetFieldAccessorTable() {
6421        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_fieldAccessorTable
6422            .ensureFieldAccessorsInitialized(
6423                org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder.class);
6424      }
6425
6426      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.newBuilder()
6427      private Builder() {
6428        maybeForceBuilderInitialization();
6429      }
6430
6431      private Builder(
6432          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6433        super(parent);
6434        maybeForceBuilderInitialization();
6435      }
6436      private void maybeForceBuilderInitialization() {
6437        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
6438        }
6439      }
6440      private static Builder create() {
6441        return new Builder();
6442      }
6443
6444      public Builder clear() {
6445        super.clear();
6446        return this;
6447      }
6448
6449      public Builder clone() {
6450        return create().mergeFrom(buildPartial());
6451      }
6452
6453      public com.google.protobuf.Descriptors.Descriptor
6454          getDescriptorForType() {
6455        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6456      }
6457
6458      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode getDefaultInstanceForType() {
6459        return org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
6460      }
6461
6462      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode build() {
6463        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode result = buildPartial();
6464        if (!result.isInitialized()) {
6465          throw newUninitializedMessageException(result);
6466        }
6467        return result;
6468      }
6469
6470      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode buildPartial() {
6471        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode result = new org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode(this);
6472        onBuilt();
6473        return result;
6474      }
6475
6476      public Builder mergeFrom(com.google.protobuf.Message other) {
6477        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode) {
6478          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode)other);
6479        } else {
6480          super.mergeFrom(other);
6481          return this;
6482        }
6483      }
6484
6485      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode other) {
6486        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance()) return this;
6487        this.mergeUnknownFields(other.getUnknownFields());
6488        return this;
6489      }
6490
6491      public final boolean isInitialized() {
6492        return true;
6493      }
6494
6495      public Builder mergeFrom(
6496          com.google.protobuf.CodedInputStream input,
6497          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6498          throws java.io.IOException {
6499        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parsedMessage = null;
6500        try {
6501          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
6502        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
6503          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode) e.getUnfinishedMessage();
6504          throw e;
6505        } finally {
6506          if (parsedMessage != null) {
6507            mergeFrom(parsedMessage);
6508          }
6509        }
6510        return this;
6511      }
6512
6513      // @@protoc_insertion_point(builder_scope:PackageNode)
6514    }
6515
6516    static {
6517      defaultInstance = new PackageNode(true);
6518      defaultInstance.initFields();
6519    }
6520
6521    // @@protoc_insertion_point(class_scope:PackageNode)
6522  }
6523
6524  public interface ConstructorDefOrBuilder
6525      extends com.google.protobuf.MessageOrBuilder {
6526
6527    // required string full_class_name = 1;
6528    /**
6529     * <code>required string full_class_name = 1;</code>
6530     *
6531     * <pre>
6532     *
6533     *The full name of the class this constructor returns.
6534     * </pre>
6535     */
6536    boolean hasFullClassName();
6537    /**
6538     * <code>required string full_class_name = 1;</code>
6539     *
6540     * <pre>
6541     *
6542     *The full name of the class this constructor returns.
6543     * </pre>
6544     */
6545    java.lang.String getFullClassName();
6546    /**
6547     * <code>required string full_class_name = 1;</code>
6548     *
6549     * <pre>
6550     *
6551     *The full name of the class this constructor returns.
6552     * </pre>
6553     */
6554    com.google.protobuf.ByteString
6555        getFullClassNameBytes();
6556
6557    // repeated .ConstructorArg args = 2;
6558    /**
6559     * <code>repeated .ConstructorArg args = 2;</code>
6560     *
6561     * <pre>
6562     *
6563     *A (potentially empty) list of arguments required by this constructor.
6564     * </pre>
6565     */
6566    java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> 
6567        getArgsList();
6568    /**
6569     * <code>repeated .ConstructorArg args = 2;</code>
6570     *
6571     * <pre>
6572     *
6573     *A (potentially empty) list of arguments required by this constructor.
6574     * </pre>
6575     */
6576    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index);
6577    /**
6578     * <code>repeated .ConstructorArg args = 2;</code>
6579     *
6580     * <pre>
6581     *
6582     *A (potentially empty) list of arguments required by this constructor.
6583     * </pre>
6584     */
6585    int getArgsCount();
6586    /**
6587     * <code>repeated .ConstructorArg args = 2;</code>
6588     *
6589     * <pre>
6590     *
6591     *A (potentially empty) list of arguments required by this constructor.
6592     * </pre>
6593     */
6594    java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
6595        getArgsOrBuilderList();
6596    /**
6597     * <code>repeated .ConstructorArg args = 2;</code>
6598     *
6599     * <pre>
6600     *
6601     *A (potentially empty) list of arguments required by this constructor.
6602     * </pre>
6603     */
6604    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
6605        int index);
6606  }
6607  /**
6608   * Protobuf type {@code ConstructorDef}
6609   */
6610  public static final class ConstructorDef extends
6611      com.google.protobuf.GeneratedMessage
6612      implements ConstructorDefOrBuilder {
6613    // Use ConstructorDef.newBuilder() to construct.
6614    private ConstructorDef(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
6615      super(builder);
6616      this.unknownFields = builder.getUnknownFields();
6617    }
6618    private ConstructorDef(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
6619
6620    private static final ConstructorDef defaultInstance;
6621    public static ConstructorDef getDefaultInstance() {
6622      return defaultInstance;
6623    }
6624
6625    public ConstructorDef getDefaultInstanceForType() {
6626      return defaultInstance;
6627    }
6628
6629    private final com.google.protobuf.UnknownFieldSet unknownFields;
6630    @java.lang.Override
6631    public final com.google.protobuf.UnknownFieldSet
6632        getUnknownFields() {
6633      return this.unknownFields;
6634    }
6635    private ConstructorDef(
6636        com.google.protobuf.CodedInputStream input,
6637        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6638        throws com.google.protobuf.InvalidProtocolBufferException {
6639      initFields();
6640      int mutable_bitField0_ = 0;
6641      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
6642          com.google.protobuf.UnknownFieldSet.newBuilder();
6643      try {
6644        boolean done = false;
6645        while (!done) {
6646          int tag = input.readTag();
6647          switch (tag) {
6648            case 0:
6649              done = true;
6650              break;
6651            default: {
6652              if (!parseUnknownField(input, unknownFields,
6653                                     extensionRegistry, tag)) {
6654                done = true;
6655              }
6656              break;
6657            }
6658            case 10: {
6659              bitField0_ |= 0x00000001;
6660              fullClassName_ = input.readBytes();
6661              break;
6662            }
6663            case 18: {
6664              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
6665                args_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg>();
6666                mutable_bitField0_ |= 0x00000002;
6667              }
6668              args_.add(input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.PARSER, extensionRegistry));
6669              break;
6670            }
6671          }
6672        }
6673      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
6674        throw e.setUnfinishedMessage(this);
6675      } catch (java.io.IOException e) {
6676        throw new com.google.protobuf.InvalidProtocolBufferException(
6677            e.getMessage()).setUnfinishedMessage(this);
6678      } finally {
6679        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
6680          args_ = java.util.Collections.unmodifiableList(args_);
6681        }
6682        this.unknownFields = unknownFields.build();
6683        makeExtensionsImmutable();
6684      }
6685    }
6686    public static final com.google.protobuf.Descriptors.Descriptor
6687        getDescriptor() {
6688      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
6689    }
6690
6691    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6692        internalGetFieldAccessorTable() {
6693      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_fieldAccessorTable
6694          .ensureFieldAccessorsInitialized(
6695              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder.class);
6696    }
6697
6698    public static com.google.protobuf.Parser<ConstructorDef> PARSER =
6699        new com.google.protobuf.AbstractParser<ConstructorDef>() {
6700      public ConstructorDef parsePartialFrom(
6701          com.google.protobuf.CodedInputStream input,
6702          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6703          throws com.google.protobuf.InvalidProtocolBufferException {
6704        return new ConstructorDef(input, extensionRegistry);
6705      }
6706    };
6707
6708    @java.lang.Override
6709    public com.google.protobuf.Parser<ConstructorDef> getParserForType() {
6710      return PARSER;
6711    }
6712
6713    private int bitField0_;
6714    // required string full_class_name = 1;
6715    public static final int FULL_CLASS_NAME_FIELD_NUMBER = 1;
6716    private java.lang.Object fullClassName_;
6717    /**
6718     * <code>required string full_class_name = 1;</code>
6719     *
6720     * <pre>
6721     *
6722     *The full name of the class this constructor returns.
6723     * </pre>
6724     */
6725    public boolean hasFullClassName() {
6726      return ((bitField0_ & 0x00000001) == 0x00000001);
6727    }
6728    /**
6729     * <code>required string full_class_name = 1;</code>
6730     *
6731     * <pre>
6732     *
6733     *The full name of the class this constructor returns.
6734     * </pre>
6735     */
6736    public java.lang.String getFullClassName() {
6737      java.lang.Object ref = fullClassName_;
6738      if (ref instanceof java.lang.String) {
6739        return (java.lang.String) ref;
6740      } else {
6741        com.google.protobuf.ByteString bs = 
6742            (com.google.protobuf.ByteString) ref;
6743        java.lang.String s = bs.toStringUtf8();
6744        if (bs.isValidUtf8()) {
6745          fullClassName_ = s;
6746        }
6747        return s;
6748      }
6749    }
6750    /**
6751     * <code>required string full_class_name = 1;</code>
6752     *
6753     * <pre>
6754     *
6755     *The full name of the class this constructor returns.
6756     * </pre>
6757     */
6758    public com.google.protobuf.ByteString
6759        getFullClassNameBytes() {
6760      java.lang.Object ref = fullClassName_;
6761      if (ref instanceof java.lang.String) {
6762        com.google.protobuf.ByteString b = 
6763            com.google.protobuf.ByteString.copyFromUtf8(
6764                (java.lang.String) ref);
6765        fullClassName_ = b;
6766        return b;
6767      } else {
6768        return (com.google.protobuf.ByteString) ref;
6769      }
6770    }
6771
6772    // repeated .ConstructorArg args = 2;
6773    public static final int ARGS_FIELD_NUMBER = 2;
6774    private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> args_;
6775    /**
6776     * <code>repeated .ConstructorArg args = 2;</code>
6777     *
6778     * <pre>
6779     *
6780     *A (potentially empty) list of arguments required by this constructor.
6781     * </pre>
6782     */
6783    public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> getArgsList() {
6784      return args_;
6785    }
6786    /**
6787     * <code>repeated .ConstructorArg args = 2;</code>
6788     *
6789     * <pre>
6790     *
6791     *A (potentially empty) list of arguments required by this constructor.
6792     * </pre>
6793     */
6794    public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
6795        getArgsOrBuilderList() {
6796      return args_;
6797    }
6798    /**
6799     * <code>repeated .ConstructorArg args = 2;</code>
6800     *
6801     * <pre>
6802     *
6803     *A (potentially empty) list of arguments required by this constructor.
6804     * </pre>
6805     */
6806    public int getArgsCount() {
6807      return args_.size();
6808    }
6809    /**
6810     * <code>repeated .ConstructorArg args = 2;</code>
6811     *
6812     * <pre>
6813     *
6814     *A (potentially empty) list of arguments required by this constructor.
6815     * </pre>
6816     */
6817    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index) {
6818      return args_.get(index);
6819    }
6820    /**
6821     * <code>repeated .ConstructorArg args = 2;</code>
6822     *
6823     * <pre>
6824     *
6825     *A (potentially empty) list of arguments required by this constructor.
6826     * </pre>
6827     */
6828    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
6829        int index) {
6830      return args_.get(index);
6831    }
6832
6833    private void initFields() {
6834      fullClassName_ = "";
6835      args_ = java.util.Collections.emptyList();
6836    }
6837    private byte memoizedIsInitialized = -1;
6838    public final boolean isInitialized() {
6839      byte isInitialized = memoizedIsInitialized;
6840      if (isInitialized != -1) return isInitialized == 1;
6841
6842      if (!hasFullClassName()) {
6843        memoizedIsInitialized = 0;
6844        return false;
6845      }
6846      for (int i = 0; i < getArgsCount(); i++) {
6847        if (!getArgs(i).isInitialized()) {
6848          memoizedIsInitialized = 0;
6849          return false;
6850        }
6851      }
6852      memoizedIsInitialized = 1;
6853      return true;
6854    }
6855
6856    public void writeTo(com.google.protobuf.CodedOutputStream output)
6857                        throws java.io.IOException {
6858      getSerializedSize();
6859      if (((bitField0_ & 0x00000001) == 0x00000001)) {
6860        output.writeBytes(1, getFullClassNameBytes());
6861      }
6862      for (int i = 0; i < args_.size(); i++) {
6863        output.writeMessage(2, args_.get(i));
6864      }
6865      getUnknownFields().writeTo(output);
6866    }
6867
6868    private int memoizedSerializedSize = -1;
6869    public int getSerializedSize() {
6870      int size = memoizedSerializedSize;
6871      if (size != -1) return size;
6872
6873      size = 0;
6874      if (((bitField0_ & 0x00000001) == 0x00000001)) {
6875        size += com.google.protobuf.CodedOutputStream
6876          .computeBytesSize(1, getFullClassNameBytes());
6877      }
6878      for (int i = 0; i < args_.size(); i++) {
6879        size += com.google.protobuf.CodedOutputStream
6880          .computeMessageSize(2, args_.get(i));
6881      }
6882      size += getUnknownFields().getSerializedSize();
6883      memoizedSerializedSize = size;
6884      return size;
6885    }
6886
6887    private static final long serialVersionUID = 0L;
6888    @java.lang.Override
6889    protected java.lang.Object writeReplace()
6890        throws java.io.ObjectStreamException {
6891      return super.writeReplace();
6892    }
6893
6894    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6895        com.google.protobuf.ByteString data)
6896        throws com.google.protobuf.InvalidProtocolBufferException {
6897      return PARSER.parseFrom(data);
6898    }
6899    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6900        com.google.protobuf.ByteString data,
6901        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6902        throws com.google.protobuf.InvalidProtocolBufferException {
6903      return PARSER.parseFrom(data, extensionRegistry);
6904    }
6905    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(byte[] data)
6906        throws com.google.protobuf.InvalidProtocolBufferException {
6907      return PARSER.parseFrom(data);
6908    }
6909    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6910        byte[] data,
6911        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6912        throws com.google.protobuf.InvalidProtocolBufferException {
6913      return PARSER.parseFrom(data, extensionRegistry);
6914    }
6915    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(java.io.InputStream input)
6916        throws java.io.IOException {
6917      return PARSER.parseFrom(input);
6918    }
6919    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6920        java.io.InputStream input,
6921        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6922        throws java.io.IOException {
6923      return PARSER.parseFrom(input, extensionRegistry);
6924    }
6925    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseDelimitedFrom(java.io.InputStream input)
6926        throws java.io.IOException {
6927      return PARSER.parseDelimitedFrom(input);
6928    }
6929    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseDelimitedFrom(
6930        java.io.InputStream input,
6931        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6932        throws java.io.IOException {
6933      return PARSER.parseDelimitedFrom(input, extensionRegistry);
6934    }
6935    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6936        com.google.protobuf.CodedInputStream input)
6937        throws java.io.IOException {
6938      return PARSER.parseFrom(input);
6939    }
6940    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
6941        com.google.protobuf.CodedInputStream input,
6942        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6943        throws java.io.IOException {
6944      return PARSER.parseFrom(input, extensionRegistry);
6945    }
6946
6947    public static Builder newBuilder() { return Builder.create(); }
6948    public Builder newBuilderForType() { return newBuilder(); }
6949    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef prototype) {
6950      return newBuilder().mergeFrom(prototype);
6951    }
6952    public Builder toBuilder() { return newBuilder(this); }
6953
6954    @java.lang.Override
6955    protected Builder newBuilderForType(
6956        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6957      Builder builder = new Builder(parent);
6958      return builder;
6959    }
6960    /**
6961     * Protobuf type {@code ConstructorDef}
6962     */
6963    public static final class Builder extends
6964        com.google.protobuf.GeneratedMessage.Builder<Builder>
6965       implements org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder {
6966      public static final com.google.protobuf.Descriptors.Descriptor
6967          getDescriptor() {
6968        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
6969      }
6970
6971      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6972          internalGetFieldAccessorTable() {
6973        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_fieldAccessorTable
6974            .ensureFieldAccessorsInitialized(
6975                org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder.class);
6976      }
6977
6978      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.newBuilder()
6979      private Builder() {
6980        maybeForceBuilderInitialization();
6981      }
6982
6983      private Builder(
6984          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6985        super(parent);
6986        maybeForceBuilderInitialization();
6987      }
6988      private void maybeForceBuilderInitialization() {
6989        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
6990          getArgsFieldBuilder();
6991        }
6992      }
6993      private static Builder create() {
6994        return new Builder();
6995      }
6996
6997      public Builder clear() {
6998        super.clear();
6999        fullClassName_ = "";
7000        bitField0_ = (bitField0_ & ~0x00000001);
7001        if (argsBuilder_ == null) {
7002          args_ = java.util.Collections.emptyList();
7003          bitField0_ = (bitField0_ & ~0x00000002);
7004        } else {
7005          argsBuilder_.clear();
7006        }
7007        return this;
7008      }
7009
7010      public Builder clone() {
7011        return create().mergeFrom(buildPartial());
7012      }
7013
7014      public com.google.protobuf.Descriptors.Descriptor
7015          getDescriptorForType() {
7016        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
7017      }
7018
7019      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getDefaultInstanceForType() {
7020        return org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance();
7021      }
7022
7023      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef build() {
7024        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef result = buildPartial();
7025        if (!result.isInitialized()) {
7026          throw newUninitializedMessageException(result);
7027        }
7028        return result;
7029      }
7030
7031      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef buildPartial() {
7032        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef result = new org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef(this);
7033        int from_bitField0_ = bitField0_;
7034        int to_bitField0_ = 0;
7035        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
7036          to_bitField0_ |= 0x00000001;
7037        }
7038        result.fullClassName_ = fullClassName_;
7039        if (argsBuilder_ == null) {
7040          if (((bitField0_ & 0x00000002) == 0x00000002)) {
7041            args_ = java.util.Collections.unmodifiableList(args_);
7042            bitField0_ = (bitField0_ & ~0x00000002);
7043          }
7044          result.args_ = args_;
7045        } else {
7046          result.args_ = argsBuilder_.build();
7047        }
7048        result.bitField0_ = to_bitField0_;
7049        onBuilt();
7050        return result;
7051      }
7052
7053      public Builder mergeFrom(com.google.protobuf.Message other) {
7054        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef) {
7055          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef)other);
7056        } else {
7057          super.mergeFrom(other);
7058          return this;
7059        }
7060      }
7061
7062      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef other) {
7063        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance()) return this;
7064        if (other.hasFullClassName()) {
7065          bitField0_ |= 0x00000001;
7066          fullClassName_ = other.fullClassName_;
7067          onChanged();
7068        }
7069        if (argsBuilder_ == null) {
7070          if (!other.args_.isEmpty()) {
7071            if (args_.isEmpty()) {
7072              args_ = other.args_;
7073              bitField0_ = (bitField0_ & ~0x00000002);
7074            } else {
7075              ensureArgsIsMutable();
7076              args_.addAll(other.args_);
7077            }
7078            onChanged();
7079          }
7080        } else {
7081          if (!other.args_.isEmpty()) {
7082            if (argsBuilder_.isEmpty()) {
7083              argsBuilder_.dispose();
7084              argsBuilder_ = null;
7085              args_ = other.args_;
7086              bitField0_ = (bitField0_ & ~0x00000002);
7087              argsBuilder_ = 
7088                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
7089                   getArgsFieldBuilder() : null;
7090            } else {
7091              argsBuilder_.addAllMessages(other.args_);
7092            }
7093          }
7094        }
7095        this.mergeUnknownFields(other.getUnknownFields());
7096        return this;
7097      }
7098
7099      public final boolean isInitialized() {
7100        if (!hasFullClassName()) {
7101          
7102          return false;
7103        }
7104        for (int i = 0; i < getArgsCount(); i++) {
7105          if (!getArgs(i).isInitialized()) {
7106            
7107            return false;
7108          }
7109        }
7110        return true;
7111      }
7112
7113      public Builder mergeFrom(
7114          com.google.protobuf.CodedInputStream input,
7115          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7116          throws java.io.IOException {
7117        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parsedMessage = null;
7118        try {
7119          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
7120        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
7121          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef) e.getUnfinishedMessage();
7122          throw e;
7123        } finally {
7124          if (parsedMessage != null) {
7125            mergeFrom(parsedMessage);
7126          }
7127        }
7128        return this;
7129      }
7130      private int bitField0_;
7131
7132      // required string full_class_name = 1;
7133      private java.lang.Object fullClassName_ = "";
7134      /**
7135       * <code>required string full_class_name = 1;</code>
7136       *
7137       * <pre>
7138       *
7139       *The full name of the class this constructor returns.
7140       * </pre>
7141       */
7142      public boolean hasFullClassName() {
7143        return ((bitField0_ & 0x00000001) == 0x00000001);
7144      }
7145      /**
7146       * <code>required string full_class_name = 1;</code>
7147       *
7148       * <pre>
7149       *
7150       *The full name of the class this constructor returns.
7151       * </pre>
7152       */
7153      public java.lang.String getFullClassName() {
7154        java.lang.Object ref = fullClassName_;
7155        if (!(ref instanceof java.lang.String)) {
7156          java.lang.String s = ((com.google.protobuf.ByteString) ref)
7157              .toStringUtf8();
7158          fullClassName_ = s;
7159          return s;
7160        } else {
7161          return (java.lang.String) ref;
7162        }
7163      }
7164      /**
7165       * <code>required string full_class_name = 1;</code>
7166       *
7167       * <pre>
7168       *
7169       *The full name of the class this constructor returns.
7170       * </pre>
7171       */
7172      public com.google.protobuf.ByteString
7173          getFullClassNameBytes() {
7174        java.lang.Object ref = fullClassName_;
7175        if (ref instanceof String) {
7176          com.google.protobuf.ByteString b = 
7177              com.google.protobuf.ByteString.copyFromUtf8(
7178                  (java.lang.String) ref);
7179          fullClassName_ = b;
7180          return b;
7181        } else {
7182          return (com.google.protobuf.ByteString) ref;
7183        }
7184      }
7185      /**
7186       * <code>required string full_class_name = 1;</code>
7187       *
7188       * <pre>
7189       *
7190       *The full name of the class this constructor returns.
7191       * </pre>
7192       */
7193      public Builder setFullClassName(
7194          java.lang.String value) {
7195        if (value == null) {
7196    throw new NullPointerException();
7197  }
7198  bitField0_ |= 0x00000001;
7199        fullClassName_ = value;
7200        onChanged();
7201        return this;
7202      }
7203      /**
7204       * <code>required string full_class_name = 1;</code>
7205       *
7206       * <pre>
7207       *
7208       *The full name of the class this constructor returns.
7209       * </pre>
7210       */
7211      public Builder clearFullClassName() {
7212        bitField0_ = (bitField0_ & ~0x00000001);
7213        fullClassName_ = getDefaultInstance().getFullClassName();
7214        onChanged();
7215        return this;
7216      }
7217      /**
7218       * <code>required string full_class_name = 1;</code>
7219       *
7220       * <pre>
7221       *
7222       *The full name of the class this constructor returns.
7223       * </pre>
7224       */
7225      public Builder setFullClassNameBytes(
7226          com.google.protobuf.ByteString value) {
7227        if (value == null) {
7228    throw new NullPointerException();
7229  }
7230  bitField0_ |= 0x00000001;
7231        fullClassName_ = value;
7232        onChanged();
7233        return this;
7234      }
7235
7236      // repeated .ConstructorArg args = 2;
7237      private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> args_ =
7238        java.util.Collections.emptyList();
7239      private void ensureArgsIsMutable() {
7240        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
7241          args_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg>(args_);
7242          bitField0_ |= 0x00000002;
7243         }
7244      }
7245
7246      private com.google.protobuf.RepeatedFieldBuilder<
7247          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> argsBuilder_;
7248
7249      /**
7250       * <code>repeated .ConstructorArg args = 2;</code>
7251       *
7252       * <pre>
7253       *
7254       *A (potentially empty) list of arguments required by this constructor.
7255       * </pre>
7256       */
7257      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> getArgsList() {
7258        if (argsBuilder_ == null) {
7259          return java.util.Collections.unmodifiableList(args_);
7260        } else {
7261          return argsBuilder_.getMessageList();
7262        }
7263      }
7264      /**
7265       * <code>repeated .ConstructorArg args = 2;</code>
7266       *
7267       * <pre>
7268       *
7269       *A (potentially empty) list of arguments required by this constructor.
7270       * </pre>
7271       */
7272      public int getArgsCount() {
7273        if (argsBuilder_ == null) {
7274          return args_.size();
7275        } else {
7276          return argsBuilder_.getCount();
7277        }
7278      }
7279      /**
7280       * <code>repeated .ConstructorArg args = 2;</code>
7281       *
7282       * <pre>
7283       *
7284       *A (potentially empty) list of arguments required by this constructor.
7285       * </pre>
7286       */
7287      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index) {
7288        if (argsBuilder_ == null) {
7289          return args_.get(index);
7290        } else {
7291          return argsBuilder_.getMessage(index);
7292        }
7293      }
7294      /**
7295       * <code>repeated .ConstructorArg args = 2;</code>
7296       *
7297       * <pre>
7298       *
7299       *A (potentially empty) list of arguments required by this constructor.
7300       * </pre>
7301       */
7302      public Builder setArgs(
7303          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7304        if (argsBuilder_ == null) {
7305          if (value == null) {
7306            throw new NullPointerException();
7307          }
7308          ensureArgsIsMutable();
7309          args_.set(index, value);
7310          onChanged();
7311        } else {
7312          argsBuilder_.setMessage(index, value);
7313        }
7314        return this;
7315      }
7316      /**
7317       * <code>repeated .ConstructorArg args = 2;</code>
7318       *
7319       * <pre>
7320       *
7321       *A (potentially empty) list of arguments required by this constructor.
7322       * </pre>
7323       */
7324      public Builder setArgs(
7325          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7326        if (argsBuilder_ == null) {
7327          ensureArgsIsMutable();
7328          args_.set(index, builderForValue.build());
7329          onChanged();
7330        } else {
7331          argsBuilder_.setMessage(index, builderForValue.build());
7332        }
7333        return this;
7334      }
7335      /**
7336       * <code>repeated .ConstructorArg args = 2;</code>
7337       *
7338       * <pre>
7339       *
7340       *A (potentially empty) list of arguments required by this constructor.
7341       * </pre>
7342       */
7343      public Builder addArgs(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7344        if (argsBuilder_ == null) {
7345          if (value == null) {
7346            throw new NullPointerException();
7347          }
7348          ensureArgsIsMutable();
7349          args_.add(value);
7350          onChanged();
7351        } else {
7352          argsBuilder_.addMessage(value);
7353        }
7354        return this;
7355      }
7356      /**
7357       * <code>repeated .ConstructorArg args = 2;</code>
7358       *
7359       * <pre>
7360       *
7361       *A (potentially empty) list of arguments required by this constructor.
7362       * </pre>
7363       */
7364      public Builder addArgs(
7365          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7366        if (argsBuilder_ == null) {
7367          if (value == null) {
7368            throw new NullPointerException();
7369          }
7370          ensureArgsIsMutable();
7371          args_.add(index, value);
7372          onChanged();
7373        } else {
7374          argsBuilder_.addMessage(index, value);
7375        }
7376        return this;
7377      }
7378      /**
7379       * <code>repeated .ConstructorArg args = 2;</code>
7380       *
7381       * <pre>
7382       *
7383       *A (potentially empty) list of arguments required by this constructor.
7384       * </pre>
7385       */
7386      public Builder addArgs(
7387          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7388        if (argsBuilder_ == null) {
7389          ensureArgsIsMutable();
7390          args_.add(builderForValue.build());
7391          onChanged();
7392        } else {
7393          argsBuilder_.addMessage(builderForValue.build());
7394        }
7395        return this;
7396      }
7397      /**
7398       * <code>repeated .ConstructorArg args = 2;</code>
7399       *
7400       * <pre>
7401       *
7402       *A (potentially empty) list of arguments required by this constructor.
7403       * </pre>
7404       */
7405      public Builder addArgs(
7406          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7407        if (argsBuilder_ == null) {
7408          ensureArgsIsMutable();
7409          args_.add(index, builderForValue.build());
7410          onChanged();
7411        } else {
7412          argsBuilder_.addMessage(index, builderForValue.build());
7413        }
7414        return this;
7415      }
7416      /**
7417       * <code>repeated .ConstructorArg args = 2;</code>
7418       *
7419       * <pre>
7420       *
7421       *A (potentially empty) list of arguments required by this constructor.
7422       * </pre>
7423       */
7424      public Builder addAllArgs(
7425          java.lang.Iterable<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> values) {
7426        if (argsBuilder_ == null) {
7427          ensureArgsIsMutable();
7428          super.addAll(values, args_);
7429          onChanged();
7430        } else {
7431          argsBuilder_.addAllMessages(values);
7432        }
7433        return this;
7434      }
7435      /**
7436       * <code>repeated .ConstructorArg args = 2;</code>
7437       *
7438       * <pre>
7439       *
7440       *A (potentially empty) list of arguments required by this constructor.
7441       * </pre>
7442       */
7443      public Builder clearArgs() {
7444        if (argsBuilder_ == null) {
7445          args_ = java.util.Collections.emptyList();
7446          bitField0_ = (bitField0_ & ~0x00000002);
7447          onChanged();
7448        } else {
7449          argsBuilder_.clear();
7450        }
7451        return this;
7452      }
7453      /**
7454       * <code>repeated .ConstructorArg args = 2;</code>
7455       *
7456       * <pre>
7457       *
7458       *A (potentially empty) list of arguments required by this constructor.
7459       * </pre>
7460       */
7461      public Builder removeArgs(int index) {
7462        if (argsBuilder_ == null) {
7463          ensureArgsIsMutable();
7464          args_.remove(index);
7465          onChanged();
7466        } else {
7467          argsBuilder_.remove(index);
7468        }
7469        return this;
7470      }
7471      /**
7472       * <code>repeated .ConstructorArg args = 2;</code>
7473       *
7474       * <pre>
7475       *
7476       *A (potentially empty) list of arguments required by this constructor.
7477       * </pre>
7478       */
7479      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder getArgsBuilder(
7480          int index) {
7481        return getArgsFieldBuilder().getBuilder(index);
7482      }
7483      /**
7484       * <code>repeated .ConstructorArg args = 2;</code>
7485       *
7486       * <pre>
7487       *
7488       *A (potentially empty) list of arguments required by this constructor.
7489       * </pre>
7490       */
7491      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
7492          int index) {
7493        if (argsBuilder_ == null) {
7494          return args_.get(index);  } else {
7495          return argsBuilder_.getMessageOrBuilder(index);
7496        }
7497      }
7498      /**
7499       * <code>repeated .ConstructorArg args = 2;</code>
7500       *
7501       * <pre>
7502       *
7503       *A (potentially empty) list of arguments required by this constructor.
7504       * </pre>
7505       */
7506      public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7507           getArgsOrBuilderList() {
7508        if (argsBuilder_ != null) {
7509          return argsBuilder_.getMessageOrBuilderList();
7510        } else {
7511          return java.util.Collections.unmodifiableList(args_);
7512        }
7513      }
7514      /**
7515       * <code>repeated .ConstructorArg args = 2;</code>
7516       *
7517       * <pre>
7518       *
7519       *A (potentially empty) list of arguments required by this constructor.
7520       * </pre>
7521       */
7522      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder addArgsBuilder() {
7523        return getArgsFieldBuilder().addBuilder(
7524            org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance());
7525      }
7526      /**
7527       * <code>repeated .ConstructorArg args = 2;</code>
7528       *
7529       * <pre>
7530       *
7531       *A (potentially empty) list of arguments required by this constructor.
7532       * </pre>
7533       */
7534      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder addArgsBuilder(
7535          int index) {
7536        return getArgsFieldBuilder().addBuilder(
7537            index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance());
7538      }
7539      /**
7540       * <code>repeated .ConstructorArg args = 2;</code>
7541       *
7542       * <pre>
7543       *
7544       *A (potentially empty) list of arguments required by this constructor.
7545       * </pre>
7546       */
7547      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder> 
7548           getArgsBuilderList() {
7549        return getArgsFieldBuilder().getBuilderList();
7550      }
7551      private com.google.protobuf.RepeatedFieldBuilder<
7552          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7553          getArgsFieldBuilder() {
7554        if (argsBuilder_ == null) {
7555          argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
7556              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder>(
7557                  args_,
7558                  ((bitField0_ & 0x00000002) == 0x00000002),
7559                  getParentForChildren(),
7560                  isClean());
7561          args_ = null;
7562        }
7563        return argsBuilder_;
7564      }
7565
7566      // @@protoc_insertion_point(builder_scope:ConstructorDef)
7567    }
7568
7569    static {
7570      defaultInstance = new ConstructorDef(true);
7571      defaultInstance.initFields();
7572    }
7573
7574    // @@protoc_insertion_point(class_scope:ConstructorDef)
7575  }
7576
7577  public interface ConstructorArgOrBuilder
7578      extends com.google.protobuf.MessageOrBuilder {
7579
7580    // required string full_arg_class_name = 1;
7581    /**
7582     * <code>required string full_arg_class_name = 1;</code>
7583     *
7584     * <pre>
7585     *
7586     *The full name of the class that should be passed into this
7587     *constructor argument.
7588     * </pre>
7589     */
7590    boolean hasFullArgClassName();
7591    /**
7592     * <code>required string full_arg_class_name = 1;</code>
7593     *
7594     * <pre>
7595     *
7596     *The full name of the class that should be passed into this
7597     *constructor argument.
7598     * </pre>
7599     */
7600    java.lang.String getFullArgClassName();
7601    /**
7602     * <code>required string full_arg_class_name = 1;</code>
7603     *
7604     * <pre>
7605     *
7606     *The full name of the class that should be passed into this
7607     *constructor argument.
7608     * </pre>
7609     */
7610    com.google.protobuf.ByteString
7611        getFullArgClassNameBytes();
7612
7613    // optional string named_parameter_name = 2;
7614    /**
7615     * <code>optional string named_parameter_name = 2;</code>
7616     *
7617     * <pre>
7618     *
7619     *The named parameter (if any) that this argument is annotated with.
7620     * </pre>
7621     */
7622    boolean hasNamedParameterName();
7623    /**
7624     * <code>optional string named_parameter_name = 2;</code>
7625     *
7626     * <pre>
7627     *
7628     *The named parameter (if any) that this argument is annotated with.
7629     * </pre>
7630     */
7631    java.lang.String getNamedParameterName();
7632    /**
7633     * <code>optional string named_parameter_name = 2;</code>
7634     *
7635     * <pre>
7636     *
7637     *The named parameter (if any) that this argument is annotated with.
7638     * </pre>
7639     */
7640    com.google.protobuf.ByteString
7641        getNamedParameterNameBytes();
7642
7643    // required bool is_injection_future = 3;
7644    /**
7645     * <code>required bool is_injection_future = 3;</code>
7646     */
7647    boolean hasIsInjectionFuture();
7648    /**
7649     * <code>required bool is_injection_future = 3;</code>
7650     */
7651    boolean getIsInjectionFuture();
7652  }
7653  /**
7654   * Protobuf type {@code ConstructorArg}
7655   */
7656  public static final class ConstructorArg extends
7657      com.google.protobuf.GeneratedMessage
7658      implements ConstructorArgOrBuilder {
7659    // Use ConstructorArg.newBuilder() to construct.
7660    private ConstructorArg(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
7661      super(builder);
7662      this.unknownFields = builder.getUnknownFields();
7663    }
7664    private ConstructorArg(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
7665
7666    private static final ConstructorArg defaultInstance;
7667    public static ConstructorArg getDefaultInstance() {
7668      return defaultInstance;
7669    }
7670
7671    public ConstructorArg getDefaultInstanceForType() {
7672      return defaultInstance;
7673    }
7674
7675    private final com.google.protobuf.UnknownFieldSet unknownFields;
7676    @java.lang.Override
7677    public final com.google.protobuf.UnknownFieldSet
7678        getUnknownFields() {
7679      return this.unknownFields;
7680    }
7681    private ConstructorArg(
7682        com.google.protobuf.CodedInputStream input,
7683        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7684        throws com.google.protobuf.InvalidProtocolBufferException {
7685      initFields();
7686      int mutable_bitField0_ = 0;
7687      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
7688          com.google.protobuf.UnknownFieldSet.newBuilder();
7689      try {
7690        boolean done = false;
7691        while (!done) {
7692          int tag = input.readTag();
7693          switch (tag) {
7694            case 0:
7695              done = true;
7696              break;
7697            default: {
7698              if (!parseUnknownField(input, unknownFields,
7699                                     extensionRegistry, tag)) {
7700                done = true;
7701              }
7702              break;
7703            }
7704            case 10: {
7705              bitField0_ |= 0x00000001;
7706              fullArgClassName_ = input.readBytes();
7707              break;
7708            }
7709            case 18: {
7710              bitField0_ |= 0x00000002;
7711              namedParameterName_ = input.readBytes();
7712              break;
7713            }
7714            case 24: {
7715              bitField0_ |= 0x00000004;
7716              isInjectionFuture_ = input.readBool();
7717              break;
7718            }
7719          }
7720        }
7721      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
7722        throw e.setUnfinishedMessage(this);
7723      } catch (java.io.IOException e) {
7724        throw new com.google.protobuf.InvalidProtocolBufferException(
7725            e.getMessage()).setUnfinishedMessage(this);
7726      } finally {
7727        this.unknownFields = unknownFields.build();
7728        makeExtensionsImmutable();
7729      }
7730    }
7731    public static final com.google.protobuf.Descriptors.Descriptor
7732        getDescriptor() {
7733      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
7734    }
7735
7736    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
7737        internalGetFieldAccessorTable() {
7738      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_fieldAccessorTable
7739          .ensureFieldAccessorsInitialized(
7740              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder.class);
7741    }
7742
7743    public static com.google.protobuf.Parser<ConstructorArg> PARSER =
7744        new com.google.protobuf.AbstractParser<ConstructorArg>() {
7745      public ConstructorArg parsePartialFrom(
7746          com.google.protobuf.CodedInputStream input,
7747          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7748          throws com.google.protobuf.InvalidProtocolBufferException {
7749        return new ConstructorArg(input, extensionRegistry);
7750      }
7751    };
7752
7753    @java.lang.Override
7754    public com.google.protobuf.Parser<ConstructorArg> getParserForType() {
7755      return PARSER;
7756    }
7757
7758    private int bitField0_;
7759    // required string full_arg_class_name = 1;
7760    public static final int FULL_ARG_CLASS_NAME_FIELD_NUMBER = 1;
7761    private java.lang.Object fullArgClassName_;
7762    /**
7763     * <code>required string full_arg_class_name = 1;</code>
7764     *
7765     * <pre>
7766     *
7767     *The full name of the class that should be passed into this
7768     *constructor argument.
7769     * </pre>
7770     */
7771    public boolean hasFullArgClassName() {
7772      return ((bitField0_ & 0x00000001) == 0x00000001);
7773    }
7774    /**
7775     * <code>required string full_arg_class_name = 1;</code>
7776     *
7777     * <pre>
7778     *
7779     *The full name of the class that should be passed into this
7780     *constructor argument.
7781     * </pre>
7782     */
7783    public java.lang.String getFullArgClassName() {
7784      java.lang.Object ref = fullArgClassName_;
7785      if (ref instanceof java.lang.String) {
7786        return (java.lang.String) ref;
7787      } else {
7788        com.google.protobuf.ByteString bs = 
7789            (com.google.protobuf.ByteString) ref;
7790        java.lang.String s = bs.toStringUtf8();
7791        if (bs.isValidUtf8()) {
7792          fullArgClassName_ = s;
7793        }
7794        return s;
7795      }
7796    }
7797    /**
7798     * <code>required string full_arg_class_name = 1;</code>
7799     *
7800     * <pre>
7801     *
7802     *The full name of the class that should be passed into this
7803     *constructor argument.
7804     * </pre>
7805     */
7806    public com.google.protobuf.ByteString
7807        getFullArgClassNameBytes() {
7808      java.lang.Object ref = fullArgClassName_;
7809      if (ref instanceof java.lang.String) {
7810        com.google.protobuf.ByteString b = 
7811            com.google.protobuf.ByteString.copyFromUtf8(
7812                (java.lang.String) ref);
7813        fullArgClassName_ = b;
7814        return b;
7815      } else {
7816        return (com.google.protobuf.ByteString) ref;
7817      }
7818    }
7819
7820    // optional string named_parameter_name = 2;
7821    public static final int NAMED_PARAMETER_NAME_FIELD_NUMBER = 2;
7822    private java.lang.Object namedParameterName_;
7823    /**
7824     * <code>optional string named_parameter_name = 2;</code>
7825     *
7826     * <pre>
7827     *
7828     *The named parameter (if any) that this argument is annotated with.
7829     * </pre>
7830     */
7831    public boolean hasNamedParameterName() {
7832      return ((bitField0_ & 0x00000002) == 0x00000002);
7833    }
7834    /**
7835     * <code>optional string named_parameter_name = 2;</code>
7836     *
7837     * <pre>
7838     *
7839     *The named parameter (if any) that this argument is annotated with.
7840     * </pre>
7841     */
7842    public java.lang.String getNamedParameterName() {
7843      java.lang.Object ref = namedParameterName_;
7844      if (ref instanceof java.lang.String) {
7845        return (java.lang.String) ref;
7846      } else {
7847        com.google.protobuf.ByteString bs = 
7848            (com.google.protobuf.ByteString) ref;
7849        java.lang.String s = bs.toStringUtf8();
7850        if (bs.isValidUtf8()) {
7851          namedParameterName_ = s;
7852        }
7853        return s;
7854      }
7855    }
7856    /**
7857     * <code>optional string named_parameter_name = 2;</code>
7858     *
7859     * <pre>
7860     *
7861     *The named parameter (if any) that this argument is annotated with.
7862     * </pre>
7863     */
7864    public com.google.protobuf.ByteString
7865        getNamedParameterNameBytes() {
7866      java.lang.Object ref = namedParameterName_;
7867      if (ref instanceof java.lang.String) {
7868        com.google.protobuf.ByteString b = 
7869            com.google.protobuf.ByteString.copyFromUtf8(
7870                (java.lang.String) ref);
7871        namedParameterName_ = b;
7872        return b;
7873      } else {
7874        return (com.google.protobuf.ByteString) ref;
7875      }
7876    }
7877
7878    // required bool is_injection_future = 3;
7879    public static final int IS_INJECTION_FUTURE_FIELD_NUMBER = 3;
7880    private boolean isInjectionFuture_;
7881    /**
7882     * <code>required bool is_injection_future = 3;</code>
7883     */
7884    public boolean hasIsInjectionFuture() {
7885      return ((bitField0_ & 0x00000004) == 0x00000004);
7886    }
7887    /**
7888     * <code>required bool is_injection_future = 3;</code>
7889     */
7890    public boolean getIsInjectionFuture() {
7891      return isInjectionFuture_;
7892    }
7893
7894    private void initFields() {
7895      fullArgClassName_ = "";
7896      namedParameterName_ = "";
7897      isInjectionFuture_ = false;
7898    }
7899    private byte memoizedIsInitialized = -1;
7900    public final boolean isInitialized() {
7901      byte isInitialized = memoizedIsInitialized;
7902      if (isInitialized != -1) return isInitialized == 1;
7903
7904      if (!hasFullArgClassName()) {
7905        memoizedIsInitialized = 0;
7906        return false;
7907      }
7908      if (!hasIsInjectionFuture()) {
7909        memoizedIsInitialized = 0;
7910        return false;
7911      }
7912      memoizedIsInitialized = 1;
7913      return true;
7914    }
7915
7916    public void writeTo(com.google.protobuf.CodedOutputStream output)
7917                        throws java.io.IOException {
7918      getSerializedSize();
7919      if (((bitField0_ & 0x00000001) == 0x00000001)) {
7920        output.writeBytes(1, getFullArgClassNameBytes());
7921      }
7922      if (((bitField0_ & 0x00000002) == 0x00000002)) {
7923        output.writeBytes(2, getNamedParameterNameBytes());
7924      }
7925      if (((bitField0_ & 0x00000004) == 0x00000004)) {
7926        output.writeBool(3, isInjectionFuture_);
7927      }
7928      getUnknownFields().writeTo(output);
7929    }
7930
7931    private int memoizedSerializedSize = -1;
7932    public int getSerializedSize() {
7933      int size = memoizedSerializedSize;
7934      if (size != -1) return size;
7935
7936      size = 0;
7937      if (((bitField0_ & 0x00000001) == 0x00000001)) {
7938        size += com.google.protobuf.CodedOutputStream
7939          .computeBytesSize(1, getFullArgClassNameBytes());
7940      }
7941      if (((bitField0_ & 0x00000002) == 0x00000002)) {
7942        size += com.google.protobuf.CodedOutputStream
7943          .computeBytesSize(2, getNamedParameterNameBytes());
7944      }
7945      if (((bitField0_ & 0x00000004) == 0x00000004)) {
7946        size += com.google.protobuf.CodedOutputStream
7947          .computeBoolSize(3, isInjectionFuture_);
7948      }
7949      size += getUnknownFields().getSerializedSize();
7950      memoizedSerializedSize = size;
7951      return size;
7952    }
7953
7954    private static final long serialVersionUID = 0L;
7955    @java.lang.Override
7956    protected java.lang.Object writeReplace()
7957        throws java.io.ObjectStreamException {
7958      return super.writeReplace();
7959    }
7960
7961    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
7962        com.google.protobuf.ByteString data)
7963        throws com.google.protobuf.InvalidProtocolBufferException {
7964      return PARSER.parseFrom(data);
7965    }
7966    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
7967        com.google.protobuf.ByteString data,
7968        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7969        throws com.google.protobuf.InvalidProtocolBufferException {
7970      return PARSER.parseFrom(data, extensionRegistry);
7971    }
7972    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(byte[] data)
7973        throws com.google.protobuf.InvalidProtocolBufferException {
7974      return PARSER.parseFrom(data);
7975    }
7976    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
7977        byte[] data,
7978        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7979        throws com.google.protobuf.InvalidProtocolBufferException {
7980      return PARSER.parseFrom(data, extensionRegistry);
7981    }
7982    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(java.io.InputStream input)
7983        throws java.io.IOException {
7984      return PARSER.parseFrom(input);
7985    }
7986    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
7987        java.io.InputStream input,
7988        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7989        throws java.io.IOException {
7990      return PARSER.parseFrom(input, extensionRegistry);
7991    }
7992    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseDelimitedFrom(java.io.InputStream input)
7993        throws java.io.IOException {
7994      return PARSER.parseDelimitedFrom(input);
7995    }
7996    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseDelimitedFrom(
7997        java.io.InputStream input,
7998        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7999        throws java.io.IOException {
8000      return PARSER.parseDelimitedFrom(input, extensionRegistry);
8001    }
8002    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8003        com.google.protobuf.CodedInputStream input)
8004        throws java.io.IOException {
8005      return PARSER.parseFrom(input);
8006    }
8007    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8008        com.google.protobuf.CodedInputStream input,
8009        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8010        throws java.io.IOException {
8011      return PARSER.parseFrom(input, extensionRegistry);
8012    }
8013
8014    public static Builder newBuilder() { return Builder.create(); }
8015    public Builder newBuilderForType() { return newBuilder(); }
8016    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg prototype) {
8017      return newBuilder().mergeFrom(prototype);
8018    }
8019    public Builder toBuilder() { return newBuilder(this); }
8020
8021    @java.lang.Override
8022    protected Builder newBuilderForType(
8023        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
8024      Builder builder = new Builder(parent);
8025      return builder;
8026    }
8027    /**
8028     * Protobuf type {@code ConstructorArg}
8029     */
8030    public static final class Builder extends
8031        com.google.protobuf.GeneratedMessage.Builder<Builder>
8032       implements org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder {
8033      public static final com.google.protobuf.Descriptors.Descriptor
8034          getDescriptor() {
8035        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
8036      }
8037
8038      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
8039          internalGetFieldAccessorTable() {
8040        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_fieldAccessorTable
8041            .ensureFieldAccessorsInitialized(
8042                org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder.class);
8043      }
8044
8045      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.newBuilder()
8046      private Builder() {
8047        maybeForceBuilderInitialization();
8048      }
8049
8050      private Builder(
8051          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
8052        super(parent);
8053        maybeForceBuilderInitialization();
8054      }
8055      private void maybeForceBuilderInitialization() {
8056        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
8057        }
8058      }
8059      private static Builder create() {
8060        return new Builder();
8061      }
8062
8063      public Builder clear() {
8064        super.clear();
8065        fullArgClassName_ = "";
8066        bitField0_ = (bitField0_ & ~0x00000001);
8067        namedParameterName_ = "";
8068        bitField0_ = (bitField0_ & ~0x00000002);
8069        isInjectionFuture_ = false;
8070        bitField0_ = (bitField0_ & ~0x00000004);
8071        return this;
8072      }
8073
8074      public Builder clone() {
8075        return create().mergeFrom(buildPartial());
8076      }
8077
8078      public com.google.protobuf.Descriptors.Descriptor
8079          getDescriptorForType() {
8080        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
8081      }
8082
8083      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getDefaultInstanceForType() {
8084        return org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance();
8085      }
8086
8087      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg build() {
8088        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg result = buildPartial();
8089        if (!result.isInitialized()) {
8090          throw newUninitializedMessageException(result);
8091        }
8092        return result;
8093      }
8094
8095      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg buildPartial() {
8096        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg result = new org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg(this);
8097        int from_bitField0_ = bitField0_;
8098        int to_bitField0_ = 0;
8099        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
8100          to_bitField0_ |= 0x00000001;
8101        }
8102        result.fullArgClassName_ = fullArgClassName_;
8103        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
8104          to_bitField0_ |= 0x00000002;
8105        }
8106        result.namedParameterName_ = namedParameterName_;
8107        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
8108          to_bitField0_ |= 0x00000004;
8109        }
8110        result.isInjectionFuture_ = isInjectionFuture_;
8111        result.bitField0_ = to_bitField0_;
8112        onBuilt();
8113        return result;
8114      }
8115
8116      public Builder mergeFrom(com.google.protobuf.Message other) {
8117        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg) {
8118          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg)other);
8119        } else {
8120          super.mergeFrom(other);
8121          return this;
8122        }
8123      }
8124
8125      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg other) {
8126        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance()) return this;
8127        if (other.hasFullArgClassName()) {
8128          bitField0_ |= 0x00000001;
8129          fullArgClassName_ = other.fullArgClassName_;
8130          onChanged();
8131        }
8132        if (other.hasNamedParameterName()) {
8133          bitField0_ |= 0x00000002;
8134          namedParameterName_ = other.namedParameterName_;
8135          onChanged();
8136        }
8137        if (other.hasIsInjectionFuture()) {
8138          setIsInjectionFuture(other.getIsInjectionFuture());
8139        }
8140        this.mergeUnknownFields(other.getUnknownFields());
8141        return this;
8142      }
8143
8144      public final boolean isInitialized() {
8145        if (!hasFullArgClassName()) {
8146          
8147          return false;
8148        }
8149        if (!hasIsInjectionFuture()) {
8150          
8151          return false;
8152        }
8153        return true;
8154      }
8155
8156      public Builder mergeFrom(
8157          com.google.protobuf.CodedInputStream input,
8158          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8159          throws java.io.IOException {
8160        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parsedMessage = null;
8161        try {
8162          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
8163        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
8164          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg) e.getUnfinishedMessage();
8165          throw e;
8166        } finally {
8167          if (parsedMessage != null) {
8168            mergeFrom(parsedMessage);
8169          }
8170        }
8171        return this;
8172      }
8173      private int bitField0_;
8174
8175      // required string full_arg_class_name = 1;
8176      private java.lang.Object fullArgClassName_ = "";
8177      /**
8178       * <code>required string full_arg_class_name = 1;</code>
8179       *
8180       * <pre>
8181       *
8182       *The full name of the class that should be passed into this
8183       *constructor argument.
8184       * </pre>
8185       */
8186      public boolean hasFullArgClassName() {
8187        return ((bitField0_ & 0x00000001) == 0x00000001);
8188      }
8189      /**
8190       * <code>required string full_arg_class_name = 1;</code>
8191       *
8192       * <pre>
8193       *
8194       *The full name of the class that should be passed into this
8195       *constructor argument.
8196       * </pre>
8197       */
8198      public java.lang.String getFullArgClassName() {
8199        java.lang.Object ref = fullArgClassName_;
8200        if (!(ref instanceof java.lang.String)) {
8201          java.lang.String s = ((com.google.protobuf.ByteString) ref)
8202              .toStringUtf8();
8203          fullArgClassName_ = s;
8204          return s;
8205        } else {
8206          return (java.lang.String) ref;
8207        }
8208      }
8209      /**
8210       * <code>required string full_arg_class_name = 1;</code>
8211       *
8212       * <pre>
8213       *
8214       *The full name of the class that should be passed into this
8215       *constructor argument.
8216       * </pre>
8217       */
8218      public com.google.protobuf.ByteString
8219          getFullArgClassNameBytes() {
8220        java.lang.Object ref = fullArgClassName_;
8221        if (ref instanceof String) {
8222          com.google.protobuf.ByteString b = 
8223              com.google.protobuf.ByteString.copyFromUtf8(
8224                  (java.lang.String) ref);
8225          fullArgClassName_ = b;
8226          return b;
8227        } else {
8228          return (com.google.protobuf.ByteString) ref;
8229        }
8230      }
8231      /**
8232       * <code>required string full_arg_class_name = 1;</code>
8233       *
8234       * <pre>
8235       *
8236       *The full name of the class that should be passed into this
8237       *constructor argument.
8238       * </pre>
8239       */
8240      public Builder setFullArgClassName(
8241          java.lang.String value) {
8242        if (value == null) {
8243    throw new NullPointerException();
8244  }
8245  bitField0_ |= 0x00000001;
8246        fullArgClassName_ = value;
8247        onChanged();
8248        return this;
8249      }
8250      /**
8251       * <code>required string full_arg_class_name = 1;</code>
8252       *
8253       * <pre>
8254       *
8255       *The full name of the class that should be passed into this
8256       *constructor argument.
8257       * </pre>
8258       */
8259      public Builder clearFullArgClassName() {
8260        bitField0_ = (bitField0_ & ~0x00000001);
8261        fullArgClassName_ = getDefaultInstance().getFullArgClassName();
8262        onChanged();
8263        return this;
8264      }
8265      /**
8266       * <code>required string full_arg_class_name = 1;</code>
8267       *
8268       * <pre>
8269       *
8270       *The full name of the class that should be passed into this
8271       *constructor argument.
8272       * </pre>
8273       */
8274      public Builder setFullArgClassNameBytes(
8275          com.google.protobuf.ByteString value) {
8276        if (value == null) {
8277    throw new NullPointerException();
8278  }
8279  bitField0_ |= 0x00000001;
8280        fullArgClassName_ = value;
8281        onChanged();
8282        return this;
8283      }
8284
8285      // optional string named_parameter_name = 2;
8286      private java.lang.Object namedParameterName_ = "";
8287      /**
8288       * <code>optional string named_parameter_name = 2;</code>
8289       *
8290       * <pre>
8291       *
8292       *The named parameter (if any) that this argument is annotated with.
8293       * </pre>
8294       */
8295      public boolean hasNamedParameterName() {
8296        return ((bitField0_ & 0x00000002) == 0x00000002);
8297      }
8298      /**
8299       * <code>optional string named_parameter_name = 2;</code>
8300       *
8301       * <pre>
8302       *
8303       *The named parameter (if any) that this argument is annotated with.
8304       * </pre>
8305       */
8306      public java.lang.String getNamedParameterName() {
8307        java.lang.Object ref = namedParameterName_;
8308        if (!(ref instanceof java.lang.String)) {
8309          java.lang.String s = ((com.google.protobuf.ByteString) ref)
8310              .toStringUtf8();
8311          namedParameterName_ = s;
8312          return s;
8313        } else {
8314          return (java.lang.String) ref;
8315        }
8316      }
8317      /**
8318       * <code>optional string named_parameter_name = 2;</code>
8319       *
8320       * <pre>
8321       *
8322       *The named parameter (if any) that this argument is annotated with.
8323       * </pre>
8324       */
8325      public com.google.protobuf.ByteString
8326          getNamedParameterNameBytes() {
8327        java.lang.Object ref = namedParameterName_;
8328        if (ref instanceof String) {
8329          com.google.protobuf.ByteString b = 
8330              com.google.protobuf.ByteString.copyFromUtf8(
8331                  (java.lang.String) ref);
8332          namedParameterName_ = b;
8333          return b;
8334        } else {
8335          return (com.google.protobuf.ByteString) ref;
8336        }
8337      }
8338      /**
8339       * <code>optional string named_parameter_name = 2;</code>
8340       *
8341       * <pre>
8342       *
8343       *The named parameter (if any) that this argument is annotated with.
8344       * </pre>
8345       */
8346      public Builder setNamedParameterName(
8347          java.lang.String value) {
8348        if (value == null) {
8349    throw new NullPointerException();
8350  }
8351  bitField0_ |= 0x00000002;
8352        namedParameterName_ = value;
8353        onChanged();
8354        return this;
8355      }
8356      /**
8357       * <code>optional string named_parameter_name = 2;</code>
8358       *
8359       * <pre>
8360       *
8361       *The named parameter (if any) that this argument is annotated with.
8362       * </pre>
8363       */
8364      public Builder clearNamedParameterName() {
8365        bitField0_ = (bitField0_ & ~0x00000002);
8366        namedParameterName_ = getDefaultInstance().getNamedParameterName();
8367        onChanged();
8368        return this;
8369      }
8370      /**
8371       * <code>optional string named_parameter_name = 2;</code>
8372       *
8373       * <pre>
8374       *
8375       *The named parameter (if any) that this argument is annotated with.
8376       * </pre>
8377       */
8378      public Builder setNamedParameterNameBytes(
8379          com.google.protobuf.ByteString value) {
8380        if (value == null) {
8381    throw new NullPointerException();
8382  }
8383  bitField0_ |= 0x00000002;
8384        namedParameterName_ = value;
8385        onChanged();
8386        return this;
8387      }
8388
8389      // required bool is_injection_future = 3;
8390      private boolean isInjectionFuture_ ;
8391      /**
8392       * <code>required bool is_injection_future = 3;</code>
8393       */
8394      public boolean hasIsInjectionFuture() {
8395        return ((bitField0_ & 0x00000004) == 0x00000004);
8396      }
8397      /**
8398       * <code>required bool is_injection_future = 3;</code>
8399       */
8400      public boolean getIsInjectionFuture() {
8401        return isInjectionFuture_;
8402      }
8403      /**
8404       * <code>required bool is_injection_future = 3;</code>
8405       */
8406      public Builder setIsInjectionFuture(boolean value) {
8407        bitField0_ |= 0x00000004;
8408        isInjectionFuture_ = value;
8409        onChanged();
8410        return this;
8411      }
8412      /**
8413       * <code>required bool is_injection_future = 3;</code>
8414       */
8415      public Builder clearIsInjectionFuture() {
8416        bitField0_ = (bitField0_ & ~0x00000004);
8417        isInjectionFuture_ = false;
8418        onChanged();
8419        return this;
8420      }
8421
8422      // @@protoc_insertion_point(builder_scope:ConstructorArg)
8423    }
8424
8425    static {
8426      defaultInstance = new ConstructorArg(true);
8427      defaultInstance.initFields();
8428    }
8429
8430    // @@protoc_insertion_point(class_scope:ConstructorArg)
8431  }
8432
8433  private static com.google.protobuf.Descriptors.Descriptor
8434    internal_static_Node_descriptor;
8435  private static
8436    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8437      internal_static_Node_fieldAccessorTable;
8438  private static com.google.protobuf.Descriptors.Descriptor
8439    internal_static_ClassNode_descriptor;
8440  private static
8441    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8442      internal_static_ClassNode_fieldAccessorTable;
8443  private static com.google.protobuf.Descriptors.Descriptor
8444    internal_static_NamedParameterNode_descriptor;
8445  private static
8446    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8447      internal_static_NamedParameterNode_fieldAccessorTable;
8448  private static com.google.protobuf.Descriptors.Descriptor
8449    internal_static_PackageNode_descriptor;
8450  private static
8451    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8452      internal_static_PackageNode_fieldAccessorTable;
8453  private static com.google.protobuf.Descriptors.Descriptor
8454    internal_static_ConstructorDef_descriptor;
8455  private static
8456    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8457      internal_static_ConstructorDef_fieldAccessorTable;
8458  private static com.google.protobuf.Descriptors.Descriptor
8459    internal_static_ConstructorArg_descriptor;
8460  private static
8461    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8462      internal_static_ConstructorArg_fieldAccessorTable;
8463
8464  public static com.google.protobuf.Descriptors.FileDescriptor
8465      getDescriptor() {
8466    return descriptor;
8467  }
8468  private static com.google.protobuf.Descriptors.FileDescriptor
8469      descriptor;
8470  static {
8471    java.lang.String[] descriptorData = {
8472      "\n\025class_hierarchy.proto\"\267\001\n\004Node\022\014\n\004name" +
8473      "\030\001 \002(\t\022\021\n\tfull_name\030\002 \002(\t\022\036\n\nclass_node\030" +
8474      "\003 \001(\0132\n.ClassNode\0221\n\024named_parameter_nod" +
8475      "e\030\004 \001(\0132\023.NamedParameterNode\022\"\n\014package_" +
8476      "node\030\005 \001(\0132\014.PackageNode\022\027\n\010children\030\006 \003" +
8477      "(\0132\005.Node\"\363\001\n\tClassNode\022\036\n\026is_injection_" +
8478      "candidate\030\001 \002(\010\022\037\n\027is_external_construct" +
8479      "or\030\002 \002(\010\022\017\n\007is_unit\030\003 \002(\010\022/\n\026InjectableC" +
8480      "onstructors\030\004 \003(\0132\017.ConstructorDef\022*\n\021Ot" +
8481      "herConstructors\030\005 \003(\0132\017.ConstructorDef\022\027",
8482      "\n\017impl_full_names\030\006 \003(\t\022\036\n\026default_imple" +
8483      "mentation\030\007 \001(\t\"\266\001\n\022NamedParameterNode\022\035" +
8484      "\n\025simple_arg_class_name\030\001 \002(\t\022\033\n\023full_ar" +
8485      "g_class_name\030\002 \002(\t\022\016\n\006is_set\030\003 \002(\010\022\017\n\007is" +
8486      "_list\030\004 \002(\010\022\025\n\rdocumentation\030\005 \001(\t\022\022\n\nsh" +
8487      "ort_name\030\006 \001(\t\022\030\n\020instance_default\030\007 \003(\t" +
8488      "\"\r\n\013PackageNode\"H\n\016ConstructorDef\022\027\n\017ful" +
8489      "l_class_name\030\001 \002(\t\022\035\n\004args\030\002 \003(\0132\017.Const" +
8490      "ructorArg\"h\n\016ConstructorArg\022\033\n\023full_arg_" +
8491      "class_name\030\001 \002(\t\022\034\n\024named_parameter_name",
8492      "\030\002 \001(\t\022\033\n\023is_injection_future\030\003 \002(\010B1\n\032o" +
8493      "rg.apache.reef.tang.protoB\023ClassHierarch" +
8494      "yProto"
8495    };
8496    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
8497      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
8498        public com.google.protobuf.ExtensionRegistry assignDescriptors(
8499            com.google.protobuf.Descriptors.FileDescriptor root) {
8500          descriptor = root;
8501          internal_static_Node_descriptor =
8502            getDescriptor().getMessageTypes().get(0);
8503          internal_static_Node_fieldAccessorTable = new
8504            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8505              internal_static_Node_descriptor,
8506              new java.lang.String[] { "Name", "FullName", "ClassNode", "NamedParameterNode", "PackageNode", "Children", });
8507          internal_static_ClassNode_descriptor =
8508            getDescriptor().getMessageTypes().get(1);
8509          internal_static_ClassNode_fieldAccessorTable = new
8510            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8511              internal_static_ClassNode_descriptor,
8512              new java.lang.String[] { "IsInjectionCandidate", "IsExternalConstructor", "IsUnit", "InjectableConstructors", "OtherConstructors", "ImplFullNames", "DefaultImplementation", });
8513          internal_static_NamedParameterNode_descriptor =
8514            getDescriptor().getMessageTypes().get(2);
8515          internal_static_NamedParameterNode_fieldAccessorTable = new
8516            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8517              internal_static_NamedParameterNode_descriptor,
8518              new java.lang.String[] { "SimpleArgClassName", "FullArgClassName", "IsSet", "IsList", "Documentation", "ShortName", "InstanceDefault", });
8519          internal_static_PackageNode_descriptor =
8520            getDescriptor().getMessageTypes().get(3);
8521          internal_static_PackageNode_fieldAccessorTable = new
8522            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8523              internal_static_PackageNode_descriptor,
8524              new java.lang.String[] { });
8525          internal_static_ConstructorDef_descriptor =
8526            getDescriptor().getMessageTypes().get(4);
8527          internal_static_ConstructorDef_fieldAccessorTable = new
8528            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8529              internal_static_ConstructorDef_descriptor,
8530              new java.lang.String[] { "FullClassName", "Args", });
8531          internal_static_ConstructorArg_descriptor =
8532            getDescriptor().getMessageTypes().get(5);
8533          internal_static_ConstructorArg_fieldAccessorTable = new
8534            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8535              internal_static_ConstructorArg_descriptor,
8536              new java.lang.String[] { "FullArgClassName", "NamedParameterName", "IsInjectionFuture", });
8537          return null;
8538        }
8539      };
8540    com.google.protobuf.Descriptors.FileDescriptor
8541      .internalBuildGeneratedFileFrom(descriptorData,
8542        new com.google.protobuf.Descriptors.FileDescriptor[] {
8543        }, assigner);
8544  }
8545
8546  // @@protoc_insertion_point(outer_class_scope)
8547}