All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ai.grakn.rpc.proto.AnswerProto Maven / Gradle / Ivy

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Answer.proto

package ai.grakn.rpc.proto;

public final class AnswerProto {
  private AnswerProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface AnswerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.Answer)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.AnswerGroup answerGroup = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.AnswerGroup getAnswerGroup();
    /**
     * optional .session.AnswerGroup answerGroup = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder getAnswerGroupOrBuilder();

    /**
     * optional .session.ConceptMap conceptMap = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptMap getConceptMap();
    /**
     * optional .session.ConceptMap conceptMap = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getConceptMapOrBuilder();

    /**
     * optional .session.ConceptList conceptList = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptList getConceptList();
    /**
     * optional .session.ConceptList conceptList = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder getConceptListOrBuilder();

    /**
     * optional .session.ConceptSet conceptSet = 4;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptSet getConceptSet();
    /**
     * optional .session.ConceptSet conceptSet = 4;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder getConceptSetOrBuilder();

    /**
     * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getConceptSetMeasure();
    /**
     * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder getConceptSetMeasureOrBuilder();

    /**
     * optional .session.Value value = 6;
     */
    ai.grakn.rpc.proto.AnswerProto.Value getValue();
    /**
     * optional .session.Value value = 6;
     */
    ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder getValueOrBuilder();

    public ai.grakn.rpc.proto.AnswerProto.Answer.AnswerCase getAnswerCase();
  }
  /**
   * Protobuf type {@code session.Answer}
   */
  public  static final class Answer extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.Answer)
      AnswerOrBuilder {
    // Use Answer.newBuilder() to construct.
    private Answer(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Answer() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Answer(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder subBuilder = null;
              if (answerCase_ == 1) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.AnswerGroup.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 1;
              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder subBuilder = null;
              if (answerCase_ == 2) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptMap.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 2;
              break;
            }
            case 26: {
              ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder subBuilder = null;
              if (answerCase_ == 3) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptList.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 3;
              break;
            }
            case 34: {
              ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder subBuilder = null;
              if (answerCase_ == 4) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 4;
              break;
            }
            case 42: {
              ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder subBuilder = null;
              if (answerCase_ == 5) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 5;
              break;
            }
            case 50: {
              ai.grakn.rpc.proto.AnswerProto.Value.Builder subBuilder = null;
              if (answerCase_ == 6) {
                subBuilder = ((ai.grakn.rpc.proto.AnswerProto.Value) answer_).toBuilder();
              }
              answer_ =
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((ai.grakn.rpc.proto.AnswerProto.Value) answer_);
                answer_ = subBuilder.buildPartial();
              }
              answerCase_ = 6;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Answer_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Answer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.Answer.class, ai.grakn.rpc.proto.AnswerProto.Answer.Builder.class);
    }

    private int answerCase_ = 0;
    private java.lang.Object answer_;
    public enum AnswerCase
        implements com.google.protobuf.Internal.EnumLite {
      ANSWERGROUP(1),
      CONCEPTMAP(2),
      CONCEPTLIST(3),
      CONCEPTSET(4),
      CONCEPTSETMEASURE(5),
      VALUE(6),
      ANSWER_NOT_SET(0);
      private final int value;
      private AnswerCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static AnswerCase valueOf(int value) {
        return forNumber(value);
      }

      public static AnswerCase forNumber(int value) {
        switch (value) {
          case 1: return ANSWERGROUP;
          case 2: return CONCEPTMAP;
          case 3: return CONCEPTLIST;
          case 4: return CONCEPTSET;
          case 5: return CONCEPTSETMEASURE;
          case 6: return VALUE;
          case 0: return ANSWER_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public AnswerCase
    getAnswerCase() {
      return AnswerCase.forNumber(
          answerCase_);
    }

    public static final int ANSWERGROUP_FIELD_NUMBER = 1;
    /**
     * optional .session.AnswerGroup answerGroup = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.AnswerGroup getAnswerGroup() {
      if (answerCase_ == 1) {
         return (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
    }
    /**
     * optional .session.AnswerGroup answerGroup = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder getAnswerGroupOrBuilder() {
      if (answerCase_ == 1) {
         return (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
    }

    public static final int CONCEPTMAP_FIELD_NUMBER = 2;
    /**
     * optional .session.ConceptMap conceptMap = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptMap getConceptMap() {
      if (answerCase_ == 2) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
    }
    /**
     * optional .session.ConceptMap conceptMap = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getConceptMapOrBuilder() {
      if (answerCase_ == 2) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
    }

    public static final int CONCEPTLIST_FIELD_NUMBER = 3;
    /**
     * optional .session.ConceptList conceptList = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptList getConceptList() {
      if (answerCase_ == 3) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
    }
    /**
     * optional .session.ConceptList conceptList = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder getConceptListOrBuilder() {
      if (answerCase_ == 3) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
    }

    public static final int CONCEPTSET_FIELD_NUMBER = 4;
    /**
     * optional .session.ConceptSet conceptSet = 4;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptSet getConceptSet() {
      if (answerCase_ == 4) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
    }
    /**
     * optional .session.ConceptSet conceptSet = 4;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder getConceptSetOrBuilder() {
      if (answerCase_ == 4) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
    }

    public static final int CONCEPTSETMEASURE_FIELD_NUMBER = 5;
    /**
     * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getConceptSetMeasure() {
      if (answerCase_ == 5) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
    }
    /**
     * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder getConceptSetMeasureOrBuilder() {
      if (answerCase_ == 5) {
         return (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
    }

    public static final int VALUE_FIELD_NUMBER = 6;
    /**
     * optional .session.Value value = 6;
     */
    public ai.grakn.rpc.proto.AnswerProto.Value getValue() {
      if (answerCase_ == 6) {
         return (ai.grakn.rpc.proto.AnswerProto.Value) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
    }
    /**
     * optional .session.Value value = 6;
     */
    public ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder getValueOrBuilder() {
      if (answerCase_ == 6) {
         return (ai.grakn.rpc.proto.AnswerProto.Value) answer_;
      }
      return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (answerCase_ == 1) {
        output.writeMessage(1, (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_);
      }
      if (answerCase_ == 2) {
        output.writeMessage(2, (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_);
      }
      if (answerCase_ == 3) {
        output.writeMessage(3, (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_);
      }
      if (answerCase_ == 4) {
        output.writeMessage(4, (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_);
      }
      if (answerCase_ == 5) {
        output.writeMessage(5, (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_);
      }
      if (answerCase_ == 6) {
        output.writeMessage(6, (ai.grakn.rpc.proto.AnswerProto.Value) answer_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (answerCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_);
      }
      if (answerCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_);
      }
      if (answerCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_);
      }
      if (answerCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_);
      }
      if (answerCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_);
      }
      if (answerCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (ai.grakn.rpc.proto.AnswerProto.Value) answer_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.Answer)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.Answer other = (ai.grakn.rpc.proto.AnswerProto.Answer) obj;

      boolean result = true;
      result = result && getAnswerCase().equals(
          other.getAnswerCase());
      if (!result) return false;
      switch (answerCase_) {
        case 1:
          result = result && getAnswerGroup()
              .equals(other.getAnswerGroup());
          break;
        case 2:
          result = result && getConceptMap()
              .equals(other.getConceptMap());
          break;
        case 3:
          result = result && getConceptList()
              .equals(other.getConceptList());
          break;
        case 4:
          result = result && getConceptSet()
              .equals(other.getConceptSet());
          break;
        case 5:
          result = result && getConceptSetMeasure()
              .equals(other.getConceptSetMeasure());
          break;
        case 6:
          result = result && getValue()
              .equals(other.getValue());
          break;
        case 0:
        default:
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      switch (answerCase_) {
        case 1:
          hash = (37 * hash) + ANSWERGROUP_FIELD_NUMBER;
          hash = (53 * hash) + getAnswerGroup().hashCode();
          break;
        case 2:
          hash = (37 * hash) + CONCEPTMAP_FIELD_NUMBER;
          hash = (53 * hash) + getConceptMap().hashCode();
          break;
        case 3:
          hash = (37 * hash) + CONCEPTLIST_FIELD_NUMBER;
          hash = (53 * hash) + getConceptList().hashCode();
          break;
        case 4:
          hash = (37 * hash) + CONCEPTSET_FIELD_NUMBER;
          hash = (53 * hash) + getConceptSet().hashCode();
          break;
        case 5:
          hash = (37 * hash) + CONCEPTSETMEASURE_FIELD_NUMBER;
          hash = (53 * hash) + getConceptSetMeasure().hashCode();
          break;
        case 6:
          hash = (37 * hash) + VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getValue().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Answer parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.Answer prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.Answer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.Answer)
        ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Answer_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Answer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.Answer.class, ai.grakn.rpc.proto.AnswerProto.Answer.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.Answer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        answerCase_ = 0;
        answer_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Answer_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.Answer getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.Answer.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.Answer build() {
        ai.grakn.rpc.proto.AnswerProto.Answer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.Answer buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.Answer result = new ai.grakn.rpc.proto.AnswerProto.Answer(this);
        if (answerCase_ == 1) {
          if (answerGroupBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = answerGroupBuilder_.build();
          }
        }
        if (answerCase_ == 2) {
          if (conceptMapBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = conceptMapBuilder_.build();
          }
        }
        if (answerCase_ == 3) {
          if (conceptListBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = conceptListBuilder_.build();
          }
        }
        if (answerCase_ == 4) {
          if (conceptSetBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = conceptSetBuilder_.build();
          }
        }
        if (answerCase_ == 5) {
          if (conceptSetMeasureBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = conceptSetMeasureBuilder_.build();
          }
        }
        if (answerCase_ == 6) {
          if (valueBuilder_ == null) {
            result.answer_ = answer_;
          } else {
            result.answer_ = valueBuilder_.build();
          }
        }
        result.answerCase_ = answerCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.Answer) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.Answer)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.Answer other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.Answer.getDefaultInstance()) return this;
        switch (other.getAnswerCase()) {
          case ANSWERGROUP: {
            mergeAnswerGroup(other.getAnswerGroup());
            break;
          }
          case CONCEPTMAP: {
            mergeConceptMap(other.getConceptMap());
            break;
          }
          case CONCEPTLIST: {
            mergeConceptList(other.getConceptList());
            break;
          }
          case CONCEPTSET: {
            mergeConceptSet(other.getConceptSet());
            break;
          }
          case CONCEPTSETMEASURE: {
            mergeConceptSetMeasure(other.getConceptSetMeasure());
            break;
          }
          case VALUE: {
            mergeValue(other.getValue());
            break;
          }
          case ANSWER_NOT_SET: {
            break;
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.Answer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.Answer) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int answerCase_ = 0;
      private java.lang.Object answer_;
      public AnswerCase
          getAnswerCase() {
        return AnswerCase.forNumber(
            answerCase_);
      }

      public Builder clearAnswer() {
        answerCase_ = 0;
        answer_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.AnswerGroup, ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder> answerGroupBuilder_;
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.AnswerGroup getAnswerGroup() {
        if (answerGroupBuilder_ == null) {
          if (answerCase_ == 1) {
            return (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
        } else {
          if (answerCase_ == 1) {
            return answerGroupBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
        }
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public Builder setAnswerGroup(ai.grakn.rpc.proto.AnswerProto.AnswerGroup value) {
        if (answerGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          answerGroupBuilder_.setMessage(value);
        }
        answerCase_ = 1;
        return this;
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public Builder setAnswerGroup(
          ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder builderForValue) {
        if (answerGroupBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          answerGroupBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 1;
        return this;
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public Builder mergeAnswerGroup(ai.grakn.rpc.proto.AnswerProto.AnswerGroup value) {
        if (answerGroupBuilder_ == null) {
          if (answerCase_ == 1 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.AnswerGroup.newBuilder((ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 1) {
            answerGroupBuilder_.mergeFrom(value);
          }
          answerGroupBuilder_.setMessage(value);
        }
        answerCase_ = 1;
        return this;
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public Builder clearAnswerGroup() {
        if (answerGroupBuilder_ == null) {
          if (answerCase_ == 1) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 1) {
            answerCase_ = 0;
            answer_ = null;
          }
          answerGroupBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder getAnswerGroupBuilder() {
        return getAnswerGroupFieldBuilder().getBuilder();
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder getAnswerGroupOrBuilder() {
        if ((answerCase_ == 1) && (answerGroupBuilder_ != null)) {
          return answerGroupBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 1) {
            return (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
        }
      }
      /**
       * optional .session.AnswerGroup answerGroup = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.AnswerGroup, ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder> 
          getAnswerGroupFieldBuilder() {
        if (answerGroupBuilder_ == null) {
          if (!(answerCase_ == 1)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
          }
          answerGroupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.AnswerGroup, ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 1;
        onChanged();;
        return answerGroupBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder> conceptMapBuilder_;
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap getConceptMap() {
        if (conceptMapBuilder_ == null) {
          if (answerCase_ == 2) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
        } else {
          if (answerCase_ == 2) {
            return conceptMapBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public Builder setConceptMap(ai.grakn.rpc.proto.AnswerProto.ConceptMap value) {
        if (conceptMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          conceptMapBuilder_.setMessage(value);
        }
        answerCase_ = 2;
        return this;
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public Builder setConceptMap(
          ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder builderForValue) {
        if (conceptMapBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          conceptMapBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 2;
        return this;
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public Builder mergeConceptMap(ai.grakn.rpc.proto.AnswerProto.ConceptMap value) {
        if (conceptMapBuilder_ == null) {
          if (answerCase_ == 2 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptMap.newBuilder((ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 2) {
            conceptMapBuilder_.mergeFrom(value);
          }
          conceptMapBuilder_.setMessage(value);
        }
        answerCase_ = 2;
        return this;
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public Builder clearConceptMap() {
        if (conceptMapBuilder_ == null) {
          if (answerCase_ == 2) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 2) {
            answerCase_ = 0;
            answer_ = null;
          }
          conceptMapBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder getConceptMapBuilder() {
        return getConceptMapFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getConceptMapOrBuilder() {
        if ((answerCase_ == 2) && (conceptMapBuilder_ != null)) {
          return conceptMapBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 2) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptMap conceptMap = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder> 
          getConceptMapFieldBuilder() {
        if (conceptMapBuilder_ == null) {
          if (!(answerCase_ == 2)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
          }
          conceptMapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.ConceptMap) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 2;
        onChanged();;
        return conceptMapBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptList, ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder> conceptListBuilder_;
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptList getConceptList() {
        if (conceptListBuilder_ == null) {
          if (answerCase_ == 3) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
        } else {
          if (answerCase_ == 3) {
            return conceptListBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public Builder setConceptList(ai.grakn.rpc.proto.AnswerProto.ConceptList value) {
        if (conceptListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          conceptListBuilder_.setMessage(value);
        }
        answerCase_ = 3;
        return this;
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public Builder setConceptList(
          ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder builderForValue) {
        if (conceptListBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          conceptListBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 3;
        return this;
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public Builder mergeConceptList(ai.grakn.rpc.proto.AnswerProto.ConceptList value) {
        if (conceptListBuilder_ == null) {
          if (answerCase_ == 3 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptList.newBuilder((ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 3) {
            conceptListBuilder_.mergeFrom(value);
          }
          conceptListBuilder_.setMessage(value);
        }
        answerCase_ = 3;
        return this;
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public Builder clearConceptList() {
        if (conceptListBuilder_ == null) {
          if (answerCase_ == 3) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 3) {
            answerCase_ = 0;
            answer_ = null;
          }
          conceptListBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder getConceptListBuilder() {
        return getConceptListFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder getConceptListOrBuilder() {
        if ((answerCase_ == 3) && (conceptListBuilder_ != null)) {
          return conceptListBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 3) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptList conceptList = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptList, ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder> 
          getConceptListFieldBuilder() {
        if (conceptListBuilder_ == null) {
          if (!(answerCase_ == 3)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
          }
          conceptListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptList, ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.ConceptList) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 3;
        onChanged();;
        return conceptListBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptSet, ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder> conceptSetBuilder_;
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSet getConceptSet() {
        if (conceptSetBuilder_ == null) {
          if (answerCase_ == 4) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
        } else {
          if (answerCase_ == 4) {
            return conceptSetBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public Builder setConceptSet(ai.grakn.rpc.proto.AnswerProto.ConceptSet value) {
        if (conceptSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          conceptSetBuilder_.setMessage(value);
        }
        answerCase_ = 4;
        return this;
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public Builder setConceptSet(
          ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder builderForValue) {
        if (conceptSetBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          conceptSetBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 4;
        return this;
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public Builder mergeConceptSet(ai.grakn.rpc.proto.AnswerProto.ConceptSet value) {
        if (conceptSetBuilder_ == null) {
          if (answerCase_ == 4 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptSet.newBuilder((ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 4) {
            conceptSetBuilder_.mergeFrom(value);
          }
          conceptSetBuilder_.setMessage(value);
        }
        answerCase_ = 4;
        return this;
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public Builder clearConceptSet() {
        if (conceptSetBuilder_ == null) {
          if (answerCase_ == 4) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 4) {
            answerCase_ = 0;
            answer_ = null;
          }
          conceptSetBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder getConceptSetBuilder() {
        return getConceptSetFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder getConceptSetOrBuilder() {
        if ((answerCase_ == 4) && (conceptSetBuilder_ != null)) {
          return conceptSetBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 4) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptSet conceptSet = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptSet, ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder> 
          getConceptSetFieldBuilder() {
        if (conceptSetBuilder_ == null) {
          if (!(answerCase_ == 4)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
          }
          conceptSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptSet, ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.ConceptSet) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 4;
        onChanged();;
        return conceptSetBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder> conceptSetMeasureBuilder_;
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getConceptSetMeasure() {
        if (conceptSetMeasureBuilder_ == null) {
          if (answerCase_ == 5) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
        } else {
          if (answerCase_ == 5) {
            return conceptSetMeasureBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public Builder setConceptSetMeasure(ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure value) {
        if (conceptSetMeasureBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          conceptSetMeasureBuilder_.setMessage(value);
        }
        answerCase_ = 5;
        return this;
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public Builder setConceptSetMeasure(
          ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder builderForValue) {
        if (conceptSetMeasureBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          conceptSetMeasureBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 5;
        return this;
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public Builder mergeConceptSetMeasure(ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure value) {
        if (conceptSetMeasureBuilder_ == null) {
          if (answerCase_ == 5 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.newBuilder((ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 5) {
            conceptSetMeasureBuilder_.mergeFrom(value);
          }
          conceptSetMeasureBuilder_.setMessage(value);
        }
        answerCase_ = 5;
        return this;
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public Builder clearConceptSetMeasure() {
        if (conceptSetMeasureBuilder_ == null) {
          if (answerCase_ == 5) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 5) {
            answerCase_ = 0;
            answer_ = null;
          }
          conceptSetMeasureBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder getConceptSetMeasureBuilder() {
        return getConceptSetMeasureFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder getConceptSetMeasureOrBuilder() {
        if ((answerCase_ == 5) && (conceptSetMeasureBuilder_ != null)) {
          return conceptSetMeasureBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 5) {
            return (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
        }
      }
      /**
       * optional .session.ConceptSetMeasure conceptSetMeasure = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder> 
          getConceptSetMeasureFieldBuilder() {
        if (conceptSetMeasureBuilder_ == null) {
          if (!(answerCase_ == 5)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
          }
          conceptSetMeasureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 5;
        onChanged();;
        return conceptSetMeasureBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Value, ai.grakn.rpc.proto.AnswerProto.Value.Builder, ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder> valueBuilder_;
      /**
       * optional .session.Value value = 6;
       */
      public ai.grakn.rpc.proto.AnswerProto.Value getValue() {
        if (valueBuilder_ == null) {
          if (answerCase_ == 6) {
            return (ai.grakn.rpc.proto.AnswerProto.Value) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
        } else {
          if (answerCase_ == 6) {
            return valueBuilder_.getMessage();
          }
          return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
        }
      }
      /**
       * optional .session.Value value = 6;
       */
      public Builder setValue(ai.grakn.rpc.proto.AnswerProto.Value value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          answer_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }
        answerCase_ = 6;
        return this;
      }
      /**
       * optional .session.Value value = 6;
       */
      public Builder setValue(
          ai.grakn.rpc.proto.AnswerProto.Value.Builder builderForValue) {
        if (valueBuilder_ == null) {
          answer_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        answerCase_ = 6;
        return this;
      }
      /**
       * optional .session.Value value = 6;
       */
      public Builder mergeValue(ai.grakn.rpc.proto.AnswerProto.Value value) {
        if (valueBuilder_ == null) {
          if (answerCase_ == 6 &&
              answer_ != ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance()) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.Value.newBuilder((ai.grakn.rpc.proto.AnswerProto.Value) answer_)
                .mergeFrom(value).buildPartial();
          } else {
            answer_ = value;
          }
          onChanged();
        } else {
          if (answerCase_ == 6) {
            valueBuilder_.mergeFrom(value);
          }
          valueBuilder_.setMessage(value);
        }
        answerCase_ = 6;
        return this;
      }
      /**
       * optional .session.Value value = 6;
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          if (answerCase_ == 6) {
            answerCase_ = 0;
            answer_ = null;
            onChanged();
          }
        } else {
          if (answerCase_ == 6) {
            answerCase_ = 0;
            answer_ = null;
          }
          valueBuilder_.clear();
        }
        return this;
      }
      /**
       * optional .session.Value value = 6;
       */
      public ai.grakn.rpc.proto.AnswerProto.Value.Builder getValueBuilder() {
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Value value = 6;
       */
      public ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder getValueOrBuilder() {
        if ((answerCase_ == 6) && (valueBuilder_ != null)) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          if (answerCase_ == 6) {
            return (ai.grakn.rpc.proto.AnswerProto.Value) answer_;
          }
          return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
        }
      }
      /**
       * optional .session.Value value = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Value, ai.grakn.rpc.proto.AnswerProto.Value.Builder, ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          if (!(answerCase_ == 6)) {
            answer_ = ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
          }
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Value, ai.grakn.rpc.proto.AnswerProto.Value.Builder, ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder>(
                  (ai.grakn.rpc.proto.AnswerProto.Value) answer_,
                  getParentForChildren(),
                  isClean());
          answer_ = null;
        }
        answerCase_ = 6;
        onChanged();;
        return valueBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.Answer)
    }

    // @@protoc_insertion_point(class_scope:session.Answer)
    private static final ai.grakn.rpc.proto.AnswerProto.Answer DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.Answer();
    }

    public static ai.grakn.rpc.proto.AnswerProto.Answer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public Answer parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new Answer(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.Answer getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExplanationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.Explanation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional string pattern = 1;
     */
    java.lang.String getPattern();
    /**
     * optional string pattern = 1;
     */
    com.google.protobuf.ByteString
        getPatternBytes();

    /**
     * repeated .session.ConceptMap answers = 2;
     */
    java.util.List 
        getAnswersList();
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptMap getAnswers(int index);
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    int getAnswersCount();
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    java.util.List 
        getAnswersOrBuilderList();
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getAnswersOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code session.Explanation}
   */
  public  static final class Explanation extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.Explanation)
      ExplanationOrBuilder {
    // Use Explanation.newBuilder() to construct.
    private Explanation(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Explanation() {
      pattern_ = "";
      answers_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Explanation(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              pattern_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                answers_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              answers_.add(
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptMap.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          answers_ = java.util.Collections.unmodifiableList(answers_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Explanation_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Explanation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.Explanation.class, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder.class);
    }

    private int bitField0_;
    public static final int PATTERN_FIELD_NUMBER = 1;
    private volatile java.lang.Object pattern_;
    /**
     * optional string pattern = 1;
     */
    public java.lang.String getPattern() {
      java.lang.Object ref = pattern_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pattern_ = s;
        return s;
      }
    }
    /**
     * optional string pattern = 1;
     */
    public com.google.protobuf.ByteString
        getPatternBytes() {
      java.lang.Object ref = pattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ANSWERS_FIELD_NUMBER = 2;
    private java.util.List answers_;
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    public java.util.List getAnswersList() {
      return answers_;
    }
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    public java.util.List 
        getAnswersOrBuilderList() {
      return answers_;
    }
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    public int getAnswersCount() {
      return answers_.size();
    }
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptMap getAnswers(int index) {
      return answers_.get(index);
    }
    /**
     * repeated .session.ConceptMap answers = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getAnswersOrBuilder(
        int index) {
      return answers_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPatternBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, pattern_);
      }
      for (int i = 0; i < answers_.size(); i++) {
        output.writeMessage(2, answers_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPatternBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, pattern_);
      }
      for (int i = 0; i < answers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, answers_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.Explanation)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.Explanation other = (ai.grakn.rpc.proto.AnswerProto.Explanation) obj;

      boolean result = true;
      result = result && getPattern()
          .equals(other.getPattern());
      result = result && getAnswersList()
          .equals(other.getAnswersList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + PATTERN_FIELD_NUMBER;
      hash = (53 * hash) + getPattern().hashCode();
      if (getAnswersCount() > 0) {
        hash = (37 * hash) + ANSWERS_FIELD_NUMBER;
        hash = (53 * hash) + getAnswersList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Explanation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.Explanation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.Explanation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.Explanation)
        ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Explanation_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Explanation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.Explanation.class, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAnswersFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        pattern_ = "";

        if (answersBuilder_ == null) {
          answers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          answersBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Explanation_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.Explanation getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.Explanation build() {
        ai.grakn.rpc.proto.AnswerProto.Explanation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.Explanation buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.Explanation result = new ai.grakn.rpc.proto.AnswerProto.Explanation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.pattern_ = pattern_;
        if (answersBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            answers_ = java.util.Collections.unmodifiableList(answers_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.answers_ = answers_;
        } else {
          result.answers_ = answersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.Explanation) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.Explanation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.Explanation other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance()) return this;
        if (!other.getPattern().isEmpty()) {
          pattern_ = other.pattern_;
          onChanged();
        }
        if (answersBuilder_ == null) {
          if (!other.answers_.isEmpty()) {
            if (answers_.isEmpty()) {
              answers_ = other.answers_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAnswersIsMutable();
              answers_.addAll(other.answers_);
            }
            onChanged();
          }
        } else {
          if (!other.answers_.isEmpty()) {
            if (answersBuilder_.isEmpty()) {
              answersBuilder_.dispose();
              answersBuilder_ = null;
              answers_ = other.answers_;
              bitField0_ = (bitField0_ & ~0x00000002);
              answersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAnswersFieldBuilder() : null;
            } else {
              answersBuilder_.addAllMessages(other.answers_);
            }
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.Explanation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.Explanation) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object pattern_ = "";
      /**
       * optional string pattern = 1;
       */
      public java.lang.String getPattern() {
        java.lang.Object ref = pattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string pattern = 1;
       */
      public com.google.protobuf.ByteString
          getPatternBytes() {
        java.lang.Object ref = pattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string pattern = 1;
       */
      public Builder setPattern(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pattern_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string pattern = 1;
       */
      public Builder clearPattern() {
        
        pattern_ = getDefaultInstance().getPattern();
        onChanged();
        return this;
      }
      /**
       * optional string pattern = 1;
       */
      public Builder setPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        pattern_ = value;
        onChanged();
        return this;
      }

      private java.util.List answers_ =
        java.util.Collections.emptyList();
      private void ensureAnswersIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          answers_ = new java.util.ArrayList(answers_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder> answersBuilder_;

      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public java.util.List getAnswersList() {
        if (answersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(answers_);
        } else {
          return answersBuilder_.getMessageList();
        }
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public int getAnswersCount() {
        if (answersBuilder_ == null) {
          return answers_.size();
        } else {
          return answersBuilder_.getCount();
        }
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap getAnswers(int index) {
        if (answersBuilder_ == null) {
          return answers_.get(index);
        } else {
          return answersBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder setAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.ConceptMap value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.set(index, value);
          onChanged();
        } else {
          answersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder setAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.set(index, builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder addAnswers(ai.grakn.rpc.proto.AnswerProto.ConceptMap value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.add(value);
          onChanged();
        } else {
          answersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder addAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.ConceptMap value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.add(index, value);
          onChanged();
        } else {
          answersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder addAnswers(
          ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.add(builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder addAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.add(index, builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder addAllAnswers(
          java.lang.Iterable values) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, answers_);
          onChanged();
        } else {
          answersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder clearAnswers() {
        if (answersBuilder_ == null) {
          answers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          answersBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public Builder removeAnswers(int index) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.remove(index);
          onChanged();
        } else {
          answersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder getAnswersBuilder(
          int index) {
        return getAnswersFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder getAnswersOrBuilder(
          int index) {
        if (answersBuilder_ == null) {
          return answers_.get(index);  } else {
          return answersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public java.util.List 
           getAnswersOrBuilderList() {
        if (answersBuilder_ != null) {
          return answersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(answers_);
        }
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder addAnswersBuilder() {
        return getAnswersFieldBuilder().addBuilder(
            ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance());
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder addAnswersBuilder(
          int index) {
        return getAnswersFieldBuilder().addBuilder(
            index, ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance());
      }
      /**
       * repeated .session.ConceptMap answers = 2;
       */
      public java.util.List 
           getAnswersBuilderList() {
        return getAnswersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder> 
          getAnswersFieldBuilder() {
        if (answersBuilder_ == null) {
          answersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptMap, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder>(
                  answers_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          answers_ = null;
        }
        return answersBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.Explanation)
    }

    // @@protoc_insertion_point(class_scope:session.Explanation)
    private static final ai.grakn.rpc.proto.AnswerProto.Explanation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.Explanation();
    }

    public static ai.grakn.rpc.proto.AnswerProto.Explanation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public Explanation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new Explanation(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.Explanation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AnswerGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.AnswerGroup)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.Concept owner = 1;
     */
    boolean hasOwner();
    /**
     * optional .session.Concept owner = 1;
     */
    ai.grakn.rpc.proto.ConceptProto.Concept getOwner();
    /**
     * optional .session.Concept owner = 1;
     */
    ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder getOwnerOrBuilder();

    /**
     * repeated .session.Answer answers = 2;
     */
    java.util.List 
        getAnswersList();
    /**
     * repeated .session.Answer answers = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Answer getAnswers(int index);
    /**
     * repeated .session.Answer answers = 2;
     */
    int getAnswersCount();
    /**
     * repeated .session.Answer answers = 2;
     */
    java.util.List 
        getAnswersOrBuilderList();
    /**
     * repeated .session.Answer answers = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder getAnswersOrBuilder(
        int index);

    /**
     * optional .session.Explanation explanation = 3;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.AnswerGroup}
   */
  public  static final class AnswerGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.AnswerGroup)
      AnswerGroupOrBuilder {
    // Use AnswerGroup.newBuilder() to construct.
    private AnswerGroup(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private AnswerGroup() {
      answers_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private AnswerGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.ConceptProto.Concept.Builder subBuilder = null;
              if (owner_ != null) {
                subBuilder = owner_.toBuilder();
              }
              owner_ = input.readMessage(ai.grakn.rpc.proto.ConceptProto.Concept.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(owner_);
                owner_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                answers_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              answers_.add(
                  input.readMessage(ai.grakn.rpc.proto.AnswerProto.Answer.parser(), extensionRegistry));
              break;
            }
            case 26: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          answers_ = java.util.Collections.unmodifiableList(answers_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_AnswerGroup_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_AnswerGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.AnswerGroup.class, ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder.class);
    }

    private int bitField0_;
    public static final int OWNER_FIELD_NUMBER = 1;
    private ai.grakn.rpc.proto.ConceptProto.Concept owner_;
    /**
     * optional .session.Concept owner = 1;
     */
    public boolean hasOwner() {
      return owner_ != null;
    }
    /**
     * optional .session.Concept owner = 1;
     */
    public ai.grakn.rpc.proto.ConceptProto.Concept getOwner() {
      return owner_ == null ? ai.grakn.rpc.proto.ConceptProto.Concept.getDefaultInstance() : owner_;
    }
    /**
     * optional .session.Concept owner = 1;
     */
    public ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder getOwnerOrBuilder() {
      return getOwner();
    }

    public static final int ANSWERS_FIELD_NUMBER = 2;
    private java.util.List answers_;
    /**
     * repeated .session.Answer answers = 2;
     */
    public java.util.List getAnswersList() {
      return answers_;
    }
    /**
     * repeated .session.Answer answers = 2;
     */
    public java.util.List 
        getAnswersOrBuilderList() {
      return answers_;
    }
    /**
     * repeated .session.Answer answers = 2;
     */
    public int getAnswersCount() {
      return answers_.size();
    }
    /**
     * repeated .session.Answer answers = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Answer getAnswers(int index) {
      return answers_.get(index);
    }
    /**
     * repeated .session.Answer answers = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder getAnswersOrBuilder(
        int index) {
      return answers_.get(index);
    }

    public static final int EXPLANATION_FIELD_NUMBER = 3;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 3;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (owner_ != null) {
        output.writeMessage(1, getOwner());
      }
      for (int i = 0; i < answers_.size(); i++) {
        output.writeMessage(2, answers_.get(i));
      }
      if (explanation_ != null) {
        output.writeMessage(3, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (owner_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getOwner());
      }
      for (int i = 0; i < answers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, answers_.get(i));
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.AnswerGroup)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.AnswerGroup other = (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) obj;

      boolean result = true;
      result = result && (hasOwner() == other.hasOwner());
      if (hasOwner()) {
        result = result && getOwner()
            .equals(other.getOwner());
      }
      result = result && getAnswersList()
          .equals(other.getAnswersList());
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasOwner()) {
        hash = (37 * hash) + OWNER_FIELD_NUMBER;
        hash = (53 * hash) + getOwner().hashCode();
      }
      if (getAnswersCount() > 0) {
        hash = (37 * hash) + ANSWERS_FIELD_NUMBER;
        hash = (53 * hash) + getAnswersList().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.AnswerGroup prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.AnswerGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.AnswerGroup)
        ai.grakn.rpc.proto.AnswerProto.AnswerGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_AnswerGroup_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_AnswerGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.AnswerGroup.class, ai.grakn.rpc.proto.AnswerProto.AnswerGroup.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.AnswerGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAnswersFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (ownerBuilder_ == null) {
          owner_ = null;
        } else {
          owner_ = null;
          ownerBuilder_ = null;
        }
        if (answersBuilder_ == null) {
          answers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          answersBuilder_.clear();
        }
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_AnswerGroup_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.AnswerGroup getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.AnswerGroup build() {
        ai.grakn.rpc.proto.AnswerProto.AnswerGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.AnswerGroup buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.AnswerGroup result = new ai.grakn.rpc.proto.AnswerProto.AnswerGroup(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (ownerBuilder_ == null) {
          result.owner_ = owner_;
        } else {
          result.owner_ = ownerBuilder_.build();
        }
        if (answersBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            answers_ = java.util.Collections.unmodifiableList(answers_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.answers_ = answers_;
        } else {
          result.answers_ = answersBuilder_.build();
        }
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.AnswerGroup) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.AnswerGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.AnswerGroup other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.AnswerGroup.getDefaultInstance()) return this;
        if (other.hasOwner()) {
          mergeOwner(other.getOwner());
        }
        if (answersBuilder_ == null) {
          if (!other.answers_.isEmpty()) {
            if (answers_.isEmpty()) {
              answers_ = other.answers_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAnswersIsMutable();
              answers_.addAll(other.answers_);
            }
            onChanged();
          }
        } else {
          if (!other.answers_.isEmpty()) {
            if (answersBuilder_.isEmpty()) {
              answersBuilder_.dispose();
              answersBuilder_ = null;
              answers_ = other.answers_;
              bitField0_ = (bitField0_ & ~0x00000002);
              answersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAnswersFieldBuilder() : null;
            } else {
              answersBuilder_.addAllMessages(other.answers_);
            }
          }
        }
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.AnswerGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.AnswerGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private ai.grakn.rpc.proto.ConceptProto.Concept owner_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.ConceptProto.Concept, ai.grakn.rpc.proto.ConceptProto.Concept.Builder, ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder> ownerBuilder_;
      /**
       * optional .session.Concept owner = 1;
       */
      public boolean hasOwner() {
        return ownerBuilder_ != null || owner_ != null;
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public ai.grakn.rpc.proto.ConceptProto.Concept getOwner() {
        if (ownerBuilder_ == null) {
          return owner_ == null ? ai.grakn.rpc.proto.ConceptProto.Concept.getDefaultInstance() : owner_;
        } else {
          return ownerBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public Builder setOwner(ai.grakn.rpc.proto.ConceptProto.Concept value) {
        if (ownerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          owner_ = value;
          onChanged();
        } else {
          ownerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public Builder setOwner(
          ai.grakn.rpc.proto.ConceptProto.Concept.Builder builderForValue) {
        if (ownerBuilder_ == null) {
          owner_ = builderForValue.build();
          onChanged();
        } else {
          ownerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public Builder mergeOwner(ai.grakn.rpc.proto.ConceptProto.Concept value) {
        if (ownerBuilder_ == null) {
          if (owner_ != null) {
            owner_ =
              ai.grakn.rpc.proto.ConceptProto.Concept.newBuilder(owner_).mergeFrom(value).buildPartial();
          } else {
            owner_ = value;
          }
          onChanged();
        } else {
          ownerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public Builder clearOwner() {
        if (ownerBuilder_ == null) {
          owner_ = null;
          onChanged();
        } else {
          owner_ = null;
          ownerBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public ai.grakn.rpc.proto.ConceptProto.Concept.Builder getOwnerBuilder() {
        
        onChanged();
        return getOwnerFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Concept owner = 1;
       */
      public ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder getOwnerOrBuilder() {
        if (ownerBuilder_ != null) {
          return ownerBuilder_.getMessageOrBuilder();
        } else {
          return owner_ == null ?
              ai.grakn.rpc.proto.ConceptProto.Concept.getDefaultInstance() : owner_;
        }
      }
      /**
       * optional .session.Concept owner = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.ConceptProto.Concept, ai.grakn.rpc.proto.ConceptProto.Concept.Builder, ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder> 
          getOwnerFieldBuilder() {
        if (ownerBuilder_ == null) {
          ownerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.ConceptProto.Concept, ai.grakn.rpc.proto.ConceptProto.Concept.Builder, ai.grakn.rpc.proto.ConceptProto.ConceptOrBuilder>(
                  getOwner(),
                  getParentForChildren(),
                  isClean());
          owner_ = null;
        }
        return ownerBuilder_;
      }

      private java.util.List answers_ =
        java.util.Collections.emptyList();
      private void ensureAnswersIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          answers_ = new java.util.ArrayList(answers_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Answer, ai.grakn.rpc.proto.AnswerProto.Answer.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder> answersBuilder_;

      /**
       * repeated .session.Answer answers = 2;
       */
      public java.util.List getAnswersList() {
        if (answersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(answers_);
        } else {
          return answersBuilder_.getMessageList();
        }
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public int getAnswersCount() {
        if (answersBuilder_ == null) {
          return answers_.size();
        } else {
          return answersBuilder_.getCount();
        }
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Answer getAnswers(int index) {
        if (answersBuilder_ == null) {
          return answers_.get(index);
        } else {
          return answersBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder setAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.Answer value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.set(index, value);
          onChanged();
        } else {
          answersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder setAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.Answer.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.set(index, builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder addAnswers(ai.grakn.rpc.proto.AnswerProto.Answer value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.add(value);
          onChanged();
        } else {
          answersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder addAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.Answer value) {
        if (answersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnswersIsMutable();
          answers_.add(index, value);
          onChanged();
        } else {
          answersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder addAnswers(
          ai.grakn.rpc.proto.AnswerProto.Answer.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.add(builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder addAnswers(
          int index, ai.grakn.rpc.proto.AnswerProto.Answer.Builder builderForValue) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.add(index, builderForValue.build());
          onChanged();
        } else {
          answersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder addAllAnswers(
          java.lang.Iterable values) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, answers_);
          onChanged();
        } else {
          answersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder clearAnswers() {
        if (answersBuilder_ == null) {
          answers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          answersBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public Builder removeAnswers(int index) {
        if (answersBuilder_ == null) {
          ensureAnswersIsMutable();
          answers_.remove(index);
          onChanged();
        } else {
          answersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Answer.Builder getAnswersBuilder(
          int index) {
        return getAnswersFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder getAnswersOrBuilder(
          int index) {
        if (answersBuilder_ == null) {
          return answers_.get(index);  } else {
          return answersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public java.util.List 
           getAnswersOrBuilderList() {
        if (answersBuilder_ != null) {
          return answersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(answers_);
        }
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Answer.Builder addAnswersBuilder() {
        return getAnswersFieldBuilder().addBuilder(
            ai.grakn.rpc.proto.AnswerProto.Answer.getDefaultInstance());
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Answer.Builder addAnswersBuilder(
          int index) {
        return getAnswersFieldBuilder().addBuilder(
            index, ai.grakn.rpc.proto.AnswerProto.Answer.getDefaultInstance());
      }
      /**
       * repeated .session.Answer answers = 2;
       */
      public java.util.List 
           getAnswersBuilderList() {
        return getAnswersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Answer, ai.grakn.rpc.proto.AnswerProto.Answer.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder> 
          getAnswersFieldBuilder() {
        if (answersBuilder_ == null) {
          answersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Answer, ai.grakn.rpc.proto.AnswerProto.Answer.Builder, ai.grakn.rpc.proto.AnswerProto.AnswerOrBuilder>(
                  answers_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          answers_ = null;
        }
        return answersBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 3;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.AnswerGroup)
    }

    // @@protoc_insertion_point(class_scope:session.AnswerGroup)
    private static final ai.grakn.rpc.proto.AnswerProto.AnswerGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.AnswerGroup();
    }

    public static ai.grakn.rpc.proto.AnswerProto.AnswerGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public AnswerGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new AnswerGroup(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.AnswerGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConceptMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.ConceptMap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * map<string, .session.Concept> map = 1;
     */
    int getMapCount();
    /**
     * map<string, .session.Concept> map = 1;
     */
    boolean containsMap(
        java.lang.String key);
    /**
     * Use {@link #getMapMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getMap();
    /**
     * map<string, .session.Concept> map = 1;
     */
    java.util.Map
    getMapMap();
    /**
     * map<string, .session.Concept> map = 1;
     */

    ai.grakn.rpc.proto.ConceptProto.Concept getMapOrDefault(
        java.lang.String key,
        ai.grakn.rpc.proto.ConceptProto.Concept defaultValue);
    /**
     * map<string, .session.Concept> map = 1;
     */

    ai.grakn.rpc.proto.ConceptProto.Concept getMapOrThrow(
        java.lang.String key);

    /**
     * optional .session.Explanation explanation = 2;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.ConceptMap}
   */
  public  static final class ConceptMap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.ConceptMap)
      ConceptMapOrBuilder {
    // Use ConceptMap.newBuilder() to construct.
    private ConceptMap(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConceptMap() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ConceptMap(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                map_ = com.google.protobuf.MapField.newMapField(
                    MapDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              map = input.readMessage(
                  MapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              map_.getMutableMap().put(map.getKey(), map.getValue());
              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.ConceptMap.class, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder.class);
    }

    private int bitField0_;
    public static final int MAP_FIELD_NUMBER = 1;
    private static final class MapDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, ai.grakn.rpc.proto.ConceptProto.Concept> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_MapEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  ai.grakn.rpc.proto.ConceptProto.Concept.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        java.lang.String, ai.grakn.rpc.proto.ConceptProto.Concept> map_;
    private com.google.protobuf.MapField
    internalGetMap() {
      if (map_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MapDefaultEntryHolder.defaultEntry);
      }
      return map_;
    }

    public int getMapCount() {
      return internalGetMap().getMap().size();
    }
    /**
     * map<string, .session.Concept> map = 1;
     */

    public boolean containsMap(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetMap().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMapMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map getMap() {
      return getMapMap();
    }
    /**
     * map<string, .session.Concept> map = 1;
     */

    public java.util.Map getMapMap() {
      return internalGetMap().getMap();
    }
    /**
     * map<string, .session.Concept> map = 1;
     */

    public ai.grakn.rpc.proto.ConceptProto.Concept getMapOrDefault(
        java.lang.String key,
        ai.grakn.rpc.proto.ConceptProto.Concept defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map map =
          internalGetMap().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * map<string, .session.Concept> map = 1;
     */

    public ai.grakn.rpc.proto.ConceptProto.Concept getMapOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map map =
          internalGetMap().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int EXPLANATION_FIELD_NUMBER = 2;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 2;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (java.util.Map.Entry entry
           : internalGetMap().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        map = MapDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        output.writeMessage(1, map);
      }
      if (explanation_ != null) {
        output.writeMessage(2, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry entry
           : internalGetMap().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        map = MapDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, map);
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.ConceptMap)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.ConceptMap other = (ai.grakn.rpc.proto.AnswerProto.ConceptMap) obj;

      boolean result = true;
      result = result && internalGetMap().equals(
          other.internalGetMap());
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (!internalGetMap().getMap().isEmpty()) {
        hash = (37 * hash) + MAP_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMap().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.ConceptMap prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.ConceptMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.ConceptMap)
        ai.grakn.rpc.proto.AnswerProto.ConceptMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.ConceptMap.class, ai.grakn.rpc.proto.AnswerProto.ConceptMap.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.ConceptMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        internalGetMutableMap().clear();
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptMap_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptMap getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptMap build() {
        ai.grakn.rpc.proto.AnswerProto.ConceptMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptMap buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.ConceptMap result = new ai.grakn.rpc.proto.AnswerProto.ConceptMap(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.map_ = internalGetMap();
        result.map_.makeImmutable();
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.ConceptMap) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.ConceptMap other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.ConceptMap.getDefaultInstance()) return this;
        internalGetMutableMap().mergeFrom(
            other.internalGetMap());
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.ConceptMap parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.ConceptMap) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, ai.grakn.rpc.proto.ConceptProto.Concept> map_;
      private com.google.protobuf.MapField
      internalGetMap() {
        if (map_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MapDefaultEntryHolder.defaultEntry);
        }
        return map_;
      }
      private com.google.protobuf.MapField
      internalGetMutableMap() {
        onChanged();;
        if (map_ == null) {
          map_ = com.google.protobuf.MapField.newMapField(
              MapDefaultEntryHolder.defaultEntry);
        }
        if (!map_.isMutable()) {
          map_ = map_.copy();
        }
        return map_;
      }

      public int getMapCount() {
        return internalGetMap().getMap().size();
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public boolean containsMap(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetMap().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMapMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map getMap() {
        return getMapMap();
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public java.util.Map getMapMap() {
        return internalGetMap().getMap();
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public ai.grakn.rpc.proto.ConceptProto.Concept getMapOrDefault(
          java.lang.String key,
          ai.grakn.rpc.proto.ConceptProto.Concept defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map map =
            internalGetMap().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public ai.grakn.rpc.proto.ConceptProto.Concept getMapOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map map =
            internalGetMap().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMap() {
        getMutableMap().clear();
        return this;
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public Builder removeMap(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        getMutableMap().remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableMap() {
        return internalGetMutableMap().getMutableMap();
      }
      /**
       * map<string, .session.Concept> map = 1;
       */
      public Builder putMap(
          java.lang.String key,
          ai.grakn.rpc.proto.ConceptProto.Concept value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        getMutableMap().put(key, value);
        return this;
      }
      /**
       * map<string, .session.Concept> map = 1;
       */

      public Builder putAllMap(
          java.util.Map values) {
        getMutableMap().putAll(values);
        return this;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 2;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.ConceptMap)
    }

    // @@protoc_insertion_point(class_scope:session.ConceptMap)
    private static final ai.grakn.rpc.proto.AnswerProto.ConceptMap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.ConceptMap();
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public ConceptMap parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ConceptMap(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.ConceptMap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConceptListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.ConceptList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.ConceptIds list = 1;
     */
    boolean hasList();
    /**
     * optional .session.ConceptIds list = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIds getList();
    /**
     * optional .session.ConceptIds list = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getListOrBuilder();

    /**
     * optional .session.Explanation explanation = 2;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.ConceptList}
   */
  public  static final class ConceptList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.ConceptList)
      ConceptListOrBuilder {
    // Use ConceptList.newBuilder() to construct.
    private ConceptList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConceptList() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ConceptList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder subBuilder = null;
              if (list_ != null) {
                subBuilder = list_.toBuilder();
              }
              list_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptIds.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(list_);
                list_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.ConceptList.class, ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder.class);
    }

    public static final int LIST_FIELD_NUMBER = 1;
    private ai.grakn.rpc.proto.AnswerProto.ConceptIds list_;
    /**
     * optional .session.ConceptIds list = 1;
     */
    public boolean hasList() {
      return list_ != null;
    }
    /**
     * optional .session.ConceptIds list = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIds getList() {
      return list_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : list_;
    }
    /**
     * optional .session.ConceptIds list = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getListOrBuilder() {
      return getList();
    }

    public static final int EXPLANATION_FIELD_NUMBER = 2;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 2;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (list_ != null) {
        output.writeMessage(1, getList());
      }
      if (explanation_ != null) {
        output.writeMessage(2, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (list_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getList());
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.ConceptList)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.ConceptList other = (ai.grakn.rpc.proto.AnswerProto.ConceptList) obj;

      boolean result = true;
      result = result && (hasList() == other.hasList());
      if (hasList()) {
        result = result && getList()
            .equals(other.getList());
      }
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasList()) {
        hash = (37 * hash) + LIST_FIELD_NUMBER;
        hash = (53 * hash) + getList().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.ConceptList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.ConceptList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.ConceptList)
        ai.grakn.rpc.proto.AnswerProto.ConceptListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.ConceptList.class, ai.grakn.rpc.proto.AnswerProto.ConceptList.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.ConceptList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (listBuilder_ == null) {
          list_ = null;
        } else {
          list_ = null;
          listBuilder_ = null;
        }
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptList_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptList getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptList build() {
        ai.grakn.rpc.proto.AnswerProto.ConceptList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptList buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.ConceptList result = new ai.grakn.rpc.proto.AnswerProto.ConceptList(this);
        if (listBuilder_ == null) {
          result.list_ = list_;
        } else {
          result.list_ = listBuilder_.build();
        }
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.ConceptList) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.ConceptList other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.ConceptList.getDefaultInstance()) return this;
        if (other.hasList()) {
          mergeList(other.getList());
        }
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.ConceptList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.ConceptList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private ai.grakn.rpc.proto.AnswerProto.ConceptIds list_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> listBuilder_;
      /**
       * optional .session.ConceptIds list = 1;
       */
      public boolean hasList() {
        return listBuilder_ != null || list_ != null;
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds getList() {
        if (listBuilder_ == null) {
          return list_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : list_;
        } else {
          return listBuilder_.getMessage();
        }
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public Builder setList(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (listBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          list_ = value;
          onChanged();
        } else {
          listBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public Builder setList(
          ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder builderForValue) {
        if (listBuilder_ == null) {
          list_ = builderForValue.build();
          onChanged();
        } else {
          listBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public Builder mergeList(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (listBuilder_ == null) {
          if (list_ != null) {
            list_ =
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.newBuilder(list_).mergeFrom(value).buildPartial();
          } else {
            list_ = value;
          }
          onChanged();
        } else {
          listBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public Builder clearList() {
        if (listBuilder_ == null) {
          list_ = null;
          onChanged();
        } else {
          list_ = null;
          listBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder getListBuilder() {
        
        onChanged();
        return getListFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getListOrBuilder() {
        if (listBuilder_ != null) {
          return listBuilder_.getMessageOrBuilder();
        } else {
          return list_ == null ?
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : list_;
        }
      }
      /**
       * optional .session.ConceptIds list = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> 
          getListFieldBuilder() {
        if (listBuilder_ == null) {
          listBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder>(
                  getList(),
                  getParentForChildren(),
                  isClean());
          list_ = null;
        }
        return listBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 2;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.ConceptList)
    }

    // @@protoc_insertion_point(class_scope:session.ConceptList)
    private static final ai.grakn.rpc.proto.AnswerProto.ConceptList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.ConceptList();
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public ConceptList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ConceptList(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.ConceptList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConceptSetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.ConceptSet)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.ConceptIds set = 1;
     */
    boolean hasSet();
    /**
     * optional .session.ConceptIds set = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet();
    /**
     * optional .session.ConceptIds set = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder();

    /**
     * optional .session.Explanation explanation = 2;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.ConceptSet}
   */
  public  static final class ConceptSet extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.ConceptSet)
      ConceptSetOrBuilder {
    // Use ConceptSet.newBuilder() to construct.
    private ConceptSet(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConceptSet() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ConceptSet(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder subBuilder = null;
              if (set_ != null) {
                subBuilder = set_.toBuilder();
              }
              set_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptIds.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(set_);
                set_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSet_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSet_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.ConceptSet.class, ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder.class);
    }

    public static final int SET_FIELD_NUMBER = 1;
    private ai.grakn.rpc.proto.AnswerProto.ConceptIds set_;
    /**
     * optional .session.ConceptIds set = 1;
     */
    public boolean hasSet() {
      return set_ != null;
    }
    /**
     * optional .session.ConceptIds set = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet() {
      return set_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
    }
    /**
     * optional .session.ConceptIds set = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder() {
      return getSet();
    }

    public static final int EXPLANATION_FIELD_NUMBER = 2;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 2;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (set_ != null) {
        output.writeMessage(1, getSet());
      }
      if (explanation_ != null) {
        output.writeMessage(2, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (set_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSet());
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.ConceptSet)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.ConceptSet other = (ai.grakn.rpc.proto.AnswerProto.ConceptSet) obj;

      boolean result = true;
      result = result && (hasSet() == other.hasSet());
      if (hasSet()) {
        result = result && getSet()
            .equals(other.getSet());
      }
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasSet()) {
        hash = (37 * hash) + SET_FIELD_NUMBER;
        hash = (53 * hash) + getSet().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.ConceptSet prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.ConceptSet}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.ConceptSet)
        ai.grakn.rpc.proto.AnswerProto.ConceptSetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSet_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.ConceptSet.class, ai.grakn.rpc.proto.AnswerProto.ConceptSet.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.ConceptSet.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (setBuilder_ == null) {
          set_ = null;
        } else {
          set_ = null;
          setBuilder_ = null;
        }
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSet_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSet getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSet build() {
        ai.grakn.rpc.proto.AnswerProto.ConceptSet result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSet buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.ConceptSet result = new ai.grakn.rpc.proto.AnswerProto.ConceptSet(this);
        if (setBuilder_ == null) {
          result.set_ = set_;
        } else {
          result.set_ = setBuilder_.build();
        }
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.ConceptSet) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptSet)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.ConceptSet other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.ConceptSet.getDefaultInstance()) return this;
        if (other.hasSet()) {
          mergeSet(other.getSet());
        }
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.ConceptSet parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.ConceptSet) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private ai.grakn.rpc.proto.AnswerProto.ConceptIds set_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> setBuilder_;
      /**
       * optional .session.ConceptIds set = 1;
       */
      public boolean hasSet() {
        return setBuilder_ != null || set_ != null;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet() {
        if (setBuilder_ == null) {
          return set_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
        } else {
          return setBuilder_.getMessage();
        }
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder setSet(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (setBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          set_ = value;
          onChanged();
        } else {
          setBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder setSet(
          ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder builderForValue) {
        if (setBuilder_ == null) {
          set_ = builderForValue.build();
          onChanged();
        } else {
          setBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder mergeSet(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (setBuilder_ == null) {
          if (set_ != null) {
            set_ =
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.newBuilder(set_).mergeFrom(value).buildPartial();
          } else {
            set_ = value;
          }
          onChanged();
        } else {
          setBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder clearSet() {
        if (setBuilder_ == null) {
          set_ = null;
          onChanged();
        } else {
          set_ = null;
          setBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder getSetBuilder() {
        
        onChanged();
        return getSetFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder() {
        if (setBuilder_ != null) {
          return setBuilder_.getMessageOrBuilder();
        } else {
          return set_ == null ?
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
        }
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> 
          getSetFieldBuilder() {
        if (setBuilder_ == null) {
          setBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder>(
                  getSet(),
                  getParentForChildren(),
                  isClean());
          set_ = null;
        }
        return setBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 2;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.ConceptSet)
    }

    // @@protoc_insertion_point(class_scope:session.ConceptSet)
    private static final ai.grakn.rpc.proto.AnswerProto.ConceptSet DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.ConceptSet();
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptSet getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public ConceptSet parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ConceptSet(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.ConceptSet getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConceptSetMeasureOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.ConceptSetMeasure)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.ConceptIds set = 1;
     */
    boolean hasSet();
    /**
     * optional .session.ConceptIds set = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet();
    /**
     * optional .session.ConceptIds set = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder();

    /**
     * optional .session.Number measurement = 2;
     */
    boolean hasMeasurement();
    /**
     * optional .session.Number measurement = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Number getMeasurement();
    /**
     * optional .session.Number measurement = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getMeasurementOrBuilder();

    /**
     * optional .session.Explanation explanation = 3;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 3;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.ConceptSetMeasure}
   */
  public  static final class ConceptSetMeasure extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.ConceptSetMeasure)
      ConceptSetMeasureOrBuilder {
    // Use ConceptSetMeasure.newBuilder() to construct.
    private ConceptSetMeasure(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConceptSetMeasure() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ConceptSetMeasure(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder subBuilder = null;
              if (set_ != null) {
                subBuilder = set_.toBuilder();
              }
              set_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.ConceptIds.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(set_);
                set_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.Number.Builder subBuilder = null;
              if (measurement_ != null) {
                subBuilder = measurement_.toBuilder();
              }
              measurement_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Number.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(measurement_);
                measurement_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSetMeasure_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSetMeasure_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.class, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder.class);
    }

    public static final int SET_FIELD_NUMBER = 1;
    private ai.grakn.rpc.proto.AnswerProto.ConceptIds set_;
    /**
     * optional .session.ConceptIds set = 1;
     */
    public boolean hasSet() {
      return set_ != null;
    }
    /**
     * optional .session.ConceptIds set = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet() {
      return set_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
    }
    /**
     * optional .session.ConceptIds set = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder() {
      return getSet();
    }

    public static final int MEASUREMENT_FIELD_NUMBER = 2;
    private ai.grakn.rpc.proto.AnswerProto.Number measurement_;
    /**
     * optional .session.Number measurement = 2;
     */
    public boolean hasMeasurement() {
      return measurement_ != null;
    }
    /**
     * optional .session.Number measurement = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Number getMeasurement() {
      return measurement_ == null ? ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : measurement_;
    }
    /**
     * optional .session.Number measurement = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getMeasurementOrBuilder() {
      return getMeasurement();
    }

    public static final int EXPLANATION_FIELD_NUMBER = 3;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 3;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 3;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (set_ != null) {
        output.writeMessage(1, getSet());
      }
      if (measurement_ != null) {
        output.writeMessage(2, getMeasurement());
      }
      if (explanation_ != null) {
        output.writeMessage(3, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (set_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSet());
      }
      if (measurement_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getMeasurement());
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure other = (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) obj;

      boolean result = true;
      result = result && (hasSet() == other.hasSet());
      if (hasSet()) {
        result = result && getSet()
            .equals(other.getSet());
      }
      result = result && (hasMeasurement() == other.hasMeasurement());
      if (hasMeasurement()) {
        result = result && getMeasurement()
            .equals(other.getMeasurement());
      }
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasSet()) {
        hash = (37 * hash) + SET_FIELD_NUMBER;
        hash = (53 * hash) + getSet().hashCode();
      }
      if (hasMeasurement()) {
        hash = (37 * hash) + MEASUREMENT_FIELD_NUMBER;
        hash = (53 * hash) + getMeasurement().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.ConceptSetMeasure}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.ConceptSetMeasure)
        ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasureOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSetMeasure_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSetMeasure_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.class, ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (setBuilder_ == null) {
          set_ = null;
        } else {
          set_ = null;
          setBuilder_ = null;
        }
        if (measurementBuilder_ == null) {
          measurement_ = null;
        } else {
          measurement_ = null;
          measurementBuilder_ = null;
        }
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptSetMeasure_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure build() {
        ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure result = new ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure(this);
        if (setBuilder_ == null) {
          result.set_ = set_;
        } else {
          result.set_ = setBuilder_.build();
        }
        if (measurementBuilder_ == null) {
          result.measurement_ = measurement_;
        } else {
          result.measurement_ = measurementBuilder_.build();
        }
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure.getDefaultInstance()) return this;
        if (other.hasSet()) {
          mergeSet(other.getSet());
        }
        if (other.hasMeasurement()) {
          mergeMeasurement(other.getMeasurement());
        }
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private ai.grakn.rpc.proto.AnswerProto.ConceptIds set_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> setBuilder_;
      /**
       * optional .session.ConceptIds set = 1;
       */
      public boolean hasSet() {
        return setBuilder_ != null || set_ != null;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds getSet() {
        if (setBuilder_ == null) {
          return set_ == null ? ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
        } else {
          return setBuilder_.getMessage();
        }
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder setSet(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (setBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          set_ = value;
          onChanged();
        } else {
          setBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder setSet(
          ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder builderForValue) {
        if (setBuilder_ == null) {
          set_ = builderForValue.build();
          onChanged();
        } else {
          setBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder mergeSet(ai.grakn.rpc.proto.AnswerProto.ConceptIds value) {
        if (setBuilder_ == null) {
          if (set_ != null) {
            set_ =
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.newBuilder(set_).mergeFrom(value).buildPartial();
          } else {
            set_ = value;
          }
          onChanged();
        } else {
          setBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public Builder clearSet() {
        if (setBuilder_ == null) {
          set_ = null;
          onChanged();
        } else {
          set_ = null;
          setBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder getSetBuilder() {
        
        onChanged();
        return getSetFieldBuilder().getBuilder();
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder getSetOrBuilder() {
        if (setBuilder_ != null) {
          return setBuilder_.getMessageOrBuilder();
        } else {
          return set_ == null ?
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance() : set_;
        }
      }
      /**
       * optional .session.ConceptIds set = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder> 
          getSetFieldBuilder() {
        if (setBuilder_ == null) {
          setBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.ConceptIds, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder, ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder>(
                  getSet(),
                  getParentForChildren(),
                  isClean());
          set_ = null;
        }
        return setBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Number measurement_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder> measurementBuilder_;
      /**
       * optional .session.Number measurement = 2;
       */
      public boolean hasMeasurement() {
        return measurementBuilder_ != null || measurement_ != null;
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Number getMeasurement() {
        if (measurementBuilder_ == null) {
          return measurement_ == null ? ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : measurement_;
        } else {
          return measurementBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public Builder setMeasurement(ai.grakn.rpc.proto.AnswerProto.Number value) {
        if (measurementBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          measurement_ = value;
          onChanged();
        } else {
          measurementBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public Builder setMeasurement(
          ai.grakn.rpc.proto.AnswerProto.Number.Builder builderForValue) {
        if (measurementBuilder_ == null) {
          measurement_ = builderForValue.build();
          onChanged();
        } else {
          measurementBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public Builder mergeMeasurement(ai.grakn.rpc.proto.AnswerProto.Number value) {
        if (measurementBuilder_ == null) {
          if (measurement_ != null) {
            measurement_ =
              ai.grakn.rpc.proto.AnswerProto.Number.newBuilder(measurement_).mergeFrom(value).buildPartial();
          } else {
            measurement_ = value;
          }
          onChanged();
        } else {
          measurementBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public Builder clearMeasurement() {
        if (measurementBuilder_ == null) {
          measurement_ = null;
          onChanged();
        } else {
          measurement_ = null;
          measurementBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Number.Builder getMeasurementBuilder() {
        
        onChanged();
        return getMeasurementFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Number measurement = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getMeasurementOrBuilder() {
        if (measurementBuilder_ != null) {
          return measurementBuilder_.getMessageOrBuilder();
        } else {
          return measurement_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : measurement_;
        }
      }
      /**
       * optional .session.Number measurement = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder> 
          getMeasurementFieldBuilder() {
        if (measurementBuilder_ == null) {
          measurementBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder>(
                  getMeasurement(),
                  getParentForChildren(),
                  isClean());
          measurement_ = null;
        }
        return measurementBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 3;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.ConceptSetMeasure)
    }

    // @@protoc_insertion_point(class_scope:session.ConceptSetMeasure)
    private static final ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure();
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public ConceptSetMeasure parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ConceptSetMeasure(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.ConceptSetMeasure getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.Value)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .session.Number number = 1;
     */
    boolean hasNumber();
    /**
     * optional .session.Number number = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.Number getNumber();
    /**
     * optional .session.Number number = 1;
     */
    ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getNumberOrBuilder();

    /**
     * optional .session.Explanation explanation = 2;
     */
    boolean hasExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation();
    /**
     * optional .session.Explanation explanation = 2;
     */
    ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder();
  }
  /**
   * Protobuf type {@code session.Value}
   */
  public  static final class Value extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.Value)
      ValueOrBuilder {
    // Use Value.newBuilder() to construct.
    private Value(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Value() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Value(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ai.grakn.rpc.proto.AnswerProto.Number.Builder subBuilder = null;
              if (number_ != null) {
                subBuilder = number_.toBuilder();
              }
              number_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Number.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(number_);
                number_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              ai.grakn.rpc.proto.AnswerProto.Explanation.Builder subBuilder = null;
              if (explanation_ != null) {
                subBuilder = explanation_.toBuilder();
              }
              explanation_ = input.readMessage(ai.grakn.rpc.proto.AnswerProto.Explanation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(explanation_);
                explanation_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Value_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Value_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.Value.class, ai.grakn.rpc.proto.AnswerProto.Value.Builder.class);
    }

    public static final int NUMBER_FIELD_NUMBER = 1;
    private ai.grakn.rpc.proto.AnswerProto.Number number_;
    /**
     * optional .session.Number number = 1;
     */
    public boolean hasNumber() {
      return number_ != null;
    }
    /**
     * optional .session.Number number = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.Number getNumber() {
      return number_ == null ? ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : number_;
    }
    /**
     * optional .session.Number number = 1;
     */
    public ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getNumberOrBuilder() {
      return getNumber();
    }

    public static final int EXPLANATION_FIELD_NUMBER = 2;
    private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_;
    /**
     * optional .session.Explanation explanation = 2;
     */
    public boolean hasExplanation() {
      return explanation_ != null;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
      return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
    }
    /**
     * optional .session.Explanation explanation = 2;
     */
    public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
      return getExplanation();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (number_ != null) {
        output.writeMessage(1, getNumber());
      }
      if (explanation_ != null) {
        output.writeMessage(2, getExplanation());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (number_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getNumber());
      }
      if (explanation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getExplanation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.Value)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.Value other = (ai.grakn.rpc.proto.AnswerProto.Value) obj;

      boolean result = true;
      result = result && (hasNumber() == other.hasNumber());
      if (hasNumber()) {
        result = result && getNumber()
            .equals(other.getNumber());
      }
      result = result && (hasExplanation() == other.hasExplanation());
      if (hasExplanation()) {
        result = result && getExplanation()
            .equals(other.getExplanation());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasNumber()) {
        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getNumber().hashCode();
      }
      if (hasExplanation()) {
        hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
        hash = (53 * hash) + getExplanation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.Value parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.Value prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.Value}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.Value)
        ai.grakn.rpc.proto.AnswerProto.ValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Value_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Value_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.Value.class, ai.grakn.rpc.proto.AnswerProto.Value.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.Value.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (numberBuilder_ == null) {
          number_ = null;
        } else {
          number_ = null;
          numberBuilder_ = null;
        }
        if (explanationBuilder_ == null) {
          explanation_ = null;
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Value_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.Value getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.Value build() {
        ai.grakn.rpc.proto.AnswerProto.Value result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.Value buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.Value result = new ai.grakn.rpc.proto.AnswerProto.Value(this);
        if (numberBuilder_ == null) {
          result.number_ = number_;
        } else {
          result.number_ = numberBuilder_.build();
        }
        if (explanationBuilder_ == null) {
          result.explanation_ = explanation_;
        } else {
          result.explanation_ = explanationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.Value) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.Value)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.Value other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.Value.getDefaultInstance()) return this;
        if (other.hasNumber()) {
          mergeNumber(other.getNumber());
        }
        if (other.hasExplanation()) {
          mergeExplanation(other.getExplanation());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.Value parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.Value) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private ai.grakn.rpc.proto.AnswerProto.Number number_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder> numberBuilder_;
      /**
       * optional .session.Number number = 1;
       */
      public boolean hasNumber() {
        return numberBuilder_ != null || number_ != null;
      }
      /**
       * optional .session.Number number = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.Number getNumber() {
        if (numberBuilder_ == null) {
          return number_ == null ? ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : number_;
        } else {
          return numberBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Number number = 1;
       */
      public Builder setNumber(ai.grakn.rpc.proto.AnswerProto.Number value) {
        if (numberBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          number_ = value;
          onChanged();
        } else {
          numberBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Number number = 1;
       */
      public Builder setNumber(
          ai.grakn.rpc.proto.AnswerProto.Number.Builder builderForValue) {
        if (numberBuilder_ == null) {
          number_ = builderForValue.build();
          onChanged();
        } else {
          numberBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Number number = 1;
       */
      public Builder mergeNumber(ai.grakn.rpc.proto.AnswerProto.Number value) {
        if (numberBuilder_ == null) {
          if (number_ != null) {
            number_ =
              ai.grakn.rpc.proto.AnswerProto.Number.newBuilder(number_).mergeFrom(value).buildPartial();
          } else {
            number_ = value;
          }
          onChanged();
        } else {
          numberBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Number number = 1;
       */
      public Builder clearNumber() {
        if (numberBuilder_ == null) {
          number_ = null;
          onChanged();
        } else {
          number_ = null;
          numberBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Number number = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.Number.Builder getNumberBuilder() {
        
        onChanged();
        return getNumberFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Number number = 1;
       */
      public ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder getNumberOrBuilder() {
        if (numberBuilder_ != null) {
          return numberBuilder_.getMessageOrBuilder();
        } else {
          return number_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance() : number_;
        }
      }
      /**
       * optional .session.Number number = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder> 
          getNumberFieldBuilder() {
        if (numberBuilder_ == null) {
          numberBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Number, ai.grakn.rpc.proto.AnswerProto.Number.Builder, ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder>(
                  getNumber(),
                  getParentForChildren(),
                  isClean());
          number_ = null;
        }
        return numberBuilder_;
      }

      private ai.grakn.rpc.proto.AnswerProto.Explanation explanation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> explanationBuilder_;
      /**
       * optional .session.Explanation explanation = 2;
       */
      public boolean hasExplanation() {
        return explanationBuilder_ != null || explanation_ != null;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation getExplanation() {
        if (explanationBuilder_ == null) {
          return explanation_ == null ? ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        } else {
          return explanationBuilder_.getMessage();
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          explanation_ = value;
          onChanged();
        } else {
          explanationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder setExplanation(
          ai.grakn.rpc.proto.AnswerProto.Explanation.Builder builderForValue) {
        if (explanationBuilder_ == null) {
          explanation_ = builderForValue.build();
          onChanged();
        } else {
          explanationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder mergeExplanation(ai.grakn.rpc.proto.AnswerProto.Explanation value) {
        if (explanationBuilder_ == null) {
          if (explanation_ != null) {
            explanation_ =
              ai.grakn.rpc.proto.AnswerProto.Explanation.newBuilder(explanation_).mergeFrom(value).buildPartial();
          } else {
            explanation_ = value;
          }
          onChanged();
        } else {
          explanationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public Builder clearExplanation() {
        if (explanationBuilder_ == null) {
          explanation_ = null;
          onChanged();
        } else {
          explanation_ = null;
          explanationBuilder_ = null;
        }

        return this;
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.Explanation.Builder getExplanationBuilder() {
        
        onChanged();
        return getExplanationFieldBuilder().getBuilder();
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      public ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder getExplanationOrBuilder() {
        if (explanationBuilder_ != null) {
          return explanationBuilder_.getMessageOrBuilder();
        } else {
          return explanation_ == null ?
              ai.grakn.rpc.proto.AnswerProto.Explanation.getDefaultInstance() : explanation_;
        }
      }
      /**
       * optional .session.Explanation explanation = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder> 
          getExplanationFieldBuilder() {
        if (explanationBuilder_ == null) {
          explanationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ai.grakn.rpc.proto.AnswerProto.Explanation, ai.grakn.rpc.proto.AnswerProto.Explanation.Builder, ai.grakn.rpc.proto.AnswerProto.ExplanationOrBuilder>(
                  getExplanation(),
                  getParentForChildren(),
                  isClean());
          explanation_ = null;
        }
        return explanationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.Value)
    }

    // @@protoc_insertion_point(class_scope:session.Value)
    private static final ai.grakn.rpc.proto.AnswerProto.Value DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.Value();
    }

    public static ai.grakn.rpc.proto.AnswerProto.Value getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public Value parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new Value(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.Value getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConceptIdsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.ConceptIds)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string ids = 1;
     */
    java.util.List
        getIdsList();
    /**
     * repeated string ids = 1;
     */
    int getIdsCount();
    /**
     * repeated string ids = 1;
     */
    java.lang.String getIds(int index);
    /**
     * repeated string ids = 1;
     */
    com.google.protobuf.ByteString
        getIdsBytes(int index);
  }
  /**
   * Protobuf type {@code session.ConceptIds}
   */
  public  static final class ConceptIds extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:session.ConceptIds)
      ConceptIdsOrBuilder {
    // Use ConceptIds.newBuilder() to construct.
    private ConceptIds(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConceptIds() {
      ids_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ConceptIds(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                ids_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              ids_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          ids_ = ids_.getUnmodifiableView();
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptIds_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptIds_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ai.grakn.rpc.proto.AnswerProto.ConceptIds.class, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder.class);
    }

    public static final int IDS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList ids_;
    /**
     * repeated string ids = 1;
     */
    public com.google.protobuf.ProtocolStringList
        getIdsList() {
      return ids_;
    }
    /**
     * repeated string ids = 1;
     */
    public int getIdsCount() {
      return ids_.size();
    }
    /**
     * repeated string ids = 1;
     */
    public java.lang.String getIds(int index) {
      return ids_.get(index);
    }
    /**
     * repeated string ids = 1;
     */
    public com.google.protobuf.ByteString
        getIdsBytes(int index) {
      return ids_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < ids_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, ids_.getRaw(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < ids_.size(); i++) {
          dataSize += computeStringSizeNoTag(ids_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIdsList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.ConceptIds)) {
        return super.equals(obj);
      }
      ai.grakn.rpc.proto.AnswerProto.ConceptIds other = (ai.grakn.rpc.proto.AnswerProto.ConceptIds) obj;

      boolean result = true;
      result = result && getIdsList()
          .equals(other.getIdsList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getIdsCount() > 0) {
        hash = (37 * hash) + IDS_FIELD_NUMBER;
        hash = (53 * hash) + getIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.ConceptIds prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code session.ConceptIds}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:session.ConceptIds)
        ai.grakn.rpc.proto.AnswerProto.ConceptIdsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptIds_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptIds_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ai.grakn.rpc.proto.AnswerProto.ConceptIds.class, ai.grakn.rpc.proto.AnswerProto.ConceptIds.Builder.class);
      }

      // Construct using ai.grakn.rpc.proto.AnswerProto.ConceptIds.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        ids_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ai.grakn.rpc.proto.AnswerProto.internal_static_session_ConceptIds_descriptor;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptIds getDefaultInstanceForType() {
        return ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance();
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptIds build() {
        ai.grakn.rpc.proto.AnswerProto.ConceptIds result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public ai.grakn.rpc.proto.AnswerProto.ConceptIds buildPartial() {
        ai.grakn.rpc.proto.AnswerProto.ConceptIds result = new ai.grakn.rpc.proto.AnswerProto.ConceptIds(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          ids_ = ids_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.ids_ = ids_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ai.grakn.rpc.proto.AnswerProto.ConceptIds) {
          return mergeFrom((ai.grakn.rpc.proto.AnswerProto.ConceptIds)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.ConceptIds other) {
        if (other == ai.grakn.rpc.proto.AnswerProto.ConceptIds.getDefaultInstance()) return this;
        if (!other.ids_.isEmpty()) {
          if (ids_.isEmpty()) {
            ids_ = other.ids_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIdsIsMutable();
            ids_.addAll(other.ids_);
          }
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        ai.grakn.rpc.proto.AnswerProto.ConceptIds parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (ai.grakn.rpc.proto.AnswerProto.ConceptIds) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList ids_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          ids_ = new com.google.protobuf.LazyStringArrayList(ids_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string ids = 1;
       */
      public com.google.protobuf.ProtocolStringList
          getIdsList() {
        return ids_.getUnmodifiableView();
      }
      /**
       * repeated string ids = 1;
       */
      public int getIdsCount() {
        return ids_.size();
      }
      /**
       * repeated string ids = 1;
       */
      public java.lang.String getIds(int index) {
        return ids_.get(index);
      }
      /**
       * repeated string ids = 1;
       */
      public com.google.protobuf.ByteString
          getIdsBytes(int index) {
        return ids_.getByteString(index);
      }
      /**
       * repeated string ids = 1;
       */
      public Builder setIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIdsIsMutable();
        ids_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string ids = 1;
       */
      public Builder addIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIdsIsMutable();
        ids_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string ids = 1;
       */
      public Builder addAllIds(
          java.lang.Iterable values) {
        ensureIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, ids_);
        onChanged();
        return this;
      }
      /**
       * repeated string ids = 1;
       */
      public Builder clearIds() {
        ids_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string ids = 1;
       */
      public Builder addIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureIdsIsMutable();
        ids_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:session.ConceptIds)
    }

    // @@protoc_insertion_point(class_scope:session.ConceptIds)
    private static final ai.grakn.rpc.proto.AnswerProto.ConceptIds DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.ConceptIds();
    }

    public static ai.grakn.rpc.proto.AnswerProto.ConceptIds getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      public ConceptIds parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ConceptIds(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    public ai.grakn.rpc.proto.AnswerProto.ConceptIds getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NumberOrBuilder extends
      // @@protoc_insertion_point(interface_extends:session.Number)
      com.google.protobuf.MessageOrBuilder {

    /**
     * 
     * We use a string to contain the full representation of a number
     * 
* * optional string value = 1; */ java.lang.String getValue(); /** *
     * We use a string to contain the full representation of a number
     * 
* * optional string value = 1; */ com.google.protobuf.ByteString getValueBytes(); } /** * Protobuf type {@code session.Number} */ public static final class Number extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:session.Number) NumberOrBuilder { // Use Number.newBuilder() to construct. private Number(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } private Number() { value_ = ""; } @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } private Number( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { this(); int mutable_bitField0_ = 0; try { boolean done = false; while (!done) { int tag = input.readTag(); switch (tag) { case 0: done = true; break; default: { if (!input.skipField(tag)) { done = true; } break; } case 10: { java.lang.String s = input.readStringRequireUtf8(); value_ = s; break; } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.setUnfinishedMessage(this); } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { makeExtensionsImmutable(); } } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Number_descriptor; } protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Number_fieldAccessorTable .ensureFieldAccessorsInitialized( ai.grakn.rpc.proto.AnswerProto.Number.class, ai.grakn.rpc.proto.AnswerProto.Number.Builder.class); } public static final int VALUE_FIELD_NUMBER = 1; private volatile java.lang.Object value_; /** *
     * We use a string to contain the full representation of a number
     * 
* * optional string value = 1; */ public java.lang.String getValue() { java.lang.Object ref = value_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); value_ = s; return s; } } /** *
     * We use a string to contain the full representation of a number
     * 
* * optional string value = 1; */ public com.google.protobuf.ByteString getValueBytes() { java.lang.Object ref = value_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); value_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; if (isInitialized == 0) return false; memoizedIsInitialized = 1; return true; } public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getValueBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_); } } public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getValueBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, value_); } memoizedSize = size; return size; } private static final long serialVersionUID = 0L; @java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof ai.grakn.rpc.proto.AnswerProto.Number)) { return super.equals(obj); } ai.grakn.rpc.proto.AnswerProto.Number other = (ai.grakn.rpc.proto.AnswerProto.Number) obj; boolean result = true; result = result && getValue() .equals(other.getValue()); return result; } @java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptorForType().hashCode(); hash = (37 * hash) + VALUE_FIELD_NUMBER; hash = (53 * hash) + getValue().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } public static ai.grakn.rpc.proto.AnswerProto.Number parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } public static ai.grakn.rpc.proto.AnswerProto.Number parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static ai.grakn.rpc.proto.AnswerProto.Number parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } public static Builder newBuilder(ai.grakn.rpc.proto.AnswerProto.Number prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @java.lang.Override protected Builder newBuilderForType( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { Builder builder = new Builder(parent); return builder; } /** * Protobuf type {@code session.Number} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:session.Number) ai.grakn.rpc.proto.AnswerProto.NumberOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Number_descriptor; } protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Number_fieldAccessorTable .ensureFieldAccessorsInitialized( ai.grakn.rpc.proto.AnswerProto.Number.class, ai.grakn.rpc.proto.AnswerProto.Number.Builder.class); } // Construct using ai.grakn.rpc.proto.AnswerProto.Number.newBuilder() private Builder() { maybeForceBuilderInitialization(); } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { } } public Builder clear() { super.clear(); value_ = ""; return this; } public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return ai.grakn.rpc.proto.AnswerProto.internal_static_session_Number_descriptor; } public ai.grakn.rpc.proto.AnswerProto.Number getDefaultInstanceForType() { return ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance(); } public ai.grakn.rpc.proto.AnswerProto.Number build() { ai.grakn.rpc.proto.AnswerProto.Number result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } public ai.grakn.rpc.proto.AnswerProto.Number buildPartial() { ai.grakn.rpc.proto.AnswerProto.Number result = new ai.grakn.rpc.proto.AnswerProto.Number(this); result.value_ = value_; onBuilt(); return result; } public Builder clone() { return (Builder) super.clone(); } public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, Object value) { return (Builder) super.setField(field, value); } public Builder clearField( com.google.protobuf.Descriptors.FieldDescriptor field) { return (Builder) super.clearField(field); } public Builder clearOneof( com.google.protobuf.Descriptors.OneofDescriptor oneof) { return (Builder) super.clearOneof(oneof); } public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, Object value) { return (Builder) super.setRepeatedField(field, index, value); } public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, Object value) { return (Builder) super.addRepeatedField(field, value); } public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof ai.grakn.rpc.proto.AnswerProto.Number) { return mergeFrom((ai.grakn.rpc.proto.AnswerProto.Number)other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(ai.grakn.rpc.proto.AnswerProto.Number other) { if (other == ai.grakn.rpc.proto.AnswerProto.Number.getDefaultInstance()) return this; if (!other.getValue().isEmpty()) { value_ = other.value_; onChanged(); } onChanged(); return this; } public final boolean isInitialized() { return true; } public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { ai.grakn.rpc.proto.AnswerProto.Number parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = (ai.grakn.rpc.proto.AnswerProto.Number) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { mergeFrom(parsedMessage); } } return this; } private java.lang.Object value_ = ""; /** *
       * We use a string to contain the full representation of a number
       * 
* * optional string value = 1; */ public java.lang.String getValue() { java.lang.Object ref = value_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); value_ = s; return s; } else { return (java.lang.String) ref; } } /** *
       * We use a string to contain the full representation of a number
       * 
* * optional string value = 1; */ public com.google.protobuf.ByteString getValueBytes() { java.lang.Object ref = value_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); value_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** *
       * We use a string to contain the full representation of a number
       * 
* * optional string value = 1; */ public Builder setValue( java.lang.String value) { if (value == null) { throw new NullPointerException(); } value_ = value; onChanged(); return this; } /** *
       * We use a string to contain the full representation of a number
       * 
* * optional string value = 1; */ public Builder clearValue() { value_ = getDefaultInstance().getValue(); onChanged(); return this; } /** *
       * We use a string to contain the full representation of a number
       * 
* * optional string value = 1; */ public Builder setValueBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); value_ = value; onChanged(); return this; } public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return this; } public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return this; } // @@protoc_insertion_point(builder_scope:session.Number) } // @@protoc_insertion_point(class_scope:session.Number) private static final ai.grakn.rpc.proto.AnswerProto.Number DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new ai.grakn.rpc.proto.AnswerProto.Number(); } public static ai.grakn.rpc.proto.AnswerProto.Number getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { public Number parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return new Number(input, extensionRegistry); } }; public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override public com.google.protobuf.Parser getParserForType() { return PARSER; } public ai.grakn.rpc.proto.AnswerProto.Number getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_Answer_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_Answer_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_Explanation_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_Explanation_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_AnswerGroup_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_AnswerGroup_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptMap_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptMap_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptMap_MapEntry_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptMap_MapEntry_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptList_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptList_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptSet_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptSet_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptSetMeasure_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptSetMeasure_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_Value_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_Value_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_ConceptIds_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_ConceptIds_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_session_Number_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_session_Number_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; } private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { java.lang.String[] descriptorData = { "\n\014Answer.proto\022\007session\032\rConcept.proto\"\234" + "\002\n\006Answer\022+\n\013answerGroup\030\001 \001(\0132\024.session" + ".AnswerGroupH\000\022)\n\nconceptMap\030\002 \001(\0132\023.ses" + "sion.ConceptMapH\000\022+\n\013conceptList\030\003 \001(\0132\024" + ".session.ConceptListH\000\022)\n\nconceptSet\030\004 \001" + "(\0132\023.session.ConceptSetH\000\0227\n\021conceptSetM" + "easure\030\005 \001(\0132\032.session.ConceptSetMeasure" + "H\000\022\037\n\005value\030\006 \001(\0132\016.session.ValueH\000B\010\n\006a" + "nswer\"D\n\013Explanation\022\017\n\007pattern\030\001 \001(\t\022$\n" + "\007answers\030\002 \003(\0132\023.session.ConceptMap\"{\n\013A", "nswerGroup\022\037\n\005owner\030\001 \001(\0132\020.session.Conc" + "ept\022 \n\007answers\030\002 \003(\0132\017.session.Answer\022)\n" + "\013explanation\030\003 \001(\0132\024.session.Explanation" + "\"\240\001\n\nConceptMap\022)\n\003map\030\001 \003(\0132\034.session.C" + "onceptMap.MapEntry\022)\n\013explanation\030\002 \001(\0132" + "\024.session.Explanation\032<\n\010MapEntry\022\013\n\003key" + "\030\001 \001(\t\022\037\n\005value\030\002 \001(\0132\020.session.Concept:" + "\0028\001\"[\n\013ConceptList\022!\n\004list\030\001 \001(\0132\023.sessi" + "on.ConceptIds\022)\n\013explanation\030\002 \001(\0132\024.ses" + "sion.Explanation\"Y\n\nConceptSet\022 \n\003set\030\001 ", "\001(\0132\023.session.ConceptIds\022)\n\013explanation\030" + "\002 \001(\0132\024.session.Explanation\"\206\001\n\021ConceptS" + "etMeasure\022 \n\003set\030\001 \001(\0132\023.session.Concept" + "Ids\022$\n\013measurement\030\002 \001(\0132\017.session.Numbe" + "r\022)\n\013explanation\030\003 \001(\0132\024.session.Explana" + "tion\"S\n\005Value\022\037\n\006number\030\001 \001(\0132\017.session." + "Number\022)\n\013explanation\030\002 \001(\0132\024.session.Ex" + "planation\"\031\n\nConceptIds\022\013\n\003ids\030\001 \003(\t\"\027\n\006" + "Number\022\r\n\005value\030\001 \001(\tB!\n\022ai.grakn.rpc.pr" + "otoB\013AnswerProtob\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.Descriptors.FileDescriptor root) { descriptor = root; return null; } }; com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { ai.grakn.rpc.proto.ConceptProto.getDescriptor(), }, assigner); internal_static_session_Answer_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_session_Answer_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_Answer_descriptor, new java.lang.String[] { "AnswerGroup", "ConceptMap", "ConceptList", "ConceptSet", "ConceptSetMeasure", "Value", "Answer", }); internal_static_session_Explanation_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_session_Explanation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_Explanation_descriptor, new java.lang.String[] { "Pattern", "Answers", }); internal_static_session_AnswerGroup_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_session_AnswerGroup_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_AnswerGroup_descriptor, new java.lang.String[] { "Owner", "Answers", "Explanation", }); internal_static_session_ConceptMap_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_session_ConceptMap_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptMap_descriptor, new java.lang.String[] { "Map", "Explanation", }); internal_static_session_ConceptMap_MapEntry_descriptor = internal_static_session_ConceptMap_descriptor.getNestedTypes().get(0); internal_static_session_ConceptMap_MapEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptMap_MapEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_session_ConceptList_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_session_ConceptList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptList_descriptor, new java.lang.String[] { "List", "Explanation", }); internal_static_session_ConceptSet_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_session_ConceptSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptSet_descriptor, new java.lang.String[] { "Set", "Explanation", }); internal_static_session_ConceptSetMeasure_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_session_ConceptSetMeasure_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptSetMeasure_descriptor, new java.lang.String[] { "Set", "Measurement", "Explanation", }); internal_static_session_Value_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_session_Value_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_Value_descriptor, new java.lang.String[] { "Number", "Explanation", }); internal_static_session_ConceptIds_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_session_ConceptIds_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_ConceptIds_descriptor, new java.lang.String[] { "Ids", }); internal_static_session_Number_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_session_Number_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_session_Number_descriptor, new java.lang.String[] { "Value", }); ai.grakn.rpc.proto.ConceptProto.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy