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    // optional string alias_name = 8;
4721    /**
4722     * <code>optional string alias_name = 8;</code>
4723     *
4724     * <pre>
4725     *
4726     *An alias of the named parameter
4727     * </pre>
4728     */
4729    boolean hasAliasName();
4730    /**
4731     * <code>optional string alias_name = 8;</code>
4732     *
4733     * <pre>
4734     *
4735     *An alias of the named parameter
4736     * </pre>
4737     */
4738    java.lang.String getAliasName();
4739    /**
4740     * <code>optional string alias_name = 8;</code>
4741     *
4742     * <pre>
4743     *
4744     *An alias of the named parameter
4745     * </pre>
4746     */
4747    com.google.protobuf.ByteString
4748        getAliasNameBytes();
4749
4750    // optional string alias_language = 9;
4751    /**
4752     * <code>optional string alias_language = 9;</code>
4753     *
4754     * <pre>
4755     *
4756     *An alias language of the named parameter
4757     * </pre>
4758     */
4759    boolean hasAliasLanguage();
4760    /**
4761     * <code>optional string alias_language = 9;</code>
4762     *
4763     * <pre>
4764     *
4765     *An alias language of the named parameter
4766     * </pre>
4767     */
4768    java.lang.String getAliasLanguage();
4769    /**
4770     * <code>optional string alias_language = 9;</code>
4771     *
4772     * <pre>
4773     *
4774     *An alias language of the named parameter
4775     * </pre>
4776     */
4777    com.google.protobuf.ByteString
4778        getAliasLanguageBytes();
4779  }
4780  /**
4781   * Protobuf type {@code NamedParameterNode}
4782   */
4783  public static final class NamedParameterNode extends
4784      com.google.protobuf.GeneratedMessage
4785      implements NamedParameterNodeOrBuilder {
4786    // Use NamedParameterNode.newBuilder() to construct.
4787    private NamedParameterNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
4788      super(builder);
4789      this.unknownFields = builder.getUnknownFields();
4790    }
4791    private NamedParameterNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
4792
4793    private static final NamedParameterNode defaultInstance;
4794    public static NamedParameterNode getDefaultInstance() {
4795      return defaultInstance;
4796    }
4797
4798    public NamedParameterNode getDefaultInstanceForType() {
4799      return defaultInstance;
4800    }
4801
4802    private final com.google.protobuf.UnknownFieldSet unknownFields;
4803    @java.lang.Override
4804    public final com.google.protobuf.UnknownFieldSet
4805        getUnknownFields() {
4806      return this.unknownFields;
4807    }
4808    private NamedParameterNode(
4809        com.google.protobuf.CodedInputStream input,
4810        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
4811        throws com.google.protobuf.InvalidProtocolBufferException {
4812      initFields();
4813      int mutable_bitField0_ = 0;
4814      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
4815          com.google.protobuf.UnknownFieldSet.newBuilder();
4816      try {
4817        boolean done = false;
4818        while (!done) {
4819          int tag = input.readTag();
4820          switch (tag) {
4821            case 0:
4822              done = true;
4823              break;
4824            default: {
4825              if (!parseUnknownField(input, unknownFields,
4826                                     extensionRegistry, tag)) {
4827                done = true;
4828              }
4829              break;
4830            }
4831            case 10: {
4832              bitField0_ |= 0x00000001;
4833              simpleArgClassName_ = input.readBytes();
4834              break;
4835            }
4836            case 18: {
4837              bitField0_ |= 0x00000002;
4838              fullArgClassName_ = input.readBytes();
4839              break;
4840            }
4841            case 24: {
4842              bitField0_ |= 0x00000004;
4843              isSet_ = input.readBool();
4844              break;
4845            }
4846            case 32: {
4847              bitField0_ |= 0x00000008;
4848              isList_ = input.readBool();
4849              break;
4850            }
4851            case 42: {
4852              bitField0_ |= 0x00000010;
4853              documentation_ = input.readBytes();
4854              break;
4855            }
4856            case 50: {
4857              bitField0_ |= 0x00000020;
4858              shortName_ = input.readBytes();
4859              break;
4860            }
4861            case 58: {
4862              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
4863                instanceDefault_ = new com.google.protobuf.LazyStringArrayList();
4864                mutable_bitField0_ |= 0x00000040;
4865              }
4866              instanceDefault_.add(input.readBytes());
4867              break;
4868            }
4869            case 66: {
4870              bitField0_ |= 0x00000040;
4871              aliasName_ = input.readBytes();
4872              break;
4873            }
4874            case 74: {
4875              bitField0_ |= 0x00000080;
4876              aliasLanguage_ = input.readBytes();
4877              break;
4878            }
4879          }
4880        }
4881      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
4882        throw e.setUnfinishedMessage(this);
4883      } catch (java.io.IOException e) {
4884        throw new com.google.protobuf.InvalidProtocolBufferException(
4885            e.getMessage()).setUnfinishedMessage(this);
4886      } finally {
4887        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
4888          instanceDefault_ = new com.google.protobuf.UnmodifiableLazyStringList(instanceDefault_);
4889        }
4890        this.unknownFields = unknownFields.build();
4891        makeExtensionsImmutable();
4892      }
4893    }
4894    public static final com.google.protobuf.Descriptors.Descriptor
4895        getDescriptor() {
4896      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
4897    }
4898
4899    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
4900        internalGetFieldAccessorTable() {
4901      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_fieldAccessorTable
4902          .ensureFieldAccessorsInitialized(
4903              org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder.class);
4904    }
4905
4906    public static com.google.protobuf.Parser<NamedParameterNode> PARSER =
4907        new com.google.protobuf.AbstractParser<NamedParameterNode>() {
4908      public NamedParameterNode parsePartialFrom(
4909          com.google.protobuf.CodedInputStream input,
4910          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
4911          throws com.google.protobuf.InvalidProtocolBufferException {
4912        return new NamedParameterNode(input, extensionRegistry);
4913      }
4914    };
4915
4916    @java.lang.Override
4917    public com.google.protobuf.Parser<NamedParameterNode> getParserForType() {
4918      return PARSER;
4919    }
4920
4921    private int bitField0_;
4922    // required string simple_arg_class_name = 1;
4923    public static final int SIMPLE_ARG_CLASS_NAME_FIELD_NUMBER = 1;
4924    private java.lang.Object simpleArgClassName_;
4925    /**
4926     * <code>required string simple_arg_class_name = 1;</code>
4927     *
4928     * <pre>
4929     *
4930     *The short name (Node.name) of the type of argument this node names.
4931     * </pre>
4932     */
4933    public boolean hasSimpleArgClassName() {
4934      return ((bitField0_ & 0x00000001) == 0x00000001);
4935    }
4936    /**
4937     * <code>required string simple_arg_class_name = 1;</code>
4938     *
4939     * <pre>
4940     *
4941     *The short name (Node.name) of the type of argument this node names.
4942     * </pre>
4943     */
4944    public java.lang.String getSimpleArgClassName() {
4945      java.lang.Object ref = simpleArgClassName_;
4946      if (ref instanceof java.lang.String) {
4947        return (java.lang.String) ref;
4948      } else {
4949        com.google.protobuf.ByteString bs = 
4950            (com.google.protobuf.ByteString) ref;
4951        java.lang.String s = bs.toStringUtf8();
4952        if (bs.isValidUtf8()) {
4953          simpleArgClassName_ = s;
4954        }
4955        return s;
4956      }
4957    }
4958    /**
4959     * <code>required string simple_arg_class_name = 1;</code>
4960     *
4961     * <pre>
4962     *
4963     *The short name (Node.name) of the type of argument this node names.
4964     * </pre>
4965     */
4966    public com.google.protobuf.ByteString
4967        getSimpleArgClassNameBytes() {
4968      java.lang.Object ref = simpleArgClassName_;
4969      if (ref instanceof java.lang.String) {
4970        com.google.protobuf.ByteString b = 
4971            com.google.protobuf.ByteString.copyFromUtf8(
4972                (java.lang.String) ref);
4973        simpleArgClassName_ = b;
4974        return b;
4975      } else {
4976        return (com.google.protobuf.ByteString) ref;
4977      }
4978    }
4979
4980    // required string full_arg_class_name = 2;
4981    public static final int FULL_ARG_CLASS_NAME_FIELD_NUMBER = 2;
4982    private java.lang.Object fullArgClassName_;
4983    /**
4984     * <code>required string full_arg_class_name = 2;</code>
4985     *
4986     * <pre>
4987     *
4988     *The full name (Node.full_name) of the type of argument that this node
4989     *names.
4990     * </pre>
4991     */
4992    public boolean hasFullArgClassName() {
4993      return ((bitField0_ & 0x00000002) == 0x00000002);
4994    }
4995    /**
4996     * <code>required string full_arg_class_name = 2;</code>
4997     *
4998     * <pre>
4999     *
5000     *The full name (Node.full_name) of the type of argument that this node
5001     *names.
5002     * </pre>
5003     */
5004    public java.lang.String getFullArgClassName() {
5005      java.lang.Object ref = fullArgClassName_;
5006      if (ref instanceof java.lang.String) {
5007        return (java.lang.String) ref;
5008      } else {
5009        com.google.protobuf.ByteString bs = 
5010            (com.google.protobuf.ByteString) ref;
5011        java.lang.String s = bs.toStringUtf8();
5012        if (bs.isValidUtf8()) {
5013          fullArgClassName_ = s;
5014        }
5015        return s;
5016      }
5017    }
5018    /**
5019     * <code>required string full_arg_class_name = 2;</code>
5020     *
5021     * <pre>
5022     *
5023     *The full name (Node.full_name) of the type of argument that this node
5024     *names.
5025     * </pre>
5026     */
5027    public com.google.protobuf.ByteString
5028        getFullArgClassNameBytes() {
5029      java.lang.Object ref = fullArgClassName_;
5030      if (ref instanceof java.lang.String) {
5031        com.google.protobuf.ByteString b = 
5032            com.google.protobuf.ByteString.copyFromUtf8(
5033                (java.lang.String) ref);
5034        fullArgClassName_ = b;
5035        return b;
5036      } else {
5037        return (com.google.protobuf.ByteString) ref;
5038      }
5039    }
5040
5041    // required bool is_set = 3;
5042    public static final int IS_SET_FIELD_NUMBER = 3;
5043    private boolean isSet_;
5044    /**
5045     * <code>required bool is_set = 3;</code>
5046     */
5047    public boolean hasIsSet() {
5048      return ((bitField0_ & 0x00000004) == 0x00000004);
5049    }
5050    /**
5051     * <code>required bool is_set = 3;</code>
5052     */
5053    public boolean getIsSet() {
5054      return isSet_;
5055    }
5056
5057    // required bool is_list = 4;
5058    public static final int IS_LIST_FIELD_NUMBER = 4;
5059    private boolean isList_;
5060    /**
5061     * <code>required bool is_list = 4;</code>
5062     */
5063    public boolean hasIsList() {
5064      return ((bitField0_ & 0x00000008) == 0x00000008);
5065    }
5066    /**
5067     * <code>required bool is_list = 4;</code>
5068     */
5069    public boolean getIsList() {
5070      return isList_;
5071    }
5072
5073    // optional string documentation = 5;
5074    public static final int DOCUMENTATION_FIELD_NUMBER = 5;
5075    private java.lang.Object documentation_;
5076    /**
5077     * <code>optional string documentation = 5;</code>
5078     *
5079     * <pre>
5080     *
5081     *An optional human readable documentation string describing the purpose
5082     *of this NamedParameter.
5083     * </pre>
5084     */
5085    public boolean hasDocumentation() {
5086      return ((bitField0_ & 0x00000010) == 0x00000010);
5087    }
5088    /**
5089     * <code>optional string documentation = 5;</code>
5090     *
5091     * <pre>
5092     *
5093     *An optional human readable documentation string describing the purpose
5094     *of this NamedParameter.
5095     * </pre>
5096     */
5097    public java.lang.String getDocumentation() {
5098      java.lang.Object ref = documentation_;
5099      if (ref instanceof java.lang.String) {
5100        return (java.lang.String) ref;
5101      } else {
5102        com.google.protobuf.ByteString bs = 
5103            (com.google.protobuf.ByteString) ref;
5104        java.lang.String s = bs.toStringUtf8();
5105        if (bs.isValidUtf8()) {
5106          documentation_ = s;
5107        }
5108        return s;
5109      }
5110    }
5111    /**
5112     * <code>optional string documentation = 5;</code>
5113     *
5114     * <pre>
5115     *
5116     *An optional human readable documentation string describing the purpose
5117     *of this NamedParameter.
5118     * </pre>
5119     */
5120    public com.google.protobuf.ByteString
5121        getDocumentationBytes() {
5122      java.lang.Object ref = documentation_;
5123      if (ref instanceof java.lang.String) {
5124        com.google.protobuf.ByteString b = 
5125            com.google.protobuf.ByteString.copyFromUtf8(
5126                (java.lang.String) ref);
5127        documentation_ = b;
5128        return b;
5129      } else {
5130        return (com.google.protobuf.ByteString) ref;
5131      }
5132    }
5133
5134    // optional string short_name = 6;
5135    public static final int SHORT_NAME_FIELD_NUMBER = 6;
5136    private java.lang.Object shortName_;
5137    /**
5138     * <code>optional string short_name = 6;</code>
5139     *
5140     * <pre>
5141     *
5142     *A shorter name for this parameter.  This is used for command line
5143     *processing. (So utilities that see --short_name=xxx will set this
5144     *NamedParameter to "xxx", for example).  
5145     * </pre>
5146     */
5147    public boolean hasShortName() {
5148      return ((bitField0_ & 0x00000020) == 0x00000020);
5149    }
5150    /**
5151     * <code>optional string short_name = 6;</code>
5152     *
5153     * <pre>
5154     *
5155     *A shorter name for this parameter.  This is used for command line
5156     *processing. (So utilities that see --short_name=xxx will set this
5157     *NamedParameter to "xxx", for example).  
5158     * </pre>
5159     */
5160    public java.lang.String getShortName() {
5161      java.lang.Object ref = shortName_;
5162      if (ref instanceof java.lang.String) {
5163        return (java.lang.String) ref;
5164      } else {
5165        com.google.protobuf.ByteString bs = 
5166            (com.google.protobuf.ByteString) ref;
5167        java.lang.String s = bs.toStringUtf8();
5168        if (bs.isValidUtf8()) {
5169          shortName_ = s;
5170        }
5171        return s;
5172      }
5173    }
5174    /**
5175     * <code>optional string short_name = 6;</code>
5176     *
5177     * <pre>
5178     *
5179     *A shorter name for this parameter.  This is used for command line
5180     *processing. (So utilities that see --short_name=xxx will set this
5181     *NamedParameter to "xxx", for example).  
5182     * </pre>
5183     */
5184    public com.google.protobuf.ByteString
5185        getShortNameBytes() {
5186      java.lang.Object ref = shortName_;
5187      if (ref instanceof java.lang.String) {
5188        com.google.protobuf.ByteString b = 
5189            com.google.protobuf.ByteString.copyFromUtf8(
5190                (java.lang.String) ref);
5191        shortName_ = b;
5192        return b;
5193      } else {
5194        return (com.google.protobuf.ByteString) ref;
5195      }
5196    }
5197
5198    // repeated string instance_default = 7;
5199    public static final int INSTANCE_DEFAULT_FIELD_NUMBER = 7;
5200    private com.google.protobuf.LazyStringList instanceDefault_;
5201    /**
5202     * <code>repeated string instance_default = 7;</code>
5203     *
5204     * <pre>
5205     * calling this "default_instance" breaks protoc.
5206     * </pre>
5207     */
5208    public java.util.List<java.lang.String>
5209        getInstanceDefaultList() {
5210      return instanceDefault_;
5211    }
5212    /**
5213     * <code>repeated string instance_default = 7;</code>
5214     *
5215     * <pre>
5216     * calling this "default_instance" breaks protoc.
5217     * </pre>
5218     */
5219    public int getInstanceDefaultCount() {
5220      return instanceDefault_.size();
5221    }
5222    /**
5223     * <code>repeated string instance_default = 7;</code>
5224     *
5225     * <pre>
5226     * calling this "default_instance" breaks protoc.
5227     * </pre>
5228     */
5229    public java.lang.String getInstanceDefault(int index) {
5230      return instanceDefault_.get(index);
5231    }
5232    /**
5233     * <code>repeated string instance_default = 7;</code>
5234     *
5235     * <pre>
5236     * calling this "default_instance" breaks protoc.
5237     * </pre>
5238     */
5239    public com.google.protobuf.ByteString
5240        getInstanceDefaultBytes(int index) {
5241      return instanceDefault_.getByteString(index);
5242    }
5243
5244    // optional string alias_name = 8;
5245    public static final int ALIAS_NAME_FIELD_NUMBER = 8;
5246    private java.lang.Object aliasName_;
5247    /**
5248     * <code>optional string alias_name = 8;</code>
5249     *
5250     * <pre>
5251     *
5252     *An alias of the named parameter
5253     * </pre>
5254     */
5255    public boolean hasAliasName() {
5256      return ((bitField0_ & 0x00000040) == 0x00000040);
5257    }
5258    /**
5259     * <code>optional string alias_name = 8;</code>
5260     *
5261     * <pre>
5262     *
5263     *An alias of the named parameter
5264     * </pre>
5265     */
5266    public java.lang.String getAliasName() {
5267      java.lang.Object ref = aliasName_;
5268      if (ref instanceof java.lang.String) {
5269        return (java.lang.String) ref;
5270      } else {
5271        com.google.protobuf.ByteString bs = 
5272            (com.google.protobuf.ByteString) ref;
5273        java.lang.String s = bs.toStringUtf8();
5274        if (bs.isValidUtf8()) {
5275          aliasName_ = s;
5276        }
5277        return s;
5278      }
5279    }
5280    /**
5281     * <code>optional string alias_name = 8;</code>
5282     *
5283     * <pre>
5284     *
5285     *An alias of the named parameter
5286     * </pre>
5287     */
5288    public com.google.protobuf.ByteString
5289        getAliasNameBytes() {
5290      java.lang.Object ref = aliasName_;
5291      if (ref instanceof java.lang.String) {
5292        com.google.protobuf.ByteString b = 
5293            com.google.protobuf.ByteString.copyFromUtf8(
5294                (java.lang.String) ref);
5295        aliasName_ = b;
5296        return b;
5297      } else {
5298        return (com.google.protobuf.ByteString) ref;
5299      }
5300    }
5301
5302    // optional string alias_language = 9;
5303    public static final int ALIAS_LANGUAGE_FIELD_NUMBER = 9;
5304    private java.lang.Object aliasLanguage_;
5305    /**
5306     * <code>optional string alias_language = 9;</code>
5307     *
5308     * <pre>
5309     *
5310     *An alias language of the named parameter
5311     * </pre>
5312     */
5313    public boolean hasAliasLanguage() {
5314      return ((bitField0_ & 0x00000080) == 0x00000080);
5315    }
5316    /**
5317     * <code>optional string alias_language = 9;</code>
5318     *
5319     * <pre>
5320     *
5321     *An alias language of the named parameter
5322     * </pre>
5323     */
5324    public java.lang.String getAliasLanguage() {
5325      java.lang.Object ref = aliasLanguage_;
5326      if (ref instanceof java.lang.String) {
5327        return (java.lang.String) ref;
5328      } else {
5329        com.google.protobuf.ByteString bs = 
5330            (com.google.protobuf.ByteString) ref;
5331        java.lang.String s = bs.toStringUtf8();
5332        if (bs.isValidUtf8()) {
5333          aliasLanguage_ = s;
5334        }
5335        return s;
5336      }
5337    }
5338    /**
5339     * <code>optional string alias_language = 9;</code>
5340     *
5341     * <pre>
5342     *
5343     *An alias language of the named parameter
5344     * </pre>
5345     */
5346    public com.google.protobuf.ByteString
5347        getAliasLanguageBytes() {
5348      java.lang.Object ref = aliasLanguage_;
5349      if (ref instanceof java.lang.String) {
5350        com.google.protobuf.ByteString b = 
5351            com.google.protobuf.ByteString.copyFromUtf8(
5352                (java.lang.String) ref);
5353        aliasLanguage_ = b;
5354        return b;
5355      } else {
5356        return (com.google.protobuf.ByteString) ref;
5357      }
5358    }
5359
5360    private void initFields() {
5361      simpleArgClassName_ = "";
5362      fullArgClassName_ = "";
5363      isSet_ = false;
5364      isList_ = false;
5365      documentation_ = "";
5366      shortName_ = "";
5367      instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
5368      aliasName_ = "";
5369      aliasLanguage_ = "";
5370    }
5371    private byte memoizedIsInitialized = -1;
5372    public final boolean isInitialized() {
5373      byte isInitialized = memoizedIsInitialized;
5374      if (isInitialized != -1) return isInitialized == 1;
5375
5376      if (!hasSimpleArgClassName()) {
5377        memoizedIsInitialized = 0;
5378        return false;
5379      }
5380      if (!hasFullArgClassName()) {
5381        memoizedIsInitialized = 0;
5382        return false;
5383      }
5384      if (!hasIsSet()) {
5385        memoizedIsInitialized = 0;
5386        return false;
5387      }
5388      if (!hasIsList()) {
5389        memoizedIsInitialized = 0;
5390        return false;
5391      }
5392      memoizedIsInitialized = 1;
5393      return true;
5394    }
5395
5396    public void writeTo(com.google.protobuf.CodedOutputStream output)
5397                        throws java.io.IOException {
5398      getSerializedSize();
5399      if (((bitField0_ & 0x00000001) == 0x00000001)) {
5400        output.writeBytes(1, getSimpleArgClassNameBytes());
5401      }
5402      if (((bitField0_ & 0x00000002) == 0x00000002)) {
5403        output.writeBytes(2, getFullArgClassNameBytes());
5404      }
5405      if (((bitField0_ & 0x00000004) == 0x00000004)) {
5406        output.writeBool(3, isSet_);
5407      }
5408      if (((bitField0_ & 0x00000008) == 0x00000008)) {
5409        output.writeBool(4, isList_);
5410      }
5411      if (((bitField0_ & 0x00000010) == 0x00000010)) {
5412        output.writeBytes(5, getDocumentationBytes());
5413      }
5414      if (((bitField0_ & 0x00000020) == 0x00000020)) {
5415        output.writeBytes(6, getShortNameBytes());
5416      }
5417      for (int i = 0; i < instanceDefault_.size(); i++) {
5418        output.writeBytes(7, instanceDefault_.getByteString(i));
5419      }
5420      if (((bitField0_ & 0x00000040) == 0x00000040)) {
5421        output.writeBytes(8, getAliasNameBytes());
5422      }
5423      if (((bitField0_ & 0x00000080) == 0x00000080)) {
5424        output.writeBytes(9, getAliasLanguageBytes());
5425      }
5426      getUnknownFields().writeTo(output);
5427    }
5428
5429    private int memoizedSerializedSize = -1;
5430    public int getSerializedSize() {
5431      int size = memoizedSerializedSize;
5432      if (size != -1) return size;
5433
5434      size = 0;
5435      if (((bitField0_ & 0x00000001) == 0x00000001)) {
5436        size += com.google.protobuf.CodedOutputStream
5437          .computeBytesSize(1, getSimpleArgClassNameBytes());
5438      }
5439      if (((bitField0_ & 0x00000002) == 0x00000002)) {
5440        size += com.google.protobuf.CodedOutputStream
5441          .computeBytesSize(2, getFullArgClassNameBytes());
5442      }
5443      if (((bitField0_ & 0x00000004) == 0x00000004)) {
5444        size += com.google.protobuf.CodedOutputStream
5445          .computeBoolSize(3, isSet_);
5446      }
5447      if (((bitField0_ & 0x00000008) == 0x00000008)) {
5448        size += com.google.protobuf.CodedOutputStream
5449          .computeBoolSize(4, isList_);
5450      }
5451      if (((bitField0_ & 0x00000010) == 0x00000010)) {
5452        size += com.google.protobuf.CodedOutputStream
5453          .computeBytesSize(5, getDocumentationBytes());
5454      }
5455      if (((bitField0_ & 0x00000020) == 0x00000020)) {
5456        size += com.google.protobuf.CodedOutputStream
5457          .computeBytesSize(6, getShortNameBytes());
5458      }
5459      {
5460        int dataSize = 0;
5461        for (int i = 0; i < instanceDefault_.size(); i++) {
5462          dataSize += com.google.protobuf.CodedOutputStream
5463            .computeBytesSizeNoTag(instanceDefault_.getByteString(i));
5464        }
5465        size += dataSize;
5466        size += 1 * getInstanceDefaultList().size();
5467      }
5468      if (((bitField0_ & 0x00000040) == 0x00000040)) {
5469        size += com.google.protobuf.CodedOutputStream
5470          .computeBytesSize(8, getAliasNameBytes());
5471      }
5472      if (((bitField0_ & 0x00000080) == 0x00000080)) {
5473        size += com.google.protobuf.CodedOutputStream
5474          .computeBytesSize(9, getAliasLanguageBytes());
5475      }
5476      size += getUnknownFields().getSerializedSize();
5477      memoizedSerializedSize = size;
5478      return size;
5479    }
5480
5481    private static final long serialVersionUID = 0L;
5482    @java.lang.Override
5483    protected java.lang.Object writeReplace()
5484        throws java.io.ObjectStreamException {
5485      return super.writeReplace();
5486    }
5487
5488    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5489        com.google.protobuf.ByteString data)
5490        throws com.google.protobuf.InvalidProtocolBufferException {
5491      return PARSER.parseFrom(data);
5492    }
5493    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5494        com.google.protobuf.ByteString data,
5495        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5496        throws com.google.protobuf.InvalidProtocolBufferException {
5497      return PARSER.parseFrom(data, extensionRegistry);
5498    }
5499    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(byte[] data)
5500        throws com.google.protobuf.InvalidProtocolBufferException {
5501      return PARSER.parseFrom(data);
5502    }
5503    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5504        byte[] data,
5505        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5506        throws com.google.protobuf.InvalidProtocolBufferException {
5507      return PARSER.parseFrom(data, extensionRegistry);
5508    }
5509    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(java.io.InputStream input)
5510        throws java.io.IOException {
5511      return PARSER.parseFrom(input);
5512    }
5513    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5514        java.io.InputStream input,
5515        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5516        throws java.io.IOException {
5517      return PARSER.parseFrom(input, extensionRegistry);
5518    }
5519    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseDelimitedFrom(java.io.InputStream input)
5520        throws java.io.IOException {
5521      return PARSER.parseDelimitedFrom(input);
5522    }
5523    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseDelimitedFrom(
5524        java.io.InputStream input,
5525        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5526        throws java.io.IOException {
5527      return PARSER.parseDelimitedFrom(input, extensionRegistry);
5528    }
5529    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5530        com.google.protobuf.CodedInputStream input)
5531        throws java.io.IOException {
5532      return PARSER.parseFrom(input);
5533    }
5534    public static org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parseFrom(
5535        com.google.protobuf.CodedInputStream input,
5536        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5537        throws java.io.IOException {
5538      return PARSER.parseFrom(input, extensionRegistry);
5539    }
5540
5541    public static Builder newBuilder() { return Builder.create(); }
5542    public Builder newBuilderForType() { return newBuilder(); }
5543    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode prototype) {
5544      return newBuilder().mergeFrom(prototype);
5545    }
5546    public Builder toBuilder() { return newBuilder(this); }
5547
5548    @java.lang.Override
5549    protected Builder newBuilderForType(
5550        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
5551      Builder builder = new Builder(parent);
5552      return builder;
5553    }
5554    /**
5555     * Protobuf type {@code NamedParameterNode}
5556     */
5557    public static final class Builder extends
5558        com.google.protobuf.GeneratedMessage.Builder<Builder>
5559       implements org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNodeOrBuilder {
5560      public static final com.google.protobuf.Descriptors.Descriptor
5561          getDescriptor() {
5562        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
5563      }
5564
5565      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
5566          internalGetFieldAccessorTable() {
5567        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_fieldAccessorTable
5568            .ensureFieldAccessorsInitialized(
5569                org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.Builder.class);
5570      }
5571
5572      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.newBuilder()
5573      private Builder() {
5574        maybeForceBuilderInitialization();
5575      }
5576
5577      private Builder(
5578          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
5579        super(parent);
5580        maybeForceBuilderInitialization();
5581      }
5582      private void maybeForceBuilderInitialization() {
5583        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
5584        }
5585      }
5586      private static Builder create() {
5587        return new Builder();
5588      }
5589
5590      public Builder clear() {
5591        super.clear();
5592        simpleArgClassName_ = "";
5593        bitField0_ = (bitField0_ & ~0x00000001);
5594        fullArgClassName_ = "";
5595        bitField0_ = (bitField0_ & ~0x00000002);
5596        isSet_ = false;
5597        bitField0_ = (bitField0_ & ~0x00000004);
5598        isList_ = false;
5599        bitField0_ = (bitField0_ & ~0x00000008);
5600        documentation_ = "";
5601        bitField0_ = (bitField0_ & ~0x00000010);
5602        shortName_ = "";
5603        bitField0_ = (bitField0_ & ~0x00000020);
5604        instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
5605        bitField0_ = (bitField0_ & ~0x00000040);
5606        aliasName_ = "";
5607        bitField0_ = (bitField0_ & ~0x00000080);
5608        aliasLanguage_ = "";
5609        bitField0_ = (bitField0_ & ~0x00000100);
5610        return this;
5611      }
5612
5613      public Builder clone() {
5614        return create().mergeFrom(buildPartial());
5615      }
5616
5617      public com.google.protobuf.Descriptors.Descriptor
5618          getDescriptorForType() {
5619        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_NamedParameterNode_descriptor;
5620      }
5621
5622      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode getDefaultInstanceForType() {
5623        return org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance();
5624      }
5625
5626      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode build() {
5627        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode result = buildPartial();
5628        if (!result.isInitialized()) {
5629          throw newUninitializedMessageException(result);
5630        }
5631        return result;
5632      }
5633
5634      public org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode buildPartial() {
5635        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode result = new org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode(this);
5636        int from_bitField0_ = bitField0_;
5637        int to_bitField0_ = 0;
5638        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
5639          to_bitField0_ |= 0x00000001;
5640        }
5641        result.simpleArgClassName_ = simpleArgClassName_;
5642        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
5643          to_bitField0_ |= 0x00000002;
5644        }
5645        result.fullArgClassName_ = fullArgClassName_;
5646        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
5647          to_bitField0_ |= 0x00000004;
5648        }
5649        result.isSet_ = isSet_;
5650        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
5651          to_bitField0_ |= 0x00000008;
5652        }
5653        result.isList_ = isList_;
5654        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
5655          to_bitField0_ |= 0x00000010;
5656        }
5657        result.documentation_ = documentation_;
5658        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
5659          to_bitField0_ |= 0x00000020;
5660        }
5661        result.shortName_ = shortName_;
5662        if (((bitField0_ & 0x00000040) == 0x00000040)) {
5663          instanceDefault_ = new com.google.protobuf.UnmodifiableLazyStringList(
5664              instanceDefault_);
5665          bitField0_ = (bitField0_ & ~0x00000040);
5666        }
5667        result.instanceDefault_ = instanceDefault_;
5668        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
5669          to_bitField0_ |= 0x00000040;
5670        }
5671        result.aliasName_ = aliasName_;
5672        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
5673          to_bitField0_ |= 0x00000080;
5674        }
5675        result.aliasLanguage_ = aliasLanguage_;
5676        result.bitField0_ = to_bitField0_;
5677        onBuilt();
5678        return result;
5679      }
5680
5681      public Builder mergeFrom(com.google.protobuf.Message other) {
5682        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode) {
5683          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode)other);
5684        } else {
5685          super.mergeFrom(other);
5686          return this;
5687        }
5688      }
5689
5690      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode other) {
5691        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode.getDefaultInstance()) return this;
5692        if (other.hasSimpleArgClassName()) {
5693          bitField0_ |= 0x00000001;
5694          simpleArgClassName_ = other.simpleArgClassName_;
5695          onChanged();
5696        }
5697        if (other.hasFullArgClassName()) {
5698          bitField0_ |= 0x00000002;
5699          fullArgClassName_ = other.fullArgClassName_;
5700          onChanged();
5701        }
5702        if (other.hasIsSet()) {
5703          setIsSet(other.getIsSet());
5704        }
5705        if (other.hasIsList()) {
5706          setIsList(other.getIsList());
5707        }
5708        if (other.hasDocumentation()) {
5709          bitField0_ |= 0x00000010;
5710          documentation_ = other.documentation_;
5711          onChanged();
5712        }
5713        if (other.hasShortName()) {
5714          bitField0_ |= 0x00000020;
5715          shortName_ = other.shortName_;
5716          onChanged();
5717        }
5718        if (!other.instanceDefault_.isEmpty()) {
5719          if (instanceDefault_.isEmpty()) {
5720            instanceDefault_ = other.instanceDefault_;
5721            bitField0_ = (bitField0_ & ~0x00000040);
5722          } else {
5723            ensureInstanceDefaultIsMutable();
5724            instanceDefault_.addAll(other.instanceDefault_);
5725          }
5726          onChanged();
5727        }
5728        if (other.hasAliasName()) {
5729          bitField0_ |= 0x00000080;
5730          aliasName_ = other.aliasName_;
5731          onChanged();
5732        }
5733        if (other.hasAliasLanguage()) {
5734          bitField0_ |= 0x00000100;
5735          aliasLanguage_ = other.aliasLanguage_;
5736          onChanged();
5737        }
5738        this.mergeUnknownFields(other.getUnknownFields());
5739        return this;
5740      }
5741
5742      public final boolean isInitialized() {
5743        if (!hasSimpleArgClassName()) {
5744          
5745          return false;
5746        }
5747        if (!hasFullArgClassName()) {
5748          
5749          return false;
5750        }
5751        if (!hasIsSet()) {
5752          
5753          return false;
5754        }
5755        if (!hasIsList()) {
5756          
5757          return false;
5758        }
5759        return true;
5760      }
5761
5762      public Builder mergeFrom(
5763          com.google.protobuf.CodedInputStream input,
5764          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
5765          throws java.io.IOException {
5766        org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode parsedMessage = null;
5767        try {
5768          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
5769        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
5770          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.NamedParameterNode) e.getUnfinishedMessage();
5771          throw e;
5772        } finally {
5773          if (parsedMessage != null) {
5774            mergeFrom(parsedMessage);
5775          }
5776        }
5777        return this;
5778      }
5779      private int bitField0_;
5780
5781      // required string simple_arg_class_name = 1;
5782      private java.lang.Object simpleArgClassName_ = "";
5783      /**
5784       * <code>required string simple_arg_class_name = 1;</code>
5785       *
5786       * <pre>
5787       *
5788       *The short name (Node.name) of the type of argument this node names.
5789       * </pre>
5790       */
5791      public boolean hasSimpleArgClassName() {
5792        return ((bitField0_ & 0x00000001) == 0x00000001);
5793      }
5794      /**
5795       * <code>required string simple_arg_class_name = 1;</code>
5796       *
5797       * <pre>
5798       *
5799       *The short name (Node.name) of the type of argument this node names.
5800       * </pre>
5801       */
5802      public java.lang.String getSimpleArgClassName() {
5803        java.lang.Object ref = simpleArgClassName_;
5804        if (!(ref instanceof java.lang.String)) {
5805          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5806              .toStringUtf8();
5807          simpleArgClassName_ = s;
5808          return s;
5809        } else {
5810          return (java.lang.String) ref;
5811        }
5812      }
5813      /**
5814       * <code>required string simple_arg_class_name = 1;</code>
5815       *
5816       * <pre>
5817       *
5818       *The short name (Node.name) of the type of argument this node names.
5819       * </pre>
5820       */
5821      public com.google.protobuf.ByteString
5822          getSimpleArgClassNameBytes() {
5823        java.lang.Object ref = simpleArgClassName_;
5824        if (ref instanceof String) {
5825          com.google.protobuf.ByteString b = 
5826              com.google.protobuf.ByteString.copyFromUtf8(
5827                  (java.lang.String) ref);
5828          simpleArgClassName_ = b;
5829          return b;
5830        } else {
5831          return (com.google.protobuf.ByteString) ref;
5832        }
5833      }
5834      /**
5835       * <code>required string simple_arg_class_name = 1;</code>
5836       *
5837       * <pre>
5838       *
5839       *The short name (Node.name) of the type of argument this node names.
5840       * </pre>
5841       */
5842      public Builder setSimpleArgClassName(
5843          java.lang.String value) {
5844        if (value == null) {
5845    throw new NullPointerException();
5846  }
5847  bitField0_ |= 0x00000001;
5848        simpleArgClassName_ = value;
5849        onChanged();
5850        return this;
5851      }
5852      /**
5853       * <code>required string simple_arg_class_name = 1;</code>
5854       *
5855       * <pre>
5856       *
5857       *The short name (Node.name) of the type of argument this node names.
5858       * </pre>
5859       */
5860      public Builder clearSimpleArgClassName() {
5861        bitField0_ = (bitField0_ & ~0x00000001);
5862        simpleArgClassName_ = getDefaultInstance().getSimpleArgClassName();
5863        onChanged();
5864        return this;
5865      }
5866      /**
5867       * <code>required string simple_arg_class_name = 1;</code>
5868       *
5869       * <pre>
5870       *
5871       *The short name (Node.name) of the type of argument this node names.
5872       * </pre>
5873       */
5874      public Builder setSimpleArgClassNameBytes(
5875          com.google.protobuf.ByteString value) {
5876        if (value == null) {
5877    throw new NullPointerException();
5878  }
5879  bitField0_ |= 0x00000001;
5880        simpleArgClassName_ = value;
5881        onChanged();
5882        return this;
5883      }
5884
5885      // required string full_arg_class_name = 2;
5886      private java.lang.Object fullArgClassName_ = "";
5887      /**
5888       * <code>required string full_arg_class_name = 2;</code>
5889       *
5890       * <pre>
5891       *
5892       *The full name (Node.full_name) of the type of argument that this node
5893       *names.
5894       * </pre>
5895       */
5896      public boolean hasFullArgClassName() {
5897        return ((bitField0_ & 0x00000002) == 0x00000002);
5898      }
5899      /**
5900       * <code>required string full_arg_class_name = 2;</code>
5901       *
5902       * <pre>
5903       *
5904       *The full name (Node.full_name) of the type of argument that this node
5905       *names.
5906       * </pre>
5907       */
5908      public java.lang.String getFullArgClassName() {
5909        java.lang.Object ref = fullArgClassName_;
5910        if (!(ref instanceof java.lang.String)) {
5911          java.lang.String s = ((com.google.protobuf.ByteString) ref)
5912              .toStringUtf8();
5913          fullArgClassName_ = s;
5914          return s;
5915        } else {
5916          return (java.lang.String) ref;
5917        }
5918      }
5919      /**
5920       * <code>required string full_arg_class_name = 2;</code>
5921       *
5922       * <pre>
5923       *
5924       *The full name (Node.full_name) of the type of argument that this node
5925       *names.
5926       * </pre>
5927       */
5928      public com.google.protobuf.ByteString
5929          getFullArgClassNameBytes() {
5930        java.lang.Object ref = fullArgClassName_;
5931        if (ref instanceof String) {
5932          com.google.protobuf.ByteString b = 
5933              com.google.protobuf.ByteString.copyFromUtf8(
5934                  (java.lang.String) ref);
5935          fullArgClassName_ = b;
5936          return b;
5937        } else {
5938          return (com.google.protobuf.ByteString) ref;
5939        }
5940      }
5941      /**
5942       * <code>required string full_arg_class_name = 2;</code>
5943       *
5944       * <pre>
5945       *
5946       *The full name (Node.full_name) of the type of argument that this node
5947       *names.
5948       * </pre>
5949       */
5950      public Builder setFullArgClassName(
5951          java.lang.String value) {
5952        if (value == null) {
5953    throw new NullPointerException();
5954  }
5955  bitField0_ |= 0x00000002;
5956        fullArgClassName_ = value;
5957        onChanged();
5958        return this;
5959      }
5960      /**
5961       * <code>required string full_arg_class_name = 2;</code>
5962       *
5963       * <pre>
5964       *
5965       *The full name (Node.full_name) of the type of argument that this node
5966       *names.
5967       * </pre>
5968       */
5969      public Builder clearFullArgClassName() {
5970        bitField0_ = (bitField0_ & ~0x00000002);
5971        fullArgClassName_ = getDefaultInstance().getFullArgClassName();
5972        onChanged();
5973        return this;
5974      }
5975      /**
5976       * <code>required string full_arg_class_name = 2;</code>
5977       *
5978       * <pre>
5979       *
5980       *The full name (Node.full_name) of the type of argument that this node
5981       *names.
5982       * </pre>
5983       */
5984      public Builder setFullArgClassNameBytes(
5985          com.google.protobuf.ByteString value) {
5986        if (value == null) {
5987    throw new NullPointerException();
5988  }
5989  bitField0_ |= 0x00000002;
5990        fullArgClassName_ = value;
5991        onChanged();
5992        return this;
5993      }
5994
5995      // required bool is_set = 3;
5996      private boolean isSet_ ;
5997      /**
5998       * <code>required bool is_set = 3;</code>
5999       */
6000      public boolean hasIsSet() {
6001        return ((bitField0_ & 0x00000004) == 0x00000004);
6002      }
6003      /**
6004       * <code>required bool is_set = 3;</code>
6005       */
6006      public boolean getIsSet() {
6007        return isSet_;
6008      }
6009      /**
6010       * <code>required bool is_set = 3;</code>
6011       */
6012      public Builder setIsSet(boolean value) {
6013        bitField0_ |= 0x00000004;
6014        isSet_ = value;
6015        onChanged();
6016        return this;
6017      }
6018      /**
6019       * <code>required bool is_set = 3;</code>
6020       */
6021      public Builder clearIsSet() {
6022        bitField0_ = (bitField0_ & ~0x00000004);
6023        isSet_ = false;
6024        onChanged();
6025        return this;
6026      }
6027
6028      // required bool is_list = 4;
6029      private boolean isList_ ;
6030      /**
6031       * <code>required bool is_list = 4;</code>
6032       */
6033      public boolean hasIsList() {
6034        return ((bitField0_ & 0x00000008) == 0x00000008);
6035      }
6036      /**
6037       * <code>required bool is_list = 4;</code>
6038       */
6039      public boolean getIsList() {
6040        return isList_;
6041      }
6042      /**
6043       * <code>required bool is_list = 4;</code>
6044       */
6045      public Builder setIsList(boolean value) {
6046        bitField0_ |= 0x00000008;
6047        isList_ = value;
6048        onChanged();
6049        return this;
6050      }
6051      /**
6052       * <code>required bool is_list = 4;</code>
6053       */
6054      public Builder clearIsList() {
6055        bitField0_ = (bitField0_ & ~0x00000008);
6056        isList_ = false;
6057        onChanged();
6058        return this;
6059      }
6060
6061      // optional string documentation = 5;
6062      private java.lang.Object documentation_ = "";
6063      /**
6064       * <code>optional string documentation = 5;</code>
6065       *
6066       * <pre>
6067       *
6068       *An optional human readable documentation string describing the purpose
6069       *of this NamedParameter.
6070       * </pre>
6071       */
6072      public boolean hasDocumentation() {
6073        return ((bitField0_ & 0x00000010) == 0x00000010);
6074      }
6075      /**
6076       * <code>optional string documentation = 5;</code>
6077       *
6078       * <pre>
6079       *
6080       *An optional human readable documentation string describing the purpose
6081       *of this NamedParameter.
6082       * </pre>
6083       */
6084      public java.lang.String getDocumentation() {
6085        java.lang.Object ref = documentation_;
6086        if (!(ref instanceof java.lang.String)) {
6087          java.lang.String s = ((com.google.protobuf.ByteString) ref)
6088              .toStringUtf8();
6089          documentation_ = s;
6090          return s;
6091        } else {
6092          return (java.lang.String) ref;
6093        }
6094      }
6095      /**
6096       * <code>optional string documentation = 5;</code>
6097       *
6098       * <pre>
6099       *
6100       *An optional human readable documentation string describing the purpose
6101       *of this NamedParameter.
6102       * </pre>
6103       */
6104      public com.google.protobuf.ByteString
6105          getDocumentationBytes() {
6106        java.lang.Object ref = documentation_;
6107        if (ref instanceof String) {
6108          com.google.protobuf.ByteString b = 
6109              com.google.protobuf.ByteString.copyFromUtf8(
6110                  (java.lang.String) ref);
6111          documentation_ = b;
6112          return b;
6113        } else {
6114          return (com.google.protobuf.ByteString) ref;
6115        }
6116      }
6117      /**
6118       * <code>optional string documentation = 5;</code>
6119       *
6120       * <pre>
6121       *
6122       *An optional human readable documentation string describing the purpose
6123       *of this NamedParameter.
6124       * </pre>
6125       */
6126      public Builder setDocumentation(
6127          java.lang.String value) {
6128        if (value == null) {
6129    throw new NullPointerException();
6130  }
6131  bitField0_ |= 0x00000010;
6132        documentation_ = value;
6133        onChanged();
6134        return this;
6135      }
6136      /**
6137       * <code>optional string documentation = 5;</code>
6138       *
6139       * <pre>
6140       *
6141       *An optional human readable documentation string describing the purpose
6142       *of this NamedParameter.
6143       * </pre>
6144       */
6145      public Builder clearDocumentation() {
6146        bitField0_ = (bitField0_ & ~0x00000010);
6147        documentation_ = getDefaultInstance().getDocumentation();
6148        onChanged();
6149        return this;
6150      }
6151      /**
6152       * <code>optional string documentation = 5;</code>
6153       *
6154       * <pre>
6155       *
6156       *An optional human readable documentation string describing the purpose
6157       *of this NamedParameter.
6158       * </pre>
6159       */
6160      public Builder setDocumentationBytes(
6161          com.google.protobuf.ByteString value) {
6162        if (value == null) {
6163    throw new NullPointerException();
6164  }
6165  bitField0_ |= 0x00000010;
6166        documentation_ = value;
6167        onChanged();
6168        return this;
6169      }
6170
6171      // optional string short_name = 6;
6172      private java.lang.Object shortName_ = "";
6173      /**
6174       * <code>optional string short_name = 6;</code>
6175       *
6176       * <pre>
6177       *
6178       *A shorter name for this parameter.  This is used for command line
6179       *processing. (So utilities that see --short_name=xxx will set this
6180       *NamedParameter to "xxx", for example).  
6181       * </pre>
6182       */
6183      public boolean hasShortName() {
6184        return ((bitField0_ & 0x00000020) == 0x00000020);
6185      }
6186      /**
6187       * <code>optional string short_name = 6;</code>
6188       *
6189       * <pre>
6190       *
6191       *A shorter name for this parameter.  This is used for command line
6192       *processing. (So utilities that see --short_name=xxx will set this
6193       *NamedParameter to "xxx", for example).  
6194       * </pre>
6195       */
6196      public java.lang.String getShortName() {
6197        java.lang.Object ref = shortName_;
6198        if (!(ref instanceof java.lang.String)) {
6199          java.lang.String s = ((com.google.protobuf.ByteString) ref)
6200              .toStringUtf8();
6201          shortName_ = s;
6202          return s;
6203        } else {
6204          return (java.lang.String) ref;
6205        }
6206      }
6207      /**
6208       * <code>optional string short_name = 6;</code>
6209       *
6210       * <pre>
6211       *
6212       *A shorter name for this parameter.  This is used for command line
6213       *processing. (So utilities that see --short_name=xxx will set this
6214       *NamedParameter to "xxx", for example).  
6215       * </pre>
6216       */
6217      public com.google.protobuf.ByteString
6218          getShortNameBytes() {
6219        java.lang.Object ref = shortName_;
6220        if (ref instanceof String) {
6221          com.google.protobuf.ByteString b = 
6222              com.google.protobuf.ByteString.copyFromUtf8(
6223                  (java.lang.String) ref);
6224          shortName_ = b;
6225          return b;
6226        } else {
6227          return (com.google.protobuf.ByteString) ref;
6228        }
6229      }
6230      /**
6231       * <code>optional string short_name = 6;</code>
6232       *
6233       * <pre>
6234       *
6235       *A shorter name for this parameter.  This is used for command line
6236       *processing. (So utilities that see --short_name=xxx will set this
6237       *NamedParameter to "xxx", for example).  
6238       * </pre>
6239       */
6240      public Builder setShortName(
6241          java.lang.String value) {
6242        if (value == null) {
6243    throw new NullPointerException();
6244  }
6245  bitField0_ |= 0x00000020;
6246        shortName_ = value;
6247        onChanged();
6248        return this;
6249      }
6250      /**
6251       * <code>optional string short_name = 6;</code>
6252       *
6253       * <pre>
6254       *
6255       *A shorter name for this parameter.  This is used for command line
6256       *processing. (So utilities that see --short_name=xxx will set this
6257       *NamedParameter to "xxx", for example).  
6258       * </pre>
6259       */
6260      public Builder clearShortName() {
6261        bitField0_ = (bitField0_ & ~0x00000020);
6262        shortName_ = getDefaultInstance().getShortName();
6263        onChanged();
6264        return this;
6265      }
6266      /**
6267       * <code>optional string short_name = 6;</code>
6268       *
6269       * <pre>
6270       *
6271       *A shorter name for this parameter.  This is used for command line
6272       *processing. (So utilities that see --short_name=xxx will set this
6273       *NamedParameter to "xxx", for example).  
6274       * </pre>
6275       */
6276      public Builder setShortNameBytes(
6277          com.google.protobuf.ByteString value) {
6278        if (value == null) {
6279    throw new NullPointerException();
6280  }
6281  bitField0_ |= 0x00000020;
6282        shortName_ = value;
6283        onChanged();
6284        return this;
6285      }
6286
6287      // repeated string instance_default = 7;
6288      private com.google.protobuf.LazyStringList instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
6289      private void ensureInstanceDefaultIsMutable() {
6290        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
6291          instanceDefault_ = new com.google.protobuf.LazyStringArrayList(instanceDefault_);
6292          bitField0_ |= 0x00000040;
6293         }
6294      }
6295      /**
6296       * <code>repeated string instance_default = 7;</code>
6297       *
6298       * <pre>
6299       * calling this "default_instance" breaks protoc.
6300       * </pre>
6301       */
6302      public java.util.List<java.lang.String>
6303          getInstanceDefaultList() {
6304        return java.util.Collections.unmodifiableList(instanceDefault_);
6305      }
6306      /**
6307       * <code>repeated string instance_default = 7;</code>
6308       *
6309       * <pre>
6310       * calling this "default_instance" breaks protoc.
6311       * </pre>
6312       */
6313      public int getInstanceDefaultCount() {
6314        return instanceDefault_.size();
6315      }
6316      /**
6317       * <code>repeated string instance_default = 7;</code>
6318       *
6319       * <pre>
6320       * calling this "default_instance" breaks protoc.
6321       * </pre>
6322       */
6323      public java.lang.String getInstanceDefault(int index) {
6324        return instanceDefault_.get(index);
6325      }
6326      /**
6327       * <code>repeated string instance_default = 7;</code>
6328       *
6329       * <pre>
6330       * calling this "default_instance" breaks protoc.
6331       * </pre>
6332       */
6333      public com.google.protobuf.ByteString
6334          getInstanceDefaultBytes(int index) {
6335        return instanceDefault_.getByteString(index);
6336      }
6337      /**
6338       * <code>repeated string instance_default = 7;</code>
6339       *
6340       * <pre>
6341       * calling this "default_instance" breaks protoc.
6342       * </pre>
6343       */
6344      public Builder setInstanceDefault(
6345          int index, java.lang.String value) {
6346        if (value == null) {
6347    throw new NullPointerException();
6348  }
6349  ensureInstanceDefaultIsMutable();
6350        instanceDefault_.set(index, value);
6351        onChanged();
6352        return this;
6353      }
6354      /**
6355       * <code>repeated string instance_default = 7;</code>
6356       *
6357       * <pre>
6358       * calling this "default_instance" breaks protoc.
6359       * </pre>
6360       */
6361      public Builder addInstanceDefault(
6362          java.lang.String value) {
6363        if (value == null) {
6364    throw new NullPointerException();
6365  }
6366  ensureInstanceDefaultIsMutable();
6367        instanceDefault_.add(value);
6368        onChanged();
6369        return this;
6370      }
6371      /**
6372       * <code>repeated string instance_default = 7;</code>
6373       *
6374       * <pre>
6375       * calling this "default_instance" breaks protoc.
6376       * </pre>
6377       */
6378      public Builder addAllInstanceDefault(
6379          java.lang.Iterable<java.lang.String> values) {
6380        ensureInstanceDefaultIsMutable();
6381        super.addAll(values, instanceDefault_);
6382        onChanged();
6383        return this;
6384      }
6385      /**
6386       * <code>repeated string instance_default = 7;</code>
6387       *
6388       * <pre>
6389       * calling this "default_instance" breaks protoc.
6390       * </pre>
6391       */
6392      public Builder clearInstanceDefault() {
6393        instanceDefault_ = com.google.protobuf.LazyStringArrayList.EMPTY;
6394        bitField0_ = (bitField0_ & ~0x00000040);
6395        onChanged();
6396        return this;
6397      }
6398      /**
6399       * <code>repeated string instance_default = 7;</code>
6400       *
6401       * <pre>
6402       * calling this "default_instance" breaks protoc.
6403       * </pre>
6404       */
6405      public Builder addInstanceDefaultBytes(
6406          com.google.protobuf.ByteString value) {
6407        if (value == null) {
6408    throw new NullPointerException();
6409  }
6410  ensureInstanceDefaultIsMutable();
6411        instanceDefault_.add(value);
6412        onChanged();
6413        return this;
6414      }
6415
6416      // optional string alias_name = 8;
6417      private java.lang.Object aliasName_ = "";
6418      /**
6419       * <code>optional string alias_name = 8;</code>
6420       *
6421       * <pre>
6422       *
6423       *An alias of the named parameter
6424       * </pre>
6425       */
6426      public boolean hasAliasName() {
6427        return ((bitField0_ & 0x00000080) == 0x00000080);
6428      }
6429      /**
6430       * <code>optional string alias_name = 8;</code>
6431       *
6432       * <pre>
6433       *
6434       *An alias of the named parameter
6435       * </pre>
6436       */
6437      public java.lang.String getAliasName() {
6438        java.lang.Object ref = aliasName_;
6439        if (!(ref instanceof java.lang.String)) {
6440          java.lang.String s = ((com.google.protobuf.ByteString) ref)
6441              .toStringUtf8();
6442          aliasName_ = s;
6443          return s;
6444        } else {
6445          return (java.lang.String) ref;
6446        }
6447      }
6448      /**
6449       * <code>optional string alias_name = 8;</code>
6450       *
6451       * <pre>
6452       *
6453       *An alias of the named parameter
6454       * </pre>
6455       */
6456      public com.google.protobuf.ByteString
6457          getAliasNameBytes() {
6458        java.lang.Object ref = aliasName_;
6459        if (ref instanceof String) {
6460          com.google.protobuf.ByteString b = 
6461              com.google.protobuf.ByteString.copyFromUtf8(
6462                  (java.lang.String) ref);
6463          aliasName_ = b;
6464          return b;
6465        } else {
6466          return (com.google.protobuf.ByteString) ref;
6467        }
6468      }
6469      /**
6470       * <code>optional string alias_name = 8;</code>
6471       *
6472       * <pre>
6473       *
6474       *An alias of the named parameter
6475       * </pre>
6476       */
6477      public Builder setAliasName(
6478          java.lang.String value) {
6479        if (value == null) {
6480    throw new NullPointerException();
6481  }
6482  bitField0_ |= 0x00000080;
6483        aliasName_ = value;
6484        onChanged();
6485        return this;
6486      }
6487      /**
6488       * <code>optional string alias_name = 8;</code>
6489       *
6490       * <pre>
6491       *
6492       *An alias of the named parameter
6493       * </pre>
6494       */
6495      public Builder clearAliasName() {
6496        bitField0_ = (bitField0_ & ~0x00000080);
6497        aliasName_ = getDefaultInstance().getAliasName();
6498        onChanged();
6499        return this;
6500      }
6501      /**
6502       * <code>optional string alias_name = 8;</code>
6503       *
6504       * <pre>
6505       *
6506       *An alias of the named parameter
6507       * </pre>
6508       */
6509      public Builder setAliasNameBytes(
6510          com.google.protobuf.ByteString value) {
6511        if (value == null) {
6512    throw new NullPointerException();
6513  }
6514  bitField0_ |= 0x00000080;
6515        aliasName_ = value;
6516        onChanged();
6517        return this;
6518      }
6519
6520      // optional string alias_language = 9;
6521      private java.lang.Object aliasLanguage_ = "";
6522      /**
6523       * <code>optional string alias_language = 9;</code>
6524       *
6525       * <pre>
6526       *
6527       *An alias language of the named parameter
6528       * </pre>
6529       */
6530      public boolean hasAliasLanguage() {
6531        return ((bitField0_ & 0x00000100) == 0x00000100);
6532      }
6533      /**
6534       * <code>optional string alias_language = 9;</code>
6535       *
6536       * <pre>
6537       *
6538       *An alias language of the named parameter
6539       * </pre>
6540       */
6541      public java.lang.String getAliasLanguage() {
6542        java.lang.Object ref = aliasLanguage_;
6543        if (!(ref instanceof java.lang.String)) {
6544          java.lang.String s = ((com.google.protobuf.ByteString) ref)
6545              .toStringUtf8();
6546          aliasLanguage_ = s;
6547          return s;
6548        } else {
6549          return (java.lang.String) ref;
6550        }
6551      }
6552      /**
6553       * <code>optional string alias_language = 9;</code>
6554       *
6555       * <pre>
6556       *
6557       *An alias language of the named parameter
6558       * </pre>
6559       */
6560      public com.google.protobuf.ByteString
6561          getAliasLanguageBytes() {
6562        java.lang.Object ref = aliasLanguage_;
6563        if (ref instanceof String) {
6564          com.google.protobuf.ByteString b = 
6565              com.google.protobuf.ByteString.copyFromUtf8(
6566                  (java.lang.String) ref);
6567          aliasLanguage_ = b;
6568          return b;
6569        } else {
6570          return (com.google.protobuf.ByteString) ref;
6571        }
6572      }
6573      /**
6574       * <code>optional string alias_language = 9;</code>
6575       *
6576       * <pre>
6577       *
6578       *An alias language of the named parameter
6579       * </pre>
6580       */
6581      public Builder setAliasLanguage(
6582          java.lang.String value) {
6583        if (value == null) {
6584    throw new NullPointerException();
6585  }
6586  bitField0_ |= 0x00000100;
6587        aliasLanguage_ = value;
6588        onChanged();
6589        return this;
6590      }
6591      /**
6592       * <code>optional string alias_language = 9;</code>
6593       *
6594       * <pre>
6595       *
6596       *An alias language of the named parameter
6597       * </pre>
6598       */
6599      public Builder clearAliasLanguage() {
6600        bitField0_ = (bitField0_ & ~0x00000100);
6601        aliasLanguage_ = getDefaultInstance().getAliasLanguage();
6602        onChanged();
6603        return this;
6604      }
6605      /**
6606       * <code>optional string alias_language = 9;</code>
6607       *
6608       * <pre>
6609       *
6610       *An alias language of the named parameter
6611       * </pre>
6612       */
6613      public Builder setAliasLanguageBytes(
6614          com.google.protobuf.ByteString value) {
6615        if (value == null) {
6616    throw new NullPointerException();
6617  }
6618  bitField0_ |= 0x00000100;
6619        aliasLanguage_ = value;
6620        onChanged();
6621        return this;
6622      }
6623
6624      // @@protoc_insertion_point(builder_scope:NamedParameterNode)
6625    }
6626
6627    static {
6628      defaultInstance = new NamedParameterNode(true);
6629      defaultInstance.initFields();
6630    }
6631
6632    // @@protoc_insertion_point(class_scope:NamedParameterNode)
6633  }
6634
6635  public interface PackageNodeOrBuilder
6636      extends com.google.protobuf.MessageOrBuilder {
6637  }
6638  /**
6639   * Protobuf type {@code PackageNode}
6640   *
6641   * <pre>
6642   *
6643   *Intentionally left blank.  Packages don't have any interesting
6644   *attributes except their names and children.
6645   * </pre>
6646   */
6647  public static final class PackageNode extends
6648      com.google.protobuf.GeneratedMessage
6649      implements PackageNodeOrBuilder {
6650    // Use PackageNode.newBuilder() to construct.
6651    private PackageNode(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
6652      super(builder);
6653      this.unknownFields = builder.getUnknownFields();
6654    }
6655    private PackageNode(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
6656
6657    private static final PackageNode defaultInstance;
6658    public static PackageNode getDefaultInstance() {
6659      return defaultInstance;
6660    }
6661
6662    public PackageNode getDefaultInstanceForType() {
6663      return defaultInstance;
6664    }
6665
6666    private final com.google.protobuf.UnknownFieldSet unknownFields;
6667    @java.lang.Override
6668    public final com.google.protobuf.UnknownFieldSet
6669        getUnknownFields() {
6670      return this.unknownFields;
6671    }
6672    private PackageNode(
6673        com.google.protobuf.CodedInputStream input,
6674        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6675        throws com.google.protobuf.InvalidProtocolBufferException {
6676      initFields();
6677      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
6678          com.google.protobuf.UnknownFieldSet.newBuilder();
6679      try {
6680        boolean done = false;
6681        while (!done) {
6682          int tag = input.readTag();
6683          switch (tag) {
6684            case 0:
6685              done = true;
6686              break;
6687            default: {
6688              if (!parseUnknownField(input, unknownFields,
6689                                     extensionRegistry, tag)) {
6690                done = true;
6691              }
6692              break;
6693            }
6694          }
6695        }
6696      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
6697        throw e.setUnfinishedMessage(this);
6698      } catch (java.io.IOException e) {
6699        throw new com.google.protobuf.InvalidProtocolBufferException(
6700            e.getMessage()).setUnfinishedMessage(this);
6701      } finally {
6702        this.unknownFields = unknownFields.build();
6703        makeExtensionsImmutable();
6704      }
6705    }
6706    public static final com.google.protobuf.Descriptors.Descriptor
6707        getDescriptor() {
6708      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6709    }
6710
6711    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6712        internalGetFieldAccessorTable() {
6713      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_fieldAccessorTable
6714          .ensureFieldAccessorsInitialized(
6715              org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder.class);
6716    }
6717
6718    public static com.google.protobuf.Parser<PackageNode> PARSER =
6719        new com.google.protobuf.AbstractParser<PackageNode>() {
6720      public PackageNode parsePartialFrom(
6721          com.google.protobuf.CodedInputStream input,
6722          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6723          throws com.google.protobuf.InvalidProtocolBufferException {
6724        return new PackageNode(input, extensionRegistry);
6725      }
6726    };
6727
6728    @java.lang.Override
6729    public com.google.protobuf.Parser<PackageNode> getParserForType() {
6730      return PARSER;
6731    }
6732
6733    private void initFields() {
6734    }
6735    private byte memoizedIsInitialized = -1;
6736    public final boolean isInitialized() {
6737      byte isInitialized = memoizedIsInitialized;
6738      if (isInitialized != -1) return isInitialized == 1;
6739
6740      memoizedIsInitialized = 1;
6741      return true;
6742    }
6743
6744    public void writeTo(com.google.protobuf.CodedOutputStream output)
6745                        throws java.io.IOException {
6746      getSerializedSize();
6747      getUnknownFields().writeTo(output);
6748    }
6749
6750    private int memoizedSerializedSize = -1;
6751    public int getSerializedSize() {
6752      int size = memoizedSerializedSize;
6753      if (size != -1) return size;
6754
6755      size = 0;
6756      size += getUnknownFields().getSerializedSize();
6757      memoizedSerializedSize = size;
6758      return size;
6759    }
6760
6761    private static final long serialVersionUID = 0L;
6762    @java.lang.Override
6763    protected java.lang.Object writeReplace()
6764        throws java.io.ObjectStreamException {
6765      return super.writeReplace();
6766    }
6767
6768    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6769        com.google.protobuf.ByteString data)
6770        throws com.google.protobuf.InvalidProtocolBufferException {
6771      return PARSER.parseFrom(data);
6772    }
6773    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6774        com.google.protobuf.ByteString data,
6775        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6776        throws com.google.protobuf.InvalidProtocolBufferException {
6777      return PARSER.parseFrom(data, extensionRegistry);
6778    }
6779    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(byte[] data)
6780        throws com.google.protobuf.InvalidProtocolBufferException {
6781      return PARSER.parseFrom(data);
6782    }
6783    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6784        byte[] data,
6785        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6786        throws com.google.protobuf.InvalidProtocolBufferException {
6787      return PARSER.parseFrom(data, extensionRegistry);
6788    }
6789    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(java.io.InputStream input)
6790        throws java.io.IOException {
6791      return PARSER.parseFrom(input);
6792    }
6793    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6794        java.io.InputStream input,
6795        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6796        throws java.io.IOException {
6797      return PARSER.parseFrom(input, extensionRegistry);
6798    }
6799    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseDelimitedFrom(java.io.InputStream input)
6800        throws java.io.IOException {
6801      return PARSER.parseDelimitedFrom(input);
6802    }
6803    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseDelimitedFrom(
6804        java.io.InputStream input,
6805        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6806        throws java.io.IOException {
6807      return PARSER.parseDelimitedFrom(input, extensionRegistry);
6808    }
6809    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6810        com.google.protobuf.CodedInputStream input)
6811        throws java.io.IOException {
6812      return PARSER.parseFrom(input);
6813    }
6814    public static org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parseFrom(
6815        com.google.protobuf.CodedInputStream input,
6816        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6817        throws java.io.IOException {
6818      return PARSER.parseFrom(input, extensionRegistry);
6819    }
6820
6821    public static Builder newBuilder() { return Builder.create(); }
6822    public Builder newBuilderForType() { return newBuilder(); }
6823    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode prototype) {
6824      return newBuilder().mergeFrom(prototype);
6825    }
6826    public Builder toBuilder() { return newBuilder(this); }
6827
6828    @java.lang.Override
6829    protected Builder newBuilderForType(
6830        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6831      Builder builder = new Builder(parent);
6832      return builder;
6833    }
6834    /**
6835     * Protobuf type {@code PackageNode}
6836     *
6837     * <pre>
6838     *
6839     *Intentionally left blank.  Packages don't have any interesting
6840     *attributes except their names and children.
6841     * </pre>
6842     */
6843    public static final class Builder extends
6844        com.google.protobuf.GeneratedMessage.Builder<Builder>
6845       implements org.apache.reef.tang.proto.ClassHierarchyProto.PackageNodeOrBuilder {
6846      public static final com.google.protobuf.Descriptors.Descriptor
6847          getDescriptor() {
6848        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6849      }
6850
6851      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
6852          internalGetFieldAccessorTable() {
6853        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_fieldAccessorTable
6854            .ensureFieldAccessorsInitialized(
6855                org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.class, org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.Builder.class);
6856      }
6857
6858      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.newBuilder()
6859      private Builder() {
6860        maybeForceBuilderInitialization();
6861      }
6862
6863      private Builder(
6864          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
6865        super(parent);
6866        maybeForceBuilderInitialization();
6867      }
6868      private void maybeForceBuilderInitialization() {
6869        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
6870        }
6871      }
6872      private static Builder create() {
6873        return new Builder();
6874      }
6875
6876      public Builder clear() {
6877        super.clear();
6878        return this;
6879      }
6880
6881      public Builder clone() {
6882        return create().mergeFrom(buildPartial());
6883      }
6884
6885      public com.google.protobuf.Descriptors.Descriptor
6886          getDescriptorForType() {
6887        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_PackageNode_descriptor;
6888      }
6889
6890      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode getDefaultInstanceForType() {
6891        return org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance();
6892      }
6893
6894      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode build() {
6895        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode result = buildPartial();
6896        if (!result.isInitialized()) {
6897          throw newUninitializedMessageException(result);
6898        }
6899        return result;
6900      }
6901
6902      public org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode buildPartial() {
6903        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode result = new org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode(this);
6904        onBuilt();
6905        return result;
6906      }
6907
6908      public Builder mergeFrom(com.google.protobuf.Message other) {
6909        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode) {
6910          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode)other);
6911        } else {
6912          super.mergeFrom(other);
6913          return this;
6914        }
6915      }
6916
6917      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode other) {
6918        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode.getDefaultInstance()) return this;
6919        this.mergeUnknownFields(other.getUnknownFields());
6920        return this;
6921      }
6922
6923      public final boolean isInitialized() {
6924        return true;
6925      }
6926
6927      public Builder mergeFrom(
6928          com.google.protobuf.CodedInputStream input,
6929          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
6930          throws java.io.IOException {
6931        org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode parsedMessage = null;
6932        try {
6933          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
6934        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
6935          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.PackageNode) e.getUnfinishedMessage();
6936          throw e;
6937        } finally {
6938          if (parsedMessage != null) {
6939            mergeFrom(parsedMessage);
6940          }
6941        }
6942        return this;
6943      }
6944
6945      // @@protoc_insertion_point(builder_scope:PackageNode)
6946    }
6947
6948    static {
6949      defaultInstance = new PackageNode(true);
6950      defaultInstance.initFields();
6951    }
6952
6953    // @@protoc_insertion_point(class_scope:PackageNode)
6954  }
6955
6956  public interface ConstructorDefOrBuilder
6957      extends com.google.protobuf.MessageOrBuilder {
6958
6959    // required string full_class_name = 1;
6960    /**
6961     * <code>required string full_class_name = 1;</code>
6962     *
6963     * <pre>
6964     *
6965     *The full name of the class this constructor returns.
6966     * </pre>
6967     */
6968    boolean hasFullClassName();
6969    /**
6970     * <code>required string full_class_name = 1;</code>
6971     *
6972     * <pre>
6973     *
6974     *The full name of the class this constructor returns.
6975     * </pre>
6976     */
6977    java.lang.String getFullClassName();
6978    /**
6979     * <code>required string full_class_name = 1;</code>
6980     *
6981     * <pre>
6982     *
6983     *The full name of the class this constructor returns.
6984     * </pre>
6985     */
6986    com.google.protobuf.ByteString
6987        getFullClassNameBytes();
6988
6989    // repeated .ConstructorArg args = 2;
6990    /**
6991     * <code>repeated .ConstructorArg args = 2;</code>
6992     *
6993     * <pre>
6994     *
6995     *A (potentially empty) list of arguments required by this constructor.
6996     * </pre>
6997     */
6998    java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> 
6999        getArgsList();
7000    /**
7001     * <code>repeated .ConstructorArg args = 2;</code>
7002     *
7003     * <pre>
7004     *
7005     *A (potentially empty) list of arguments required by this constructor.
7006     * </pre>
7007     */
7008    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index);
7009    /**
7010     * <code>repeated .ConstructorArg args = 2;</code>
7011     *
7012     * <pre>
7013     *
7014     *A (potentially empty) list of arguments required by this constructor.
7015     * </pre>
7016     */
7017    int getArgsCount();
7018    /**
7019     * <code>repeated .ConstructorArg args = 2;</code>
7020     *
7021     * <pre>
7022     *
7023     *A (potentially empty) list of arguments required by this constructor.
7024     * </pre>
7025     */
7026    java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7027        getArgsOrBuilderList();
7028    /**
7029     * <code>repeated .ConstructorArg args = 2;</code>
7030     *
7031     * <pre>
7032     *
7033     *A (potentially empty) list of arguments required by this constructor.
7034     * </pre>
7035     */
7036    org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
7037        int index);
7038  }
7039  /**
7040   * Protobuf type {@code ConstructorDef}
7041   */
7042  public static final class ConstructorDef extends
7043      com.google.protobuf.GeneratedMessage
7044      implements ConstructorDefOrBuilder {
7045    // Use ConstructorDef.newBuilder() to construct.
7046    private ConstructorDef(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
7047      super(builder);
7048      this.unknownFields = builder.getUnknownFields();
7049    }
7050    private ConstructorDef(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
7051
7052    private static final ConstructorDef defaultInstance;
7053    public static ConstructorDef getDefaultInstance() {
7054      return defaultInstance;
7055    }
7056
7057    public ConstructorDef getDefaultInstanceForType() {
7058      return defaultInstance;
7059    }
7060
7061    private final com.google.protobuf.UnknownFieldSet unknownFields;
7062    @java.lang.Override
7063    public final com.google.protobuf.UnknownFieldSet
7064        getUnknownFields() {
7065      return this.unknownFields;
7066    }
7067    private ConstructorDef(
7068        com.google.protobuf.CodedInputStream input,
7069        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7070        throws com.google.protobuf.InvalidProtocolBufferException {
7071      initFields();
7072      int mutable_bitField0_ = 0;
7073      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
7074          com.google.protobuf.UnknownFieldSet.newBuilder();
7075      try {
7076        boolean done = false;
7077        while (!done) {
7078          int tag = input.readTag();
7079          switch (tag) {
7080            case 0:
7081              done = true;
7082              break;
7083            default: {
7084              if (!parseUnknownField(input, unknownFields,
7085                                     extensionRegistry, tag)) {
7086                done = true;
7087              }
7088              break;
7089            }
7090            case 10: {
7091              bitField0_ |= 0x00000001;
7092              fullClassName_ = input.readBytes();
7093              break;
7094            }
7095            case 18: {
7096              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
7097                args_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg>();
7098                mutable_bitField0_ |= 0x00000002;
7099              }
7100              args_.add(input.readMessage(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.PARSER, extensionRegistry));
7101              break;
7102            }
7103          }
7104        }
7105      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
7106        throw e.setUnfinishedMessage(this);
7107      } catch (java.io.IOException e) {
7108        throw new com.google.protobuf.InvalidProtocolBufferException(
7109            e.getMessage()).setUnfinishedMessage(this);
7110      } finally {
7111        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
7112          args_ = java.util.Collections.unmodifiableList(args_);
7113        }
7114        this.unknownFields = unknownFields.build();
7115        makeExtensionsImmutable();
7116      }
7117    }
7118    public static final com.google.protobuf.Descriptors.Descriptor
7119        getDescriptor() {
7120      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
7121    }
7122
7123    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
7124        internalGetFieldAccessorTable() {
7125      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_fieldAccessorTable
7126          .ensureFieldAccessorsInitialized(
7127              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder.class);
7128    }
7129
7130    public static com.google.protobuf.Parser<ConstructorDef> PARSER =
7131        new com.google.protobuf.AbstractParser<ConstructorDef>() {
7132      public ConstructorDef parsePartialFrom(
7133          com.google.protobuf.CodedInputStream input,
7134          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7135          throws com.google.protobuf.InvalidProtocolBufferException {
7136        return new ConstructorDef(input, extensionRegistry);
7137      }
7138    };
7139
7140    @java.lang.Override
7141    public com.google.protobuf.Parser<ConstructorDef> getParserForType() {
7142      return PARSER;
7143    }
7144
7145    private int bitField0_;
7146    // required string full_class_name = 1;
7147    public static final int FULL_CLASS_NAME_FIELD_NUMBER = 1;
7148    private java.lang.Object fullClassName_;
7149    /**
7150     * <code>required string full_class_name = 1;</code>
7151     *
7152     * <pre>
7153     *
7154     *The full name of the class this constructor returns.
7155     * </pre>
7156     */
7157    public boolean hasFullClassName() {
7158      return ((bitField0_ & 0x00000001) == 0x00000001);
7159    }
7160    /**
7161     * <code>required string full_class_name = 1;</code>
7162     *
7163     * <pre>
7164     *
7165     *The full name of the class this constructor returns.
7166     * </pre>
7167     */
7168    public java.lang.String getFullClassName() {
7169      java.lang.Object ref = fullClassName_;
7170      if (ref instanceof java.lang.String) {
7171        return (java.lang.String) ref;
7172      } else {
7173        com.google.protobuf.ByteString bs = 
7174            (com.google.protobuf.ByteString) ref;
7175        java.lang.String s = bs.toStringUtf8();
7176        if (bs.isValidUtf8()) {
7177          fullClassName_ = s;
7178        }
7179        return s;
7180      }
7181    }
7182    /**
7183     * <code>required string full_class_name = 1;</code>
7184     *
7185     * <pre>
7186     *
7187     *The full name of the class this constructor returns.
7188     * </pre>
7189     */
7190    public com.google.protobuf.ByteString
7191        getFullClassNameBytes() {
7192      java.lang.Object ref = fullClassName_;
7193      if (ref instanceof java.lang.String) {
7194        com.google.protobuf.ByteString b = 
7195            com.google.protobuf.ByteString.copyFromUtf8(
7196                (java.lang.String) ref);
7197        fullClassName_ = b;
7198        return b;
7199      } else {
7200        return (com.google.protobuf.ByteString) ref;
7201      }
7202    }
7203
7204    // repeated .ConstructorArg args = 2;
7205    public static final int ARGS_FIELD_NUMBER = 2;
7206    private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> args_;
7207    /**
7208     * <code>repeated .ConstructorArg args = 2;</code>
7209     *
7210     * <pre>
7211     *
7212     *A (potentially empty) list of arguments required by this constructor.
7213     * </pre>
7214     */
7215    public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> getArgsList() {
7216      return args_;
7217    }
7218    /**
7219     * <code>repeated .ConstructorArg args = 2;</code>
7220     *
7221     * <pre>
7222     *
7223     *A (potentially empty) list of arguments required by this constructor.
7224     * </pre>
7225     */
7226    public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7227        getArgsOrBuilderList() {
7228      return args_;
7229    }
7230    /**
7231     * <code>repeated .ConstructorArg args = 2;</code>
7232     *
7233     * <pre>
7234     *
7235     *A (potentially empty) list of arguments required by this constructor.
7236     * </pre>
7237     */
7238    public int getArgsCount() {
7239      return args_.size();
7240    }
7241    /**
7242     * <code>repeated .ConstructorArg args = 2;</code>
7243     *
7244     * <pre>
7245     *
7246     *A (potentially empty) list of arguments required by this constructor.
7247     * </pre>
7248     */
7249    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index) {
7250      return args_.get(index);
7251    }
7252    /**
7253     * <code>repeated .ConstructorArg args = 2;</code>
7254     *
7255     * <pre>
7256     *
7257     *A (potentially empty) list of arguments required by this constructor.
7258     * </pre>
7259     */
7260    public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
7261        int index) {
7262      return args_.get(index);
7263    }
7264
7265    private void initFields() {
7266      fullClassName_ = "";
7267      args_ = java.util.Collections.emptyList();
7268    }
7269    private byte memoizedIsInitialized = -1;
7270    public final boolean isInitialized() {
7271      byte isInitialized = memoizedIsInitialized;
7272      if (isInitialized != -1) return isInitialized == 1;
7273
7274      if (!hasFullClassName()) {
7275        memoizedIsInitialized = 0;
7276        return false;
7277      }
7278      for (int i = 0; i < getArgsCount(); i++) {
7279        if (!getArgs(i).isInitialized()) {
7280          memoizedIsInitialized = 0;
7281          return false;
7282        }
7283      }
7284      memoizedIsInitialized = 1;
7285      return true;
7286    }
7287
7288    public void writeTo(com.google.protobuf.CodedOutputStream output)
7289                        throws java.io.IOException {
7290      getSerializedSize();
7291      if (((bitField0_ & 0x00000001) == 0x00000001)) {
7292        output.writeBytes(1, getFullClassNameBytes());
7293      }
7294      for (int i = 0; i < args_.size(); i++) {
7295        output.writeMessage(2, args_.get(i));
7296      }
7297      getUnknownFields().writeTo(output);
7298    }
7299
7300    private int memoizedSerializedSize = -1;
7301    public int getSerializedSize() {
7302      int size = memoizedSerializedSize;
7303      if (size != -1) return size;
7304
7305      size = 0;
7306      if (((bitField0_ & 0x00000001) == 0x00000001)) {
7307        size += com.google.protobuf.CodedOutputStream
7308          .computeBytesSize(1, getFullClassNameBytes());
7309      }
7310      for (int i = 0; i < args_.size(); i++) {
7311        size += com.google.protobuf.CodedOutputStream
7312          .computeMessageSize(2, args_.get(i));
7313      }
7314      size += getUnknownFields().getSerializedSize();
7315      memoizedSerializedSize = size;
7316      return size;
7317    }
7318
7319    private static final long serialVersionUID = 0L;
7320    @java.lang.Override
7321    protected java.lang.Object writeReplace()
7322        throws java.io.ObjectStreamException {
7323      return super.writeReplace();
7324    }
7325
7326    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7327        com.google.protobuf.ByteString data)
7328        throws com.google.protobuf.InvalidProtocolBufferException {
7329      return PARSER.parseFrom(data);
7330    }
7331    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7332        com.google.protobuf.ByteString data,
7333        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7334        throws com.google.protobuf.InvalidProtocolBufferException {
7335      return PARSER.parseFrom(data, extensionRegistry);
7336    }
7337    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(byte[] data)
7338        throws com.google.protobuf.InvalidProtocolBufferException {
7339      return PARSER.parseFrom(data);
7340    }
7341    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7342        byte[] data,
7343        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7344        throws com.google.protobuf.InvalidProtocolBufferException {
7345      return PARSER.parseFrom(data, extensionRegistry);
7346    }
7347    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(java.io.InputStream input)
7348        throws java.io.IOException {
7349      return PARSER.parseFrom(input);
7350    }
7351    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7352        java.io.InputStream input,
7353        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7354        throws java.io.IOException {
7355      return PARSER.parseFrom(input, extensionRegistry);
7356    }
7357    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseDelimitedFrom(java.io.InputStream input)
7358        throws java.io.IOException {
7359      return PARSER.parseDelimitedFrom(input);
7360    }
7361    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseDelimitedFrom(
7362        java.io.InputStream input,
7363        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7364        throws java.io.IOException {
7365      return PARSER.parseDelimitedFrom(input, extensionRegistry);
7366    }
7367    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7368        com.google.protobuf.CodedInputStream input)
7369        throws java.io.IOException {
7370      return PARSER.parseFrom(input);
7371    }
7372    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parseFrom(
7373        com.google.protobuf.CodedInputStream input,
7374        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7375        throws java.io.IOException {
7376      return PARSER.parseFrom(input, extensionRegistry);
7377    }
7378
7379    public static Builder newBuilder() { return Builder.create(); }
7380    public Builder newBuilderForType() { return newBuilder(); }
7381    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef prototype) {
7382      return newBuilder().mergeFrom(prototype);
7383    }
7384    public Builder toBuilder() { return newBuilder(this); }
7385
7386    @java.lang.Override
7387    protected Builder newBuilderForType(
7388        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
7389      Builder builder = new Builder(parent);
7390      return builder;
7391    }
7392    /**
7393     * Protobuf type {@code ConstructorDef}
7394     */
7395    public static final class Builder extends
7396        com.google.protobuf.GeneratedMessage.Builder<Builder>
7397       implements org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDefOrBuilder {
7398      public static final com.google.protobuf.Descriptors.Descriptor
7399          getDescriptor() {
7400        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
7401      }
7402
7403      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
7404          internalGetFieldAccessorTable() {
7405        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_fieldAccessorTable
7406            .ensureFieldAccessorsInitialized(
7407                org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.Builder.class);
7408      }
7409
7410      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.newBuilder()
7411      private Builder() {
7412        maybeForceBuilderInitialization();
7413      }
7414
7415      private Builder(
7416          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
7417        super(parent);
7418        maybeForceBuilderInitialization();
7419      }
7420      private void maybeForceBuilderInitialization() {
7421        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
7422          getArgsFieldBuilder();
7423        }
7424      }
7425      private static Builder create() {
7426        return new Builder();
7427      }
7428
7429      public Builder clear() {
7430        super.clear();
7431        fullClassName_ = "";
7432        bitField0_ = (bitField0_ & ~0x00000001);
7433        if (argsBuilder_ == null) {
7434          args_ = java.util.Collections.emptyList();
7435          bitField0_ = (bitField0_ & ~0x00000002);
7436        } else {
7437          argsBuilder_.clear();
7438        }
7439        return this;
7440      }
7441
7442      public Builder clone() {
7443        return create().mergeFrom(buildPartial());
7444      }
7445
7446      public com.google.protobuf.Descriptors.Descriptor
7447          getDescriptorForType() {
7448        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorDef_descriptor;
7449      }
7450
7451      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef getDefaultInstanceForType() {
7452        return org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance();
7453      }
7454
7455      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef build() {
7456        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef result = buildPartial();
7457        if (!result.isInitialized()) {
7458          throw newUninitializedMessageException(result);
7459        }
7460        return result;
7461      }
7462
7463      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef buildPartial() {
7464        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef result = new org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef(this);
7465        int from_bitField0_ = bitField0_;
7466        int to_bitField0_ = 0;
7467        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
7468          to_bitField0_ |= 0x00000001;
7469        }
7470        result.fullClassName_ = fullClassName_;
7471        if (argsBuilder_ == null) {
7472          if (((bitField0_ & 0x00000002) == 0x00000002)) {
7473            args_ = java.util.Collections.unmodifiableList(args_);
7474            bitField0_ = (bitField0_ & ~0x00000002);
7475          }
7476          result.args_ = args_;
7477        } else {
7478          result.args_ = argsBuilder_.build();
7479        }
7480        result.bitField0_ = to_bitField0_;
7481        onBuilt();
7482        return result;
7483      }
7484
7485      public Builder mergeFrom(com.google.protobuf.Message other) {
7486        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef) {
7487          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef)other);
7488        } else {
7489          super.mergeFrom(other);
7490          return this;
7491        }
7492      }
7493
7494      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef other) {
7495        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef.getDefaultInstance()) return this;
7496        if (other.hasFullClassName()) {
7497          bitField0_ |= 0x00000001;
7498          fullClassName_ = other.fullClassName_;
7499          onChanged();
7500        }
7501        if (argsBuilder_ == null) {
7502          if (!other.args_.isEmpty()) {
7503            if (args_.isEmpty()) {
7504              args_ = other.args_;
7505              bitField0_ = (bitField0_ & ~0x00000002);
7506            } else {
7507              ensureArgsIsMutable();
7508              args_.addAll(other.args_);
7509            }
7510            onChanged();
7511          }
7512        } else {
7513          if (!other.args_.isEmpty()) {
7514            if (argsBuilder_.isEmpty()) {
7515              argsBuilder_.dispose();
7516              argsBuilder_ = null;
7517              args_ = other.args_;
7518              bitField0_ = (bitField0_ & ~0x00000002);
7519              argsBuilder_ = 
7520                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
7521                   getArgsFieldBuilder() : null;
7522            } else {
7523              argsBuilder_.addAllMessages(other.args_);
7524            }
7525          }
7526        }
7527        this.mergeUnknownFields(other.getUnknownFields());
7528        return this;
7529      }
7530
7531      public final boolean isInitialized() {
7532        if (!hasFullClassName()) {
7533          
7534          return false;
7535        }
7536        for (int i = 0; i < getArgsCount(); i++) {
7537          if (!getArgs(i).isInitialized()) {
7538            
7539            return false;
7540          }
7541        }
7542        return true;
7543      }
7544
7545      public Builder mergeFrom(
7546          com.google.protobuf.CodedInputStream input,
7547          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
7548          throws java.io.IOException {
7549        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef parsedMessage = null;
7550        try {
7551          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
7552        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
7553          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorDef) e.getUnfinishedMessage();
7554          throw e;
7555        } finally {
7556          if (parsedMessage != null) {
7557            mergeFrom(parsedMessage);
7558          }
7559        }
7560        return this;
7561      }
7562      private int bitField0_;
7563
7564      // required string full_class_name = 1;
7565      private java.lang.Object fullClassName_ = "";
7566      /**
7567       * <code>required string full_class_name = 1;</code>
7568       *
7569       * <pre>
7570       *
7571       *The full name of the class this constructor returns.
7572       * </pre>
7573       */
7574      public boolean hasFullClassName() {
7575        return ((bitField0_ & 0x00000001) == 0x00000001);
7576      }
7577      /**
7578       * <code>required string full_class_name = 1;</code>
7579       *
7580       * <pre>
7581       *
7582       *The full name of the class this constructor returns.
7583       * </pre>
7584       */
7585      public java.lang.String getFullClassName() {
7586        java.lang.Object ref = fullClassName_;
7587        if (!(ref instanceof java.lang.String)) {
7588          java.lang.String s = ((com.google.protobuf.ByteString) ref)
7589              .toStringUtf8();
7590          fullClassName_ = s;
7591          return s;
7592        } else {
7593          return (java.lang.String) ref;
7594        }
7595      }
7596      /**
7597       * <code>required string full_class_name = 1;</code>
7598       *
7599       * <pre>
7600       *
7601       *The full name of the class this constructor returns.
7602       * </pre>
7603       */
7604      public com.google.protobuf.ByteString
7605          getFullClassNameBytes() {
7606        java.lang.Object ref = fullClassName_;
7607        if (ref instanceof String) {
7608          com.google.protobuf.ByteString b = 
7609              com.google.protobuf.ByteString.copyFromUtf8(
7610                  (java.lang.String) ref);
7611          fullClassName_ = b;
7612          return b;
7613        } else {
7614          return (com.google.protobuf.ByteString) ref;
7615        }
7616      }
7617      /**
7618       * <code>required string full_class_name = 1;</code>
7619       *
7620       * <pre>
7621       *
7622       *The full name of the class this constructor returns.
7623       * </pre>
7624       */
7625      public Builder setFullClassName(
7626          java.lang.String value) {
7627        if (value == null) {
7628    throw new NullPointerException();
7629  }
7630  bitField0_ |= 0x00000001;
7631        fullClassName_ = value;
7632        onChanged();
7633        return this;
7634      }
7635      /**
7636       * <code>required string full_class_name = 1;</code>
7637       *
7638       * <pre>
7639       *
7640       *The full name of the class this constructor returns.
7641       * </pre>
7642       */
7643      public Builder clearFullClassName() {
7644        bitField0_ = (bitField0_ & ~0x00000001);
7645        fullClassName_ = getDefaultInstance().getFullClassName();
7646        onChanged();
7647        return this;
7648      }
7649      /**
7650       * <code>required string full_class_name = 1;</code>
7651       *
7652       * <pre>
7653       *
7654       *The full name of the class this constructor returns.
7655       * </pre>
7656       */
7657      public Builder setFullClassNameBytes(
7658          com.google.protobuf.ByteString value) {
7659        if (value == null) {
7660    throw new NullPointerException();
7661  }
7662  bitField0_ |= 0x00000001;
7663        fullClassName_ = value;
7664        onChanged();
7665        return this;
7666      }
7667
7668      // repeated .ConstructorArg args = 2;
7669      private java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> args_ =
7670        java.util.Collections.emptyList();
7671      private void ensureArgsIsMutable() {
7672        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
7673          args_ = new java.util.ArrayList<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg>(args_);
7674          bitField0_ |= 0x00000002;
7675         }
7676      }
7677
7678      private com.google.protobuf.RepeatedFieldBuilder<
7679          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> argsBuilder_;
7680
7681      /**
7682       * <code>repeated .ConstructorArg args = 2;</code>
7683       *
7684       * <pre>
7685       *
7686       *A (potentially empty) list of arguments required by this constructor.
7687       * </pre>
7688       */
7689      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> getArgsList() {
7690        if (argsBuilder_ == null) {
7691          return java.util.Collections.unmodifiableList(args_);
7692        } else {
7693          return argsBuilder_.getMessageList();
7694        }
7695      }
7696      /**
7697       * <code>repeated .ConstructorArg args = 2;</code>
7698       *
7699       * <pre>
7700       *
7701       *A (potentially empty) list of arguments required by this constructor.
7702       * </pre>
7703       */
7704      public int getArgsCount() {
7705        if (argsBuilder_ == null) {
7706          return args_.size();
7707        } else {
7708          return argsBuilder_.getCount();
7709        }
7710      }
7711      /**
7712       * <code>repeated .ConstructorArg args = 2;</code>
7713       *
7714       * <pre>
7715       *
7716       *A (potentially empty) list of arguments required by this constructor.
7717       * </pre>
7718       */
7719      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getArgs(int index) {
7720        if (argsBuilder_ == null) {
7721          return args_.get(index);
7722        } else {
7723          return argsBuilder_.getMessage(index);
7724        }
7725      }
7726      /**
7727       * <code>repeated .ConstructorArg args = 2;</code>
7728       *
7729       * <pre>
7730       *
7731       *A (potentially empty) list of arguments required by this constructor.
7732       * </pre>
7733       */
7734      public Builder setArgs(
7735          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7736        if (argsBuilder_ == null) {
7737          if (value == null) {
7738            throw new NullPointerException();
7739          }
7740          ensureArgsIsMutable();
7741          args_.set(index, value);
7742          onChanged();
7743        } else {
7744          argsBuilder_.setMessage(index, value);
7745        }
7746        return this;
7747      }
7748      /**
7749       * <code>repeated .ConstructorArg args = 2;</code>
7750       *
7751       * <pre>
7752       *
7753       *A (potentially empty) list of arguments required by this constructor.
7754       * </pre>
7755       */
7756      public Builder setArgs(
7757          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7758        if (argsBuilder_ == null) {
7759          ensureArgsIsMutable();
7760          args_.set(index, builderForValue.build());
7761          onChanged();
7762        } else {
7763          argsBuilder_.setMessage(index, builderForValue.build());
7764        }
7765        return this;
7766      }
7767      /**
7768       * <code>repeated .ConstructorArg args = 2;</code>
7769       *
7770       * <pre>
7771       *
7772       *A (potentially empty) list of arguments required by this constructor.
7773       * </pre>
7774       */
7775      public Builder addArgs(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7776        if (argsBuilder_ == null) {
7777          if (value == null) {
7778            throw new NullPointerException();
7779          }
7780          ensureArgsIsMutable();
7781          args_.add(value);
7782          onChanged();
7783        } else {
7784          argsBuilder_.addMessage(value);
7785        }
7786        return this;
7787      }
7788      /**
7789       * <code>repeated .ConstructorArg args = 2;</code>
7790       *
7791       * <pre>
7792       *
7793       *A (potentially empty) list of arguments required by this constructor.
7794       * </pre>
7795       */
7796      public Builder addArgs(
7797          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg value) {
7798        if (argsBuilder_ == null) {
7799          if (value == null) {
7800            throw new NullPointerException();
7801          }
7802          ensureArgsIsMutable();
7803          args_.add(index, value);
7804          onChanged();
7805        } else {
7806          argsBuilder_.addMessage(index, value);
7807        }
7808        return this;
7809      }
7810      /**
7811       * <code>repeated .ConstructorArg args = 2;</code>
7812       *
7813       * <pre>
7814       *
7815       *A (potentially empty) list of arguments required by this constructor.
7816       * </pre>
7817       */
7818      public Builder addArgs(
7819          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7820        if (argsBuilder_ == null) {
7821          ensureArgsIsMutable();
7822          args_.add(builderForValue.build());
7823          onChanged();
7824        } else {
7825          argsBuilder_.addMessage(builderForValue.build());
7826        }
7827        return this;
7828      }
7829      /**
7830       * <code>repeated .ConstructorArg args = 2;</code>
7831       *
7832       * <pre>
7833       *
7834       *A (potentially empty) list of arguments required by this constructor.
7835       * </pre>
7836       */
7837      public Builder addArgs(
7838          int index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder builderForValue) {
7839        if (argsBuilder_ == null) {
7840          ensureArgsIsMutable();
7841          args_.add(index, builderForValue.build());
7842          onChanged();
7843        } else {
7844          argsBuilder_.addMessage(index, builderForValue.build());
7845        }
7846        return this;
7847      }
7848      /**
7849       * <code>repeated .ConstructorArg args = 2;</code>
7850       *
7851       * <pre>
7852       *
7853       *A (potentially empty) list of arguments required by this constructor.
7854       * </pre>
7855       */
7856      public Builder addAllArgs(
7857          java.lang.Iterable<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg> values) {
7858        if (argsBuilder_ == null) {
7859          ensureArgsIsMutable();
7860          super.addAll(values, args_);
7861          onChanged();
7862        } else {
7863          argsBuilder_.addAllMessages(values);
7864        }
7865        return this;
7866      }
7867      /**
7868       * <code>repeated .ConstructorArg args = 2;</code>
7869       *
7870       * <pre>
7871       *
7872       *A (potentially empty) list of arguments required by this constructor.
7873       * </pre>
7874       */
7875      public Builder clearArgs() {
7876        if (argsBuilder_ == null) {
7877          args_ = java.util.Collections.emptyList();
7878          bitField0_ = (bitField0_ & ~0x00000002);
7879          onChanged();
7880        } else {
7881          argsBuilder_.clear();
7882        }
7883        return this;
7884      }
7885      /**
7886       * <code>repeated .ConstructorArg args = 2;</code>
7887       *
7888       * <pre>
7889       *
7890       *A (potentially empty) list of arguments required by this constructor.
7891       * </pre>
7892       */
7893      public Builder removeArgs(int index) {
7894        if (argsBuilder_ == null) {
7895          ensureArgsIsMutable();
7896          args_.remove(index);
7897          onChanged();
7898        } else {
7899          argsBuilder_.remove(index);
7900        }
7901        return this;
7902      }
7903      /**
7904       * <code>repeated .ConstructorArg args = 2;</code>
7905       *
7906       * <pre>
7907       *
7908       *A (potentially empty) list of arguments required by this constructor.
7909       * </pre>
7910       */
7911      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder getArgsBuilder(
7912          int index) {
7913        return getArgsFieldBuilder().getBuilder(index);
7914      }
7915      /**
7916       * <code>repeated .ConstructorArg args = 2;</code>
7917       *
7918       * <pre>
7919       *
7920       *A (potentially empty) list of arguments required by this constructor.
7921       * </pre>
7922       */
7923      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder getArgsOrBuilder(
7924          int index) {
7925        if (argsBuilder_ == null) {
7926          return args_.get(index);  } else {
7927          return argsBuilder_.getMessageOrBuilder(index);
7928        }
7929      }
7930      /**
7931       * <code>repeated .ConstructorArg args = 2;</code>
7932       *
7933       * <pre>
7934       *
7935       *A (potentially empty) list of arguments required by this constructor.
7936       * </pre>
7937       */
7938      public java.util.List<? extends org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7939           getArgsOrBuilderList() {
7940        if (argsBuilder_ != null) {
7941          return argsBuilder_.getMessageOrBuilderList();
7942        } else {
7943          return java.util.Collections.unmodifiableList(args_);
7944        }
7945      }
7946      /**
7947       * <code>repeated .ConstructorArg args = 2;</code>
7948       *
7949       * <pre>
7950       *
7951       *A (potentially empty) list of arguments required by this constructor.
7952       * </pre>
7953       */
7954      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder addArgsBuilder() {
7955        return getArgsFieldBuilder().addBuilder(
7956            org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance());
7957      }
7958      /**
7959       * <code>repeated .ConstructorArg args = 2;</code>
7960       *
7961       * <pre>
7962       *
7963       *A (potentially empty) list of arguments required by this constructor.
7964       * </pre>
7965       */
7966      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder addArgsBuilder(
7967          int index) {
7968        return getArgsFieldBuilder().addBuilder(
7969            index, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance());
7970      }
7971      /**
7972       * <code>repeated .ConstructorArg args = 2;</code>
7973       *
7974       * <pre>
7975       *
7976       *A (potentially empty) list of arguments required by this constructor.
7977       * </pre>
7978       */
7979      public java.util.List<org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder> 
7980           getArgsBuilderList() {
7981        return getArgsFieldBuilder().getBuilderList();
7982      }
7983      private com.google.protobuf.RepeatedFieldBuilder<
7984          org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder> 
7985          getArgsFieldBuilder() {
7986        if (argsBuilder_ == null) {
7987          argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
7988              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder>(
7989                  args_,
7990                  ((bitField0_ & 0x00000002) == 0x00000002),
7991                  getParentForChildren(),
7992                  isClean());
7993          args_ = null;
7994        }
7995        return argsBuilder_;
7996      }
7997
7998      // @@protoc_insertion_point(builder_scope:ConstructorDef)
7999    }
8000
8001    static {
8002      defaultInstance = new ConstructorDef(true);
8003      defaultInstance.initFields();
8004    }
8005
8006    // @@protoc_insertion_point(class_scope:ConstructorDef)
8007  }
8008
8009  public interface ConstructorArgOrBuilder
8010      extends com.google.protobuf.MessageOrBuilder {
8011
8012    // required string full_arg_class_name = 1;
8013    /**
8014     * <code>required string full_arg_class_name = 1;</code>
8015     *
8016     * <pre>
8017     *
8018     *The full name of the class that should be passed into this
8019     *constructor argument.
8020     * </pre>
8021     */
8022    boolean hasFullArgClassName();
8023    /**
8024     * <code>required string full_arg_class_name = 1;</code>
8025     *
8026     * <pre>
8027     *
8028     *The full name of the class that should be passed into this
8029     *constructor argument.
8030     * </pre>
8031     */
8032    java.lang.String getFullArgClassName();
8033    /**
8034     * <code>required string full_arg_class_name = 1;</code>
8035     *
8036     * <pre>
8037     *
8038     *The full name of the class that should be passed into this
8039     *constructor argument.
8040     * </pre>
8041     */
8042    com.google.protobuf.ByteString
8043        getFullArgClassNameBytes();
8044
8045    // optional string named_parameter_name = 2;
8046    /**
8047     * <code>optional string named_parameter_name = 2;</code>
8048     *
8049     * <pre>
8050     *
8051     *The named parameter (if any) that this argument is annotated with.
8052     * </pre>
8053     */
8054    boolean hasNamedParameterName();
8055    /**
8056     * <code>optional string named_parameter_name = 2;</code>
8057     *
8058     * <pre>
8059     *
8060     *The named parameter (if any) that this argument is annotated with.
8061     * </pre>
8062     */
8063    java.lang.String getNamedParameterName();
8064    /**
8065     * <code>optional string named_parameter_name = 2;</code>
8066     *
8067     * <pre>
8068     *
8069     *The named parameter (if any) that this argument is annotated with.
8070     * </pre>
8071     */
8072    com.google.protobuf.ByteString
8073        getNamedParameterNameBytes();
8074
8075    // required bool is_injection_future = 3;
8076    /**
8077     * <code>required bool is_injection_future = 3;</code>
8078     */
8079    boolean hasIsInjectionFuture();
8080    /**
8081     * <code>required bool is_injection_future = 3;</code>
8082     */
8083    boolean getIsInjectionFuture();
8084  }
8085  /**
8086   * Protobuf type {@code ConstructorArg}
8087   */
8088  public static final class ConstructorArg extends
8089      com.google.protobuf.GeneratedMessage
8090      implements ConstructorArgOrBuilder {
8091    // Use ConstructorArg.newBuilder() to construct.
8092    private ConstructorArg(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
8093      super(builder);
8094      this.unknownFields = builder.getUnknownFields();
8095    }
8096    private ConstructorArg(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
8097
8098    private static final ConstructorArg defaultInstance;
8099    public static ConstructorArg getDefaultInstance() {
8100      return defaultInstance;
8101    }
8102
8103    public ConstructorArg getDefaultInstanceForType() {
8104      return defaultInstance;
8105    }
8106
8107    private final com.google.protobuf.UnknownFieldSet unknownFields;
8108    @java.lang.Override
8109    public final com.google.protobuf.UnknownFieldSet
8110        getUnknownFields() {
8111      return this.unknownFields;
8112    }
8113    private ConstructorArg(
8114        com.google.protobuf.CodedInputStream input,
8115        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8116        throws com.google.protobuf.InvalidProtocolBufferException {
8117      initFields();
8118      int mutable_bitField0_ = 0;
8119      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
8120          com.google.protobuf.UnknownFieldSet.newBuilder();
8121      try {
8122        boolean done = false;
8123        while (!done) {
8124          int tag = input.readTag();
8125          switch (tag) {
8126            case 0:
8127              done = true;
8128              break;
8129            default: {
8130              if (!parseUnknownField(input, unknownFields,
8131                                     extensionRegistry, tag)) {
8132                done = true;
8133              }
8134              break;
8135            }
8136            case 10: {
8137              bitField0_ |= 0x00000001;
8138              fullArgClassName_ = input.readBytes();
8139              break;
8140            }
8141            case 18: {
8142              bitField0_ |= 0x00000002;
8143              namedParameterName_ = input.readBytes();
8144              break;
8145            }
8146            case 24: {
8147              bitField0_ |= 0x00000004;
8148              isInjectionFuture_ = input.readBool();
8149              break;
8150            }
8151          }
8152        }
8153      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
8154        throw e.setUnfinishedMessage(this);
8155      } catch (java.io.IOException e) {
8156        throw new com.google.protobuf.InvalidProtocolBufferException(
8157            e.getMessage()).setUnfinishedMessage(this);
8158      } finally {
8159        this.unknownFields = unknownFields.build();
8160        makeExtensionsImmutable();
8161      }
8162    }
8163    public static final com.google.protobuf.Descriptors.Descriptor
8164        getDescriptor() {
8165      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
8166    }
8167
8168    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
8169        internalGetFieldAccessorTable() {
8170      return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_fieldAccessorTable
8171          .ensureFieldAccessorsInitialized(
8172              org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder.class);
8173    }
8174
8175    public static com.google.protobuf.Parser<ConstructorArg> PARSER =
8176        new com.google.protobuf.AbstractParser<ConstructorArg>() {
8177      public ConstructorArg parsePartialFrom(
8178          com.google.protobuf.CodedInputStream input,
8179          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8180          throws com.google.protobuf.InvalidProtocolBufferException {
8181        return new ConstructorArg(input, extensionRegistry);
8182      }
8183    };
8184
8185    @java.lang.Override
8186    public com.google.protobuf.Parser<ConstructorArg> getParserForType() {
8187      return PARSER;
8188    }
8189
8190    private int bitField0_;
8191    // required string full_arg_class_name = 1;
8192    public static final int FULL_ARG_CLASS_NAME_FIELD_NUMBER = 1;
8193    private java.lang.Object fullArgClassName_;
8194    /**
8195     * <code>required string full_arg_class_name = 1;</code>
8196     *
8197     * <pre>
8198     *
8199     *The full name of the class that should be passed into this
8200     *constructor argument.
8201     * </pre>
8202     */
8203    public boolean hasFullArgClassName() {
8204      return ((bitField0_ & 0x00000001) == 0x00000001);
8205    }
8206    /**
8207     * <code>required string full_arg_class_name = 1;</code>
8208     *
8209     * <pre>
8210     *
8211     *The full name of the class that should be passed into this
8212     *constructor argument.
8213     * </pre>
8214     */
8215    public java.lang.String getFullArgClassName() {
8216      java.lang.Object ref = fullArgClassName_;
8217      if (ref instanceof java.lang.String) {
8218        return (java.lang.String) ref;
8219      } else {
8220        com.google.protobuf.ByteString bs = 
8221            (com.google.protobuf.ByteString) ref;
8222        java.lang.String s = bs.toStringUtf8();
8223        if (bs.isValidUtf8()) {
8224          fullArgClassName_ = s;
8225        }
8226        return s;
8227      }
8228    }
8229    /**
8230     * <code>required string full_arg_class_name = 1;</code>
8231     *
8232     * <pre>
8233     *
8234     *The full name of the class that should be passed into this
8235     *constructor argument.
8236     * </pre>
8237     */
8238    public com.google.protobuf.ByteString
8239        getFullArgClassNameBytes() {
8240      java.lang.Object ref = fullArgClassName_;
8241      if (ref instanceof java.lang.String) {
8242        com.google.protobuf.ByteString b = 
8243            com.google.protobuf.ByteString.copyFromUtf8(
8244                (java.lang.String) ref);
8245        fullArgClassName_ = b;
8246        return b;
8247      } else {
8248        return (com.google.protobuf.ByteString) ref;
8249      }
8250    }
8251
8252    // optional string named_parameter_name = 2;
8253    public static final int NAMED_PARAMETER_NAME_FIELD_NUMBER = 2;
8254    private java.lang.Object namedParameterName_;
8255    /**
8256     * <code>optional string named_parameter_name = 2;</code>
8257     *
8258     * <pre>
8259     *
8260     *The named parameter (if any) that this argument is annotated with.
8261     * </pre>
8262     */
8263    public boolean hasNamedParameterName() {
8264      return ((bitField0_ & 0x00000002) == 0x00000002);
8265    }
8266    /**
8267     * <code>optional string named_parameter_name = 2;</code>
8268     *
8269     * <pre>
8270     *
8271     *The named parameter (if any) that this argument is annotated with.
8272     * </pre>
8273     */
8274    public java.lang.String getNamedParameterName() {
8275      java.lang.Object ref = namedParameterName_;
8276      if (ref instanceof java.lang.String) {
8277        return (java.lang.String) ref;
8278      } else {
8279        com.google.protobuf.ByteString bs = 
8280            (com.google.protobuf.ByteString) ref;
8281        java.lang.String s = bs.toStringUtf8();
8282        if (bs.isValidUtf8()) {
8283          namedParameterName_ = s;
8284        }
8285        return s;
8286      }
8287    }
8288    /**
8289     * <code>optional string named_parameter_name = 2;</code>
8290     *
8291     * <pre>
8292     *
8293     *The named parameter (if any) that this argument is annotated with.
8294     * </pre>
8295     */
8296    public com.google.protobuf.ByteString
8297        getNamedParameterNameBytes() {
8298      java.lang.Object ref = namedParameterName_;
8299      if (ref instanceof java.lang.String) {
8300        com.google.protobuf.ByteString b = 
8301            com.google.protobuf.ByteString.copyFromUtf8(
8302                (java.lang.String) ref);
8303        namedParameterName_ = b;
8304        return b;
8305      } else {
8306        return (com.google.protobuf.ByteString) ref;
8307      }
8308    }
8309
8310    // required bool is_injection_future = 3;
8311    public static final int IS_INJECTION_FUTURE_FIELD_NUMBER = 3;
8312    private boolean isInjectionFuture_;
8313    /**
8314     * <code>required bool is_injection_future = 3;</code>
8315     */
8316    public boolean hasIsInjectionFuture() {
8317      return ((bitField0_ & 0x00000004) == 0x00000004);
8318    }
8319    /**
8320     * <code>required bool is_injection_future = 3;</code>
8321     */
8322    public boolean getIsInjectionFuture() {
8323      return isInjectionFuture_;
8324    }
8325
8326    private void initFields() {
8327      fullArgClassName_ = "";
8328      namedParameterName_ = "";
8329      isInjectionFuture_ = false;
8330    }
8331    private byte memoizedIsInitialized = -1;
8332    public final boolean isInitialized() {
8333      byte isInitialized = memoizedIsInitialized;
8334      if (isInitialized != -1) return isInitialized == 1;
8335
8336      if (!hasFullArgClassName()) {
8337        memoizedIsInitialized = 0;
8338        return false;
8339      }
8340      if (!hasIsInjectionFuture()) {
8341        memoizedIsInitialized = 0;
8342        return false;
8343      }
8344      memoizedIsInitialized = 1;
8345      return true;
8346    }
8347
8348    public void writeTo(com.google.protobuf.CodedOutputStream output)
8349                        throws java.io.IOException {
8350      getSerializedSize();
8351      if (((bitField0_ & 0x00000001) == 0x00000001)) {
8352        output.writeBytes(1, getFullArgClassNameBytes());
8353      }
8354      if (((bitField0_ & 0x00000002) == 0x00000002)) {
8355        output.writeBytes(2, getNamedParameterNameBytes());
8356      }
8357      if (((bitField0_ & 0x00000004) == 0x00000004)) {
8358        output.writeBool(3, isInjectionFuture_);
8359      }
8360      getUnknownFields().writeTo(output);
8361    }
8362
8363    private int memoizedSerializedSize = -1;
8364    public int getSerializedSize() {
8365      int size = memoizedSerializedSize;
8366      if (size != -1) return size;
8367
8368      size = 0;
8369      if (((bitField0_ & 0x00000001) == 0x00000001)) {
8370        size += com.google.protobuf.CodedOutputStream
8371          .computeBytesSize(1, getFullArgClassNameBytes());
8372      }
8373      if (((bitField0_ & 0x00000002) == 0x00000002)) {
8374        size += com.google.protobuf.CodedOutputStream
8375          .computeBytesSize(2, getNamedParameterNameBytes());
8376      }
8377      if (((bitField0_ & 0x00000004) == 0x00000004)) {
8378        size += com.google.protobuf.CodedOutputStream
8379          .computeBoolSize(3, isInjectionFuture_);
8380      }
8381      size += getUnknownFields().getSerializedSize();
8382      memoizedSerializedSize = size;
8383      return size;
8384    }
8385
8386    private static final long serialVersionUID = 0L;
8387    @java.lang.Override
8388    protected java.lang.Object writeReplace()
8389        throws java.io.ObjectStreamException {
8390      return super.writeReplace();
8391    }
8392
8393    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8394        com.google.protobuf.ByteString data)
8395        throws com.google.protobuf.InvalidProtocolBufferException {
8396      return PARSER.parseFrom(data);
8397    }
8398    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8399        com.google.protobuf.ByteString data,
8400        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8401        throws com.google.protobuf.InvalidProtocolBufferException {
8402      return PARSER.parseFrom(data, extensionRegistry);
8403    }
8404    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(byte[] data)
8405        throws com.google.protobuf.InvalidProtocolBufferException {
8406      return PARSER.parseFrom(data);
8407    }
8408    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8409        byte[] data,
8410        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8411        throws com.google.protobuf.InvalidProtocolBufferException {
8412      return PARSER.parseFrom(data, extensionRegistry);
8413    }
8414    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(java.io.InputStream input)
8415        throws java.io.IOException {
8416      return PARSER.parseFrom(input);
8417    }
8418    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8419        java.io.InputStream input,
8420        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8421        throws java.io.IOException {
8422      return PARSER.parseFrom(input, extensionRegistry);
8423    }
8424    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseDelimitedFrom(java.io.InputStream input)
8425        throws java.io.IOException {
8426      return PARSER.parseDelimitedFrom(input);
8427    }
8428    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseDelimitedFrom(
8429        java.io.InputStream input,
8430        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8431        throws java.io.IOException {
8432      return PARSER.parseDelimitedFrom(input, extensionRegistry);
8433    }
8434    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8435        com.google.protobuf.CodedInputStream input)
8436        throws java.io.IOException {
8437      return PARSER.parseFrom(input);
8438    }
8439    public static org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parseFrom(
8440        com.google.protobuf.CodedInputStream input,
8441        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8442        throws java.io.IOException {
8443      return PARSER.parseFrom(input, extensionRegistry);
8444    }
8445
8446    public static Builder newBuilder() { return Builder.create(); }
8447    public Builder newBuilderForType() { return newBuilder(); }
8448    public static Builder newBuilder(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg prototype) {
8449      return newBuilder().mergeFrom(prototype);
8450    }
8451    public Builder toBuilder() { return newBuilder(this); }
8452
8453    @java.lang.Override
8454    protected Builder newBuilderForType(
8455        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
8456      Builder builder = new Builder(parent);
8457      return builder;
8458    }
8459    /**
8460     * Protobuf type {@code ConstructorArg}
8461     */
8462    public static final class Builder extends
8463        com.google.protobuf.GeneratedMessage.Builder<Builder>
8464       implements org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArgOrBuilder {
8465      public static final com.google.protobuf.Descriptors.Descriptor
8466          getDescriptor() {
8467        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
8468      }
8469
8470      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
8471          internalGetFieldAccessorTable() {
8472        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_fieldAccessorTable
8473            .ensureFieldAccessorsInitialized(
8474                org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.class, org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.Builder.class);
8475      }
8476
8477      // Construct using org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.newBuilder()
8478      private Builder() {
8479        maybeForceBuilderInitialization();
8480      }
8481
8482      private Builder(
8483          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
8484        super(parent);
8485        maybeForceBuilderInitialization();
8486      }
8487      private void maybeForceBuilderInitialization() {
8488        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
8489        }
8490      }
8491      private static Builder create() {
8492        return new Builder();
8493      }
8494
8495      public Builder clear() {
8496        super.clear();
8497        fullArgClassName_ = "";
8498        bitField0_ = (bitField0_ & ~0x00000001);
8499        namedParameterName_ = "";
8500        bitField0_ = (bitField0_ & ~0x00000002);
8501        isInjectionFuture_ = false;
8502        bitField0_ = (bitField0_ & ~0x00000004);
8503        return this;
8504      }
8505
8506      public Builder clone() {
8507        return create().mergeFrom(buildPartial());
8508      }
8509
8510      public com.google.protobuf.Descriptors.Descriptor
8511          getDescriptorForType() {
8512        return org.apache.reef.tang.proto.ClassHierarchyProto.internal_static_ConstructorArg_descriptor;
8513      }
8514
8515      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg getDefaultInstanceForType() {
8516        return org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance();
8517      }
8518
8519      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg build() {
8520        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg result = buildPartial();
8521        if (!result.isInitialized()) {
8522          throw newUninitializedMessageException(result);
8523        }
8524        return result;
8525      }
8526
8527      public org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg buildPartial() {
8528        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg result = new org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg(this);
8529        int from_bitField0_ = bitField0_;
8530        int to_bitField0_ = 0;
8531        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
8532          to_bitField0_ |= 0x00000001;
8533        }
8534        result.fullArgClassName_ = fullArgClassName_;
8535        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
8536          to_bitField0_ |= 0x00000002;
8537        }
8538        result.namedParameterName_ = namedParameterName_;
8539        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
8540          to_bitField0_ |= 0x00000004;
8541        }
8542        result.isInjectionFuture_ = isInjectionFuture_;
8543        result.bitField0_ = to_bitField0_;
8544        onBuilt();
8545        return result;
8546      }
8547
8548      public Builder mergeFrom(com.google.protobuf.Message other) {
8549        if (other instanceof org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg) {
8550          return mergeFrom((org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg)other);
8551        } else {
8552          super.mergeFrom(other);
8553          return this;
8554        }
8555      }
8556
8557      public Builder mergeFrom(org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg other) {
8558        if (other == org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg.getDefaultInstance()) return this;
8559        if (other.hasFullArgClassName()) {
8560          bitField0_ |= 0x00000001;
8561          fullArgClassName_ = other.fullArgClassName_;
8562          onChanged();
8563        }
8564        if (other.hasNamedParameterName()) {
8565          bitField0_ |= 0x00000002;
8566          namedParameterName_ = other.namedParameterName_;
8567          onChanged();
8568        }
8569        if (other.hasIsInjectionFuture()) {
8570          setIsInjectionFuture(other.getIsInjectionFuture());
8571        }
8572        this.mergeUnknownFields(other.getUnknownFields());
8573        return this;
8574      }
8575
8576      public final boolean isInitialized() {
8577        if (!hasFullArgClassName()) {
8578          
8579          return false;
8580        }
8581        if (!hasIsInjectionFuture()) {
8582          
8583          return false;
8584        }
8585        return true;
8586      }
8587
8588      public Builder mergeFrom(
8589          com.google.protobuf.CodedInputStream input,
8590          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
8591          throws java.io.IOException {
8592        org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg parsedMessage = null;
8593        try {
8594          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
8595        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
8596          parsedMessage = (org.apache.reef.tang.proto.ClassHierarchyProto.ConstructorArg) e.getUnfinishedMessage();
8597          throw e;
8598        } finally {
8599          if (parsedMessage != null) {
8600            mergeFrom(parsedMessage);
8601          }
8602        }
8603        return this;
8604      }
8605      private int bitField0_;
8606
8607      // required string full_arg_class_name = 1;
8608      private java.lang.Object fullArgClassName_ = "";
8609      /**
8610       * <code>required string full_arg_class_name = 1;</code>
8611       *
8612       * <pre>
8613       *
8614       *The full name of the class that should be passed into this
8615       *constructor argument.
8616       * </pre>
8617       */
8618      public boolean hasFullArgClassName() {
8619        return ((bitField0_ & 0x00000001) == 0x00000001);
8620      }
8621      /**
8622       * <code>required string full_arg_class_name = 1;</code>
8623       *
8624       * <pre>
8625       *
8626       *The full name of the class that should be passed into this
8627       *constructor argument.
8628       * </pre>
8629       */
8630      public java.lang.String getFullArgClassName() {
8631        java.lang.Object ref = fullArgClassName_;
8632        if (!(ref instanceof java.lang.String)) {
8633          java.lang.String s = ((com.google.protobuf.ByteString) ref)
8634              .toStringUtf8();
8635          fullArgClassName_ = s;
8636          return s;
8637        } else {
8638          return (java.lang.String) ref;
8639        }
8640      }
8641      /**
8642       * <code>required string full_arg_class_name = 1;</code>
8643       *
8644       * <pre>
8645       *
8646       *The full name of the class that should be passed into this
8647       *constructor argument.
8648       * </pre>
8649       */
8650      public com.google.protobuf.ByteString
8651          getFullArgClassNameBytes() {
8652        java.lang.Object ref = fullArgClassName_;
8653        if (ref instanceof String) {
8654          com.google.protobuf.ByteString b = 
8655              com.google.protobuf.ByteString.copyFromUtf8(
8656                  (java.lang.String) ref);
8657          fullArgClassName_ = b;
8658          return b;
8659        } else {
8660          return (com.google.protobuf.ByteString) ref;
8661        }
8662      }
8663      /**
8664       * <code>required string full_arg_class_name = 1;</code>
8665       *
8666       * <pre>
8667       *
8668       *The full name of the class that should be passed into this
8669       *constructor argument.
8670       * </pre>
8671       */
8672      public Builder setFullArgClassName(
8673          java.lang.String value) {
8674        if (value == null) {
8675    throw new NullPointerException();
8676  }
8677  bitField0_ |= 0x00000001;
8678        fullArgClassName_ = value;
8679        onChanged();
8680        return this;
8681      }
8682      /**
8683       * <code>required string full_arg_class_name = 1;</code>
8684       *
8685       * <pre>
8686       *
8687       *The full name of the class that should be passed into this
8688       *constructor argument.
8689       * </pre>
8690       */
8691      public Builder clearFullArgClassName() {
8692        bitField0_ = (bitField0_ & ~0x00000001);
8693        fullArgClassName_ = getDefaultInstance().getFullArgClassName();
8694        onChanged();
8695        return this;
8696      }
8697      /**
8698       * <code>required string full_arg_class_name = 1;</code>
8699       *
8700       * <pre>
8701       *
8702       *The full name of the class that should be passed into this
8703       *constructor argument.
8704       * </pre>
8705       */
8706      public Builder setFullArgClassNameBytes(
8707          com.google.protobuf.ByteString value) {
8708        if (value == null) {
8709    throw new NullPointerException();
8710  }
8711  bitField0_ |= 0x00000001;
8712        fullArgClassName_ = value;
8713        onChanged();
8714        return this;
8715      }
8716
8717      // optional string named_parameter_name = 2;
8718      private java.lang.Object namedParameterName_ = "";
8719      /**
8720       * <code>optional string named_parameter_name = 2;</code>
8721       *
8722       * <pre>
8723       *
8724       *The named parameter (if any) that this argument is annotated with.
8725       * </pre>
8726       */
8727      public boolean hasNamedParameterName() {
8728        return ((bitField0_ & 0x00000002) == 0x00000002);
8729      }
8730      /**
8731       * <code>optional string named_parameter_name = 2;</code>
8732       *
8733       * <pre>
8734       *
8735       *The named parameter (if any) that this argument is annotated with.
8736       * </pre>
8737       */
8738      public java.lang.String getNamedParameterName() {
8739        java.lang.Object ref = namedParameterName_;
8740        if (!(ref instanceof java.lang.String)) {
8741          java.lang.String s = ((com.google.protobuf.ByteString) ref)
8742              .toStringUtf8();
8743          namedParameterName_ = s;
8744          return s;
8745        } else {
8746          return (java.lang.String) ref;
8747        }
8748      }
8749      /**
8750       * <code>optional string named_parameter_name = 2;</code>
8751       *
8752       * <pre>
8753       *
8754       *The named parameter (if any) that this argument is annotated with.
8755       * </pre>
8756       */
8757      public com.google.protobuf.ByteString
8758          getNamedParameterNameBytes() {
8759        java.lang.Object ref = namedParameterName_;
8760        if (ref instanceof String) {
8761          com.google.protobuf.ByteString b = 
8762              com.google.protobuf.ByteString.copyFromUtf8(
8763                  (java.lang.String) ref);
8764          namedParameterName_ = b;
8765          return b;
8766        } else {
8767          return (com.google.protobuf.ByteString) ref;
8768        }
8769      }
8770      /**
8771       * <code>optional string named_parameter_name = 2;</code>
8772       *
8773       * <pre>
8774       *
8775       *The named parameter (if any) that this argument is annotated with.
8776       * </pre>
8777       */
8778      public Builder setNamedParameterName(
8779          java.lang.String value) {
8780        if (value == null) {
8781    throw new NullPointerException();
8782  }
8783  bitField0_ |= 0x00000002;
8784        namedParameterName_ = value;
8785        onChanged();
8786        return this;
8787      }
8788      /**
8789       * <code>optional string named_parameter_name = 2;</code>
8790       *
8791       * <pre>
8792       *
8793       *The named parameter (if any) that this argument is annotated with.
8794       * </pre>
8795       */
8796      public Builder clearNamedParameterName() {
8797        bitField0_ = (bitField0_ & ~0x00000002);
8798        namedParameterName_ = getDefaultInstance().getNamedParameterName();
8799        onChanged();
8800        return this;
8801      }
8802      /**
8803       * <code>optional string named_parameter_name = 2;</code>
8804       *
8805       * <pre>
8806       *
8807       *The named parameter (if any) that this argument is annotated with.
8808       * </pre>
8809       */
8810      public Builder setNamedParameterNameBytes(
8811          com.google.protobuf.ByteString value) {
8812        if (value == null) {
8813    throw new NullPointerException();
8814  }
8815  bitField0_ |= 0x00000002;
8816        namedParameterName_ = value;
8817        onChanged();
8818        return this;
8819      }
8820
8821      // required bool is_injection_future = 3;
8822      private boolean isInjectionFuture_ ;
8823      /**
8824       * <code>required bool is_injection_future = 3;</code>
8825       */
8826      public boolean hasIsInjectionFuture() {
8827        return ((bitField0_ & 0x00000004) == 0x00000004);
8828      }
8829      /**
8830       * <code>required bool is_injection_future = 3;</code>
8831       */
8832      public boolean getIsInjectionFuture() {
8833        return isInjectionFuture_;
8834      }
8835      /**
8836       * <code>required bool is_injection_future = 3;</code>
8837       */
8838      public Builder setIsInjectionFuture(boolean value) {
8839        bitField0_ |= 0x00000004;
8840        isInjectionFuture_ = value;
8841        onChanged();
8842        return this;
8843      }
8844      /**
8845       * <code>required bool is_injection_future = 3;</code>
8846       */
8847      public Builder clearIsInjectionFuture() {
8848        bitField0_ = (bitField0_ & ~0x00000004);
8849        isInjectionFuture_ = false;
8850        onChanged();
8851        return this;
8852      }
8853
8854      // @@protoc_insertion_point(builder_scope:ConstructorArg)
8855    }
8856
8857    static {
8858      defaultInstance = new ConstructorArg(true);
8859      defaultInstance.initFields();
8860    }
8861
8862    // @@protoc_insertion_point(class_scope:ConstructorArg)
8863  }
8864
8865  private static com.google.protobuf.Descriptors.Descriptor
8866    internal_static_Node_descriptor;
8867  private static
8868    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8869      internal_static_Node_fieldAccessorTable;
8870  private static com.google.protobuf.Descriptors.Descriptor
8871    internal_static_ClassNode_descriptor;
8872  private static
8873    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8874      internal_static_ClassNode_fieldAccessorTable;
8875  private static com.google.protobuf.Descriptors.Descriptor
8876    internal_static_NamedParameterNode_descriptor;
8877  private static
8878    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8879      internal_static_NamedParameterNode_fieldAccessorTable;
8880  private static com.google.protobuf.Descriptors.Descriptor
8881    internal_static_PackageNode_descriptor;
8882  private static
8883    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8884      internal_static_PackageNode_fieldAccessorTable;
8885  private static com.google.protobuf.Descriptors.Descriptor
8886    internal_static_ConstructorDef_descriptor;
8887  private static
8888    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8889      internal_static_ConstructorDef_fieldAccessorTable;
8890  private static com.google.protobuf.Descriptors.Descriptor
8891    internal_static_ConstructorArg_descriptor;
8892  private static
8893    com.google.protobuf.GeneratedMessage.FieldAccessorTable
8894      internal_static_ConstructorArg_fieldAccessorTable;
8895
8896  public static com.google.protobuf.Descriptors.FileDescriptor
8897      getDescriptor() {
8898    return descriptor;
8899  }
8900  private static com.google.protobuf.Descriptors.FileDescriptor
8901      descriptor;
8902  static {
8903    java.lang.String[] descriptorData = {
8904      "\n\025class_hierarchy.proto\"\267\001\n\004Node\022\014\n\004name" +
8905      "\030\001 \002(\t\022\021\n\tfull_name\030\002 \002(\t\022\036\n\nclass_node\030" +
8906      "\003 \001(\0132\n.ClassNode\0221\n\024named_parameter_nod" +
8907      "e\030\004 \001(\0132\023.NamedParameterNode\022\"\n\014package_" +
8908      "node\030\005 \001(\0132\014.PackageNode\022\027\n\010children\030\006 \003" +
8909      "(\0132\005.Node\"\363\001\n\tClassNode\022\036\n\026is_injection_" +
8910      "candidate\030\001 \002(\010\022\037\n\027is_external_construct" +
8911      "or\030\002 \002(\010\022\017\n\007is_unit\030\003 \002(\010\022/\n\026InjectableC" +
8912      "onstructors\030\004 \003(\0132\017.ConstructorDef\022*\n\021Ot" +
8913      "herConstructors\030\005 \003(\0132\017.ConstructorDef\022\027",
8914      "\n\017impl_full_names\030\006 \003(\t\022\036\n\026default_imple" +
8915      "mentation\030\007 \001(\t\"\342\001\n\022NamedParameterNode\022\035" +
8916      "\n\025simple_arg_class_name\030\001 \002(\t\022\033\n\023full_ar" +
8917      "g_class_name\030\002 \002(\t\022\016\n\006is_set\030\003 \002(\010\022\017\n\007is" +
8918      "_list\030\004 \002(\010\022\025\n\rdocumentation\030\005 \001(\t\022\022\n\nsh" +
8919      "ort_name\030\006 \001(\t\022\030\n\020instance_default\030\007 \003(\t" +
8920      "\022\022\n\nalias_name\030\010 \001(\t\022\026\n\016alias_language\030\t" +
8921      " \001(\t\"\r\n\013PackageNode\"H\n\016ConstructorDef\022\027\n" +
8922      "\017full_class_name\030\001 \002(\t\022\035\n\004args\030\002 \003(\0132\017.C" +
8923      "onstructorArg\"h\n\016ConstructorArg\022\033\n\023full_",
8924      "arg_class_name\030\001 \002(\t\022\034\n\024named_parameter_" +
8925      "name\030\002 \001(\t\022\033\n\023is_injection_future\030\003 \002(\010B" +
8926      "1\n\032org.apache.reef.tang.protoB\023ClassHier" +
8927      "archyProto"
8928    };
8929    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
8930      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
8931        public com.google.protobuf.ExtensionRegistry assignDescriptors(
8932            com.google.protobuf.Descriptors.FileDescriptor root) {
8933          descriptor = root;
8934          internal_static_Node_descriptor =
8935            getDescriptor().getMessageTypes().get(0);
8936          internal_static_Node_fieldAccessorTable = new
8937            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8938              internal_static_Node_descriptor,
8939              new java.lang.String[] { "Name", "FullName", "ClassNode", "NamedParameterNode", "PackageNode", "Children", });
8940          internal_static_ClassNode_descriptor =
8941            getDescriptor().getMessageTypes().get(1);
8942          internal_static_ClassNode_fieldAccessorTable = new
8943            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8944              internal_static_ClassNode_descriptor,
8945              new java.lang.String[] { "IsInjectionCandidate", "IsExternalConstructor", "IsUnit", "InjectableConstructors", "OtherConstructors", "ImplFullNames", "DefaultImplementation", });
8946          internal_static_NamedParameterNode_descriptor =
8947            getDescriptor().getMessageTypes().get(2);
8948          internal_static_NamedParameterNode_fieldAccessorTable = new
8949            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8950              internal_static_NamedParameterNode_descriptor,
8951              new java.lang.String[] { "SimpleArgClassName", "FullArgClassName", "IsSet", "IsList", "Documentation", "ShortName", "InstanceDefault", "AliasName", "AliasLanguage", });
8952          internal_static_PackageNode_descriptor =
8953            getDescriptor().getMessageTypes().get(3);
8954          internal_static_PackageNode_fieldAccessorTable = new
8955            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8956              internal_static_PackageNode_descriptor,
8957              new java.lang.String[] { });
8958          internal_static_ConstructorDef_descriptor =
8959            getDescriptor().getMessageTypes().get(4);
8960          internal_static_ConstructorDef_fieldAccessorTable = new
8961            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8962              internal_static_ConstructorDef_descriptor,
8963              new java.lang.String[] { "FullClassName", "Args", });
8964          internal_static_ConstructorArg_descriptor =
8965            getDescriptor().getMessageTypes().get(5);
8966          internal_static_ConstructorArg_fieldAccessorTable = new
8967            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
8968              internal_static_ConstructorArg_descriptor,
8969              new java.lang.String[] { "FullArgClassName", "NamedParameterName", "IsInjectionFuture", });
8970          return null;
8971        }
8972      };
8973    com.google.protobuf.Descriptors.FileDescriptor
8974      .internalBuildGeneratedFileFrom(descriptorData,
8975        new com.google.protobuf.Descriptors.FileDescriptor[] {
8976        }, assigner);
8977  }
8978
8979  // @@protoc_insertion_point(outer_class_scope)
8980}