<!doctype html>
<html>
<head>
  <meta charset="UTF-8"/>
  <title>Common Types</title>
</head>
<body>
<h1>Common Types</h1>
<version>1.1.0</version>
<p>
  This document contains a specification of the types that are common between
  the analysis server wire protocol and the analysis server plugin wire
  protocol. While those protocols are versioned, the common types are not
  versioned separately.
</p>
<p>
  When those protocols have identical definitions of a type, the type definition
  should be removed from the two individual specifications and added to this
  document. Two definitions of a type are identical if the HTML that defines the
  types is identical and if all of the types referenced by those two types are
  identical.
</p>
<p>
  When it becomes necessary to change the definition of a common type in one
  protocol such that the type will no longer be common, that type and any types
  that reference that type must be removed from this document and added to both
  of the documents that include this document.
</p>
<types>
  <type name="AddContentOverlay">
    <p>
      A directive to begin overlaying the contents of a file. The supplied
      content will be used for analysis in place of the file contents in the
      filesystem.
    </p>
    <p>
      If this directive is used on a file that already has a file content
      overlay, the old overlay is discarded and replaced with the new one.
    </p>
    <object>
      <field name="type" value="add">
        <ref>String</ref>
      </field>
      <field name="content">
        <ref>String</ref>
        <p>
          The new content of the file.
        </p>
      </field>
    </object>
  </type>
  <type name="AnalysisError">
    <p>
      An indication of an error, warning, or hint that was produced by the
      analysis.
    </p>
    <object>
      <field name="severity">
        <ref>AnalysisErrorSeverity</ref>
        <p>
          The severity of the error.
        </p>
      </field>
      <field name="type">
        <ref>AnalysisErrorType</ref>
        <p>
          The type of the error.
        </p>
      </field>
      <field name="location">
        <ref>Location</ref>
        <p>
          The location associated with the error.
        </p>
      </field>
      <field name="message">
        <ref>String</ref>
        <p>
          The message to be displayed for this error. The message should
          indicate what is wrong with the code and why it is wrong.
        </p>
      </field>
      <field name="correction" optional="true">
        <ref>String</ref>
        <p>
          The correction message to be displayed for this error. The correction
          message should indicate how the user can fix the error. The field is
          omitted if there is no correction message associated with the error
          code.
        </p>
      </field>
      <field name="code">
        <ref>String</ref>
        <p>
          The name, as a string, of the error code associated with this error.
        </p>
      </field>
      <field name="hasFix" optional="true">
        <ref>bool</ref>
        <p>
          A hint to indicate to interested clients that this error has an
          associated fix (or fixes). The absence of this field implies there
          are not known to be fixes. Note that since the operation to calculate
          whether fixes apply needs to be performant it is possible that
          complicated tests will be skipped and a false negative returned. For
          this reason, this attribute should be treated as a "hint". Despite the
          possibility of false negatives, no false positives should be returned.
          If a client sees this flag set they can proceed with the confidence
          that there are in fact associated fixes.
        </p>
      </field>
    </object>
  </type>
  <type name="AnalysisErrorSeverity">
    <p>
      An enumeration of the possible severities of analysis errors.
    </p>
    <enum>
      <value><code>INFO</code></value>
      <value><code>WARNING</code></value>
      <value><code>ERROR</code></value>
    </enum>
  </type>
  <type name="AnalysisErrorType">
    <p>
      An enumeration of the possible types of analysis errors.
    </p>
    <enum>
      <value><code>CHECKED_MODE_COMPILE_TIME_ERROR</code></value>
      <value><code>COMPILE_TIME_ERROR</code></value>
      <value><code>HINT</code></value>
      <value><code>LINT</code></value>
      <value><code>STATIC_TYPE_WARNING</code></value>
      <value><code>STATIC_WARNING</code></value>
      <value><code>SYNTACTIC_ERROR</code></value>
      <value><code>TODO</code></value>
    </enum>
  </type>
  <type name="ChangeContentOverlay">
    <p>
      A directive to modify an existing file content overlay. One or more ranges
      of text are deleted from the old file content overlay and replaced with
      new text.
    </p>
    <p>
      The edits are applied in the order in which they occur in the list. This
      means that the offset of each edit must be correct under the assumption
      that all previous edits have been applied.
    </p>
    <p>
      It is an error to use this overlay on a file that does not yet have a file
      content overlay or that has had its overlay removed via
      <a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>.
    </p>
    <p>
      If any of the edits cannot be applied due to its offset or length being
      out of range, an <tt>INVALID_OVERLAY_CHANGE</tt> error will be reported.
    </p>
    <object>
      <field name="type" value="change">
        <ref>String</ref>
      </field>
      <field name="edits">
        <list>
          <ref>SourceEdit</ref>
        </list>
        <p>
          The edits to be applied to the file.
        </p>
      </field>
    </object>
  </type>
  <type name="CompletionSuggestion">
    <p>
      A suggestion for how to complete partially entered text. Many of the
      fields are optional, depending on the kind of element being suggested.
    </p>
    <object>
      <field name="kind">
        <ref>CompletionSuggestionKind</ref>
        <p>
          The kind of element being suggested.
        </p>
      </field>
      <field name="relevance">
        <ref>int</ref>
        <p>
          The relevance of this completion suggestion where a higher number
          indicates a higher relevance.
        </p>
      </field>
      <field name="completion">
        <ref>String</ref>
        <p>
          The identifier to be inserted if the suggestion is selected. If the
          suggestion is for a method or function, the client might want to
          additionally insert a template for the parameters. The information
          required in order to do so is contained in other fields.
        </p>
      </field>
      <field name="displayText" optional="true">
        <ref>String</ref>
        <p>
          Text to be displayed in, for example, a completion pop-up. This field
          is only defined if the displayed text should be different than the
          completion.  Otherwise it is omitted.
        </p>
      </field>
      <field name="selectionOffset">
        <ref>int</ref>
        <p>
          The offset, relative to the beginning of the completion, of where the
          selection should be placed after insertion.
        </p>
      </field>
      <field name="selectionLength">
        <ref>int</ref>
        <p>
          The number of characters that should be selected after insertion.
        </p>
      </field>
      <field name="isDeprecated">
        <ref>bool</ref>
        <p>
          True if the suggested element is deprecated.
        </p>
      </field>
      <field name="isPotential">
        <ref>bool</ref>
        <p>
          True if the element is not known to be valid for the target. This
          happens if the type of the target is dynamic.
        </p>
      </field>
      <field name="docSummary" optional="true">
        <ref>String</ref>
        <p>
          An abbreviated version of the Dartdoc associated with the element
          being suggested. This field is omitted if there is no Dartdoc
          associated with the element.
        </p>
      </field>
      <field name="docComplete" optional="true">
        <ref>String</ref>
        <p>
          The Dartdoc associated with the element being suggested. This field is
          omitted if there is no Dartdoc associated with the element.
        </p>
      </field>
      <field name="declaringType" optional="true">
        <ref>String</ref>
        <p>
          The class that declares the element being suggested. This field is
          omitted if the suggested element is not a member of a class.
        </p>
      </field>
      <field name="defaultArgumentListString" optional="true">
        <ref>String</ref>
        <p>
          A default String for use in generating argument list source contents
          on the client side.
        </p>
      </field>
      <field name="defaultArgumentListTextRanges" optional="true">
        <list>
          <ref>int</ref>
        </list>
        <p>
          Pairs of offsets and lengths describing 'defaultArgumentListString'
          text ranges suitable for use by clients to set up linked edits of
          default argument source contents. For example, given an argument list
          string 'x, y', the corresponding text range [0, 1, 3, 1], indicates
          two text ranges of length 1, starting at offsets 0 and 3. Clients can
          use these ranges to treat the 'x' and 'y' values specially for linked
          edits.
        </p>
      </field>
      <field name="element" optional="true">
        <ref>Element</ref>
        <p>
          Information about the element reference being suggested.
        </p>
      </field>
      <field name="returnType" optional="true">
        <ref>String</ref>
        <p>
          The return type of the getter, function or method or the type of the
          field being suggested. This field is omitted if the suggested element
          is not a getter, function or method.
        </p>
      </field>
      <field name="parameterNames" optional="true">
        <list>
          <ref>String</ref>
        </list>
        <p>
          The names of the parameters of the function or method being suggested.
          This field is omitted if the suggested element is not a setter,
          function or method.
        </p>
      </field>
      <field name="parameterTypes" optional="true">
        <list>
          <ref>String</ref>
        </list>
        <p>
          The types of the parameters of the function or method being suggested.
          This field is omitted if the parameterNames field is omitted.
        </p>
      </field>
      <field name="requiredParameterCount" optional="true">
        <ref>int</ref>
        <p>
          The number of required parameters for the function or method being
          suggested. This field is omitted if the parameterNames field is
          omitted.
        </p>
      </field>
      <field name="hasNamedParameters" optional="true">
        <ref>bool</ref>
        <p>
          True if the function or method being suggested has at least one named
          parameter. This field is omitted if the parameterNames field is
          omitted.
        </p>
      </field>
      <field name="parameterName" optional="true">
        <ref>String</ref>
        <p>
          The name of the optional parameter being suggested. This field is
          omitted if the suggestion is not the addition of an optional argument
          within an argument list.
        </p>
      </field>
      <field name="parameterType" optional="true">
        <ref>String</ref>
        <p>
          The type of the options parameter being suggested. This field is
          omitted if the parameterName field is omitted.
        </p>
      </field>
      <field name="importUri" optional="true">
        <ref>String</ref>
        <p>
          The import to be added if the suggestion is out of scope and needs
          an import to be added to be in scope.
        </p>
      </field>
    </object>
  </type>
  <type name="CompletionSuggestionKind">
    <p>
      An enumeration of the kinds of elements that can be included in a
      completion suggestion.
    </p>
    <enum>
      <value>
        <code>ARGUMENT_LIST</code>
        <p>
          A list of arguments for the method or function that is being
          invoked. For this suggestion kind, the completion field is a
          textual representation of the invocation and the parameterNames,
          parameterTypes, and requiredParameterCount attributes are defined.
        </p>
      </value>
      <value><code>IMPORT</code></value>
      <value>
        <code>IDENTIFIER</code>
        <p>
          The element identifier should be inserted at the completion
          location. For example "someMethod" in <tt>import 'myLib.dart' show
          someMethod;</tt>. For suggestions of this kind, the element
          attribute is defined and the completion field is the element's
          identifier.
        </p>
      </value>
      <value>
        <code>INVOCATION</code>
        <p>
          The element is being invoked at the completion location. For
          example, 'someMethod' in <tt>x.someMethod();</tt>. For suggestions
          of this kind, the element attribute is defined and the completion
          field is the element's identifier.
        </p>
      </value>
      <value>
        <code>KEYWORD</code>
        <p>
          A keyword is being suggested. For suggestions of this kind, the
          completion is the keyword.
        </p>
      </value>
      <value>
        <code>NAMED_ARGUMENT</code>
        <p>
          A named argument for the current call site is being suggested. For
          suggestions of this kind, the completion is the named argument
          identifier including a trailing ':' and a space.
        </p>
      </value>
      <value><code>OPTIONAL_ARGUMENT</code></value>
      <value>
        <code>OVERRIDE</code>
        <p>
          An overriding implementation of a class member is being suggested.
        </p>
      </value>
      <value><code>PARAMETER</code></value>
    </enum>
  </type>
  <type name="Element">
    <p>
      Information about an element (something that can be declared in code).
    </p>
    <object>
      <field name="kind">
        <ref>ElementKind</ref>
        <p>
          The kind of the element.
        </p>
      </field>
      <field name="name">
        <ref>String</ref>
        <p>
          The name of the element. This is typically used as the label in the
          outline.
        </p>
      </field>
      <field name="location" optional="true">
        <ref>Location</ref>
        <p>
          The location of the name in the declaration of the element.
        </p>
      </field>
      <field name="flags">
        <ref>int</ref>
        <p>
          A bit-map containing the following flags:
        </p>
        <ul>
          <li>
            0x01 - set if the element is explicitly or implicitly abstract
          </li>
          <li>
            0x02 - set if the element was declared to be ‘const’
          </li>
          <li>
            0x04 - set if the element was declared to be ‘final’
          </li>
          <li>
            0x08 - set if the element is a static member of a class or is a
            top-level function or field
          </li>
          <li>
            0x10 - set if the element is private
          </li>
          <li>
            0x20 - set if the element is deprecated
          </li>
        </ul>
      </field>
      <field name="parameters" optional="true">
        <ref>String</ref>
        <p>
          The parameter list for the element. If the element is not a method or
          function this field will not be defined. If the element doesn't have
          parameters (e.g. getter), this field will not be defined. If the
          element has zero parameters, this field will have a value of "()".
        </p>
      </field>
      <field name="returnType" optional="true">
        <ref>String</ref>
        <p>
          The return type of the element. If the element is not a method or
          function this field will not be defined. If the element does not have
          a declared return type, this field will contain an empty string.
        </p>
      </field>
      <field name="typeParameters" optional="true">
        <ref>String</ref>
        <p>
          The type parameter list for the element. If the element doesn't have
          type parameters, this field will not be defined.
        </p>
      </field>
    </object>
  </type>
  <type name="ElementKind">
    <p>
      An enumeration of the kinds of elements.
    </p>
    <enum>
      <value><code>CLASS</code></value>
      <value><code>CLASS_TYPE_ALIAS</code></value>
      <value><code>COMPILATION_UNIT</code></value>
      <value><code>CONSTRUCTOR</code></value>
      <value><code>CONSTRUCTOR_INVOCATION</code></value>
      <value><code>ENUM</code></value>
      <value><code>ENUM_CONSTANT</code></value>
      <value><code>FIELD</code></value>
      <value><code>FILE</code></value>
      <value><code>FUNCTION</code></value>
      <value><code>FUNCTION_INVOCATION</code></value>
      <value><code>FUNCTION_TYPE_ALIAS</code></value>
      <value><code>GETTER</code></value>
      <value><code>LABEL</code></value>
      <value><code>LIBRARY</code></value>
      <value><code>LOCAL_VARIABLE</code></value>
      <value><code>METHOD</code></value>
      <value><code>MIXIN</code></value>
      <value><code>PARAMETER</code></value>
      <value><code>PREFIX</code></value>
      <value><code>SETTER</code></value>
      <value><code>TOP_LEVEL_VARIABLE</code></value>
      <value><code>TYPE_PARAMETER</code></value>
      <value><code>UNIT_TEST_GROUP</code></value>
      <value><code>UNIT_TEST_TEST</code></value>
      <value><code>UNKNOWN</code></value>
    </enum>
  </type>
  <type name="FilePath">
    <ref>String</ref>
    <p>
      The absolute, normalized path of a file.
    </p>
    <p>
      If the format of a file path in a request is not valid, e.g. the path is
      not absolute or is not normalized, then an error of type
      <tt>INVALID_FILE_PATH_FORMAT</tt> will be generated.
    </p>
  </type>
  <type name="FoldingKind">
    <p>
      An enumeration of the kinds of folding regions.
    </p>
    <enum>
      <value><code>ANNOTATIONS</code></value>
      <value><code>CLASS_BODY</code></value>
      <value><code>DIRECTIVES</code></value>
      <value><code>DOCUMENTATION_COMMENT</code></value>
      <value><code>FILE_HEADER</code></value>
      <value><code>FUNCTION_BODY</code></value>
      <value><code>INVOCATION</code></value>
      <value><code>LITERAL</code></value>
    </enum>
  </type>
  <type name="FoldingRegion">
    <p>
      A description of a region that can be folded.
    </p>
    <object>
      <field name="kind">
        <ref>FoldingKind</ref>
        <p>
          The kind of the region.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the region to be folded.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the region to be folded.
        </p>
      </field>
    </object>
  </type>
  <type name="HighlightRegion">
    <p>
      A description of a region that could have special highlighting associated
      with it.
    </p>
    <object>
      <field name="type">
        <ref>HighlightRegionType</ref>
        <p>
          The type of highlight associated with the region.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the region to be highlighted.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the region to be highlighted.
        </p>
      </field>
    </object>
  </type>
  <type name="HighlightRegionType">
    <p>
      An enumeration of the kinds of highlighting that can be applied to files.
    </p>
    <enum>
      <value><code>ANNOTATION</code></value>
      <value><code>BUILT_IN</code></value>
      <value><code>CLASS</code></value>
      <value><code>COMMENT_BLOCK</code></value>
      <value><code>COMMENT_DOCUMENTATION</code></value>
      <value><code>COMMENT_END_OF_LINE</code></value>
      <value><code>CONSTRUCTOR</code></value>
      <value><code>DIRECTIVE</code></value>
      <value>
        <code>DYNAMIC_TYPE</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>DYNAMIC_LOCAL_VARIABLE_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>DYNAMIC_LOCAL_VARIABLE_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>DYNAMIC_PARAMETER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>DYNAMIC_PARAMETER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value><code>ENUM</code></value>
      <value><code>ENUM_CONSTANT</code></value>
      <value>
        <code>FIELD</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>FIELD_STATIC</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>FUNCTION</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>FUNCTION_DECLARATION</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value><code>FUNCTION_TYPE_ALIAS</code></value>
      <value>
        <code>GETTER_DECLARATION</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value><code>IDENTIFIER_DEFAULT</code></value>
      <value><code>IMPORT_PREFIX</code></value>
      <value>
        <code>INSTANCE_FIELD_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_FIELD_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_GETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_GETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_METHOD_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_METHOD_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_SETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INSTANCE_SETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>INVALID_STRING_ESCAPE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value><code>KEYWORD</code></value>
      <value><code>LABEL</code></value>
      <value>
        <code>LIBRARY_NAME</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value><code>LITERAL_BOOLEAN</code></value>
      <value><code>LITERAL_DOUBLE</code></value>
      <value><code>LITERAL_INTEGER</code></value>
      <value><code>LITERAL_LIST</code></value>
      <value><code>LITERAL_MAP</code></value>
      <value><code>LITERAL_STRING</code></value>
      <value>
        <code>LOCAL_FUNCTION_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>LOCAL_FUNCTION_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>LOCAL_VARIABLE</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value><code>LOCAL_VARIABLE_DECLARATION</code></value>
      <value>
        <code>LOCAL_VARIABLE_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>METHOD</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>METHOD_DECLARATION</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>METHOD_DECLARATION_STATIC</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>METHOD_STATIC</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>PARAMETER</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>SETTER_DECLARATION</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_VARIABLE</code>
        <p>Only for version 1 of highlight.</p>
      </value>
      <value>
        <code>PARAMETER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>PARAMETER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_FIELD_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_GETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_GETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_METHOD_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_METHOD_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_SETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>STATIC_SETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_FUNCTION_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_FUNCTION_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_GETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_GETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_SETTER_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_SETTER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>TOP_LEVEL_VARIABLE_DECLARATION</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value><code>TYPE_NAME_DYNAMIC</code></value>
      <value><code>TYPE_PARAMETER</code></value>
      <value>
        <code>UNRESOLVED_INSTANCE_MEMBER_REFERENCE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
      <value>
        <code>VALID_STRING_ESCAPE</code>
        <p>Only for version 2 of highlight.</p>
      </value>
    </enum>
  </type>
  <type name="KytheEntry">
    <p>
      This object matches the format and documentation of the Entry object
      documented in the
      <a href="https://kythe.io/docs/kythe-storage.html#_entry">Kythe Storage
        Model</a>.
    </p>
    <object>
      <field name="source">
        <ref>KytheVName</ref>
        <p>
          The ticket of the source node.
        </p>
      </field>
      <field name="kind" optional="true">
        <ref>String</ref>
        <p>
          An edge label. The schema defines which labels are meaningful.
        </p>
      </field>
      <field name="target" optional="true">
        <ref>KytheVName</ref>
        <p>
          The ticket of the target node.
        </p>
      </field>
      <field name="fact">
        <ref>String</ref>
        <p>
          A fact label. The schema defines which fact labels are meaningful.
        </p>
      </field>
      <field name="value" optional="true">
        <list>
          <ref>int</ref>
        </list>
        <p>
          The <tt>String</tt> value of the fact.
        </p>
      </field>
    </object>
  </type>
  <type name="KytheVName">
    <p>
      This object matches the format and documentation of the Vector-Name object
      documented in the
      <a href="https://kythe.io/docs/kythe-storage.html#_a_id_termvname_a_vector_name_strong_vname_strong">Kythe
        Storage Model</a>.
    </p>
    <object>
      <field name="signature">
        <ref>String</ref>
        <p>
          An opaque signature generated by the analyzer.
        </p>
      </field>
      <field name="corpus">
        <ref>String</ref>
        <p>
          The corpus of source code this <tt>KytheVName</tt> belongs to.
          Loosely, a corpus is a collection of related files, such as the
          contents of a given source repository.
        </p>
      </field>
      <field name="root">
        <ref>String</ref>
        <p>
          A corpus-specific root label, typically a directory path or project
          identifier, denoting a distinct subset of the corpus. This may also be
          used to designate virtual collections like generated files.
        </p>
      </field>
      <field name="path">
        <ref>String</ref>
        <p>
          A path-structured label describing the “location” of the named object
          relative to the corpus and the root.
        </p>
      </field>
      <field name="language">
        <ref>String</ref>
        <p>
          The language this name belongs to.
        </p>
      </field>
    </object>
  </type>
  <type name="LinkedEditGroup">
    <p>
      A collection of positions that should be linked (edited simultaneously)
      for the purposes of updating code after a source change. For example, if a
      set of edits introduced a new variable name, the group would contain all
      of the positions of the variable name so that if the client wanted to let
      the user edit the variable name after the operation, all occurrences of
      the name could be edited simultaneously.
    </p>
    <object>
      <field name="positions">
        <list>
          <ref>Position</ref>
        </list>
        <p>
          The positions of the regions that should be edited simultaneously.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the regions that should be edited simultaneously.
        </p>
      </field>
      <field name="suggestions">
        <list>
          <ref>LinkedEditSuggestion</ref>
        </list>
        <p>
          Pre-computed suggestions for what every region might want to be
          changed to.
        </p>
      </field>
    </object>
  </type>
  <type name="LinkedEditSuggestion">
    <p>
      A suggestion of a value that could be used to replace all of the linked
      edit regions in a <a href="#type_LinkedEditGroup">LinkedEditGroup</a>.
    </p>
    <object>
      <field name="value">
        <ref>String</ref>
        <p>
          The value that could be used to replace all of the linked edit
          regions.
        </p>
      </field>
      <field name="kind">
        <ref>LinkedEditSuggestionKind</ref>
        <p>
          The kind of value being proposed.
        </p>
      </field>
    </object>
  </type>
  <type name="LinkedEditSuggestionKind">
    <p>
      An enumeration of the kind of values that can be suggested for a linked
      edit.
    </p>
    <enum>
      <value><code>METHOD</code></value>
      <value><code>PARAMETER</code></value>
      <value><code>TYPE</code></value>
      <value><code>VARIABLE</code></value>
    </enum>
  </type>
  <type name="Location">
    <p>
      A location (character range) within a file.
    </p>
    <object>
      <field name="file">
        <ref>FilePath</ref>
        <p>
          The file containing the range.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the range.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the range.
        </p>
      </field>
      <field name="startLine">
        <ref>int</ref>
        <p>
          The one-based index of the line containing the first character of the
          range.
        </p>
      </field>
      <field name="startColumn">
        <ref>int</ref>
        <p>
          The one-based index of the column containing the first character of
          the range.
        </p>
      </field>
    </object>
  </type>
  <type name="NavigationRegion">
    <p>
      A description of a region from which the user can navigate to the
      declaration of an element.
    </p>
    <object>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the region from which the user can navigate.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the region from which the user can navigate.
        </p>
      </field>
      <field name="targets">
        <list>
          <ref>int</ref>
        </list>
        <p>
          The indexes of the targets (in the enclosing navigation response) to
          which the given region is bound. By opening the target, clients can
          implement one form of navigation. This list cannot be empty.
        </p>
      </field>
    </object>
  </type>
  <type name="NavigationTarget">
    <p>
      A description of a target to which the user can navigate.
    </p>
    <object>
      <field name="kind">
        <ref>ElementKind</ref>
        <p>
          The kind of the element.
        </p>
      </field>
      <field name="fileIndex">
        <ref>int</ref>
        <p>
          The index of the file (in the enclosing navigation response) to
          navigate to.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the region to which the user can navigate.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the region to which the user can navigate.
        </p>
      </field>
      <field name="startLine">
        <ref>int</ref>
        <p>
          The one-based index of the line containing the first character of the
          region.
        </p>
      </field>
      <field name="startColumn">
        <ref>int</ref>
        <p>
          The one-based index of the column containing the first character of
          the region.
        </p>
      </field>
    </object>
  </type>
  <type name="Occurrences">
    <p>
      A description of the references to a single element within a single file.
    </p>
    <object>
      <field name="element">
        <ref>Element</ref>
        <p>
          The element that was referenced.
        </p>
      </field>
      <field name="offsets">
        <list>
          <ref>int</ref>
        </list>
        <p>
          The offsets of the name of the referenced element within the file.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the name of the referenced element.
        </p>
      </field>
    </object>
  </type>
  <type name="Outline">
    <p>
      An node in the outline structure of a file.
    </p>
    <object>
      <field name="element">
        <ref>Element</ref>
        <p>
          A description of the element represented by this node.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the first character of the element. This is different
          than the offset in the Element, which is the offset of the name of the
          element. It can be used, for example, to map locations in the file
          back to an outline.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the element.
        </p>
      </field>
      <field name="codeOffset">
        <ref>int</ref>
        <p>
          The offset of the first character of the element code, which is
          neither documentation, nor annotation.
        </p>
      </field>
      <field name="codeLength">
        <ref>int</ref>
        <p>
          The length of the element code.
        </p>
      </field>
      <field name="children" optional="true">
        <list>
          <ref>Outline</ref>
        </list>
        <p>
          The children of the node. The field will be omitted if the node has no
          children. Children are sorted by offset.
        </p>
      </field>
    </object>
  </type>
  <type name="ParameterInfo" experimental="true">
    <p>
      A description of a member that is being overridden.
    </p>
    <object>
      <field name="kind">
        <ref>ParameterKind</ref>
        <p>
          The kind of the parameter.
        </p>
      </field>
      <field name="name">
        <ref>String</ref>
        <p>
          The name of the parameter.
        </p>
      </field>
      <field name="type">
        <ref>String</ref>
        <p>
          The type of the parameter.
        </p>
      </field>
      <field name="defaultValue" optional="true">
        <ref>String</ref>
        <p>The default value for this parameter. This value will be omitted if the parameter
          does not have a default value.
        </p>
      </field>
    </object>
  </type>
  <type name="ParameterKind" experimental="true">
    <p>
      An enumeration of the types of parameters.
    </p>
    <enum>
      <value>
        <code>NAMED</code>
        <p>
          A named parameter.
        </p>
      </value>
      <value>
        <code>OPTIONAL</code>
        <p>
          An optional parameter.
        </p>
      </value>
      <value>
        <code>REQUIRED</code>
        <p>
          A required parameter.
        </p>
      </value>
    </enum>
  </type>
  <type name="Position">
    <p>
      A position within a file.
    </p>
    <object>
      <field name="file">
        <ref>FilePath</ref>
        <p>
          The file containing the position.
        </p>
      </field>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the position.
        </p>
      </field>
    </object>
  </type>
  <type name="RefactoringKind">
    <p>
      An enumeration of the kinds of refactorings that can be created.
    </p>
    <enum>
      <value><code>CONVERT_GETTER_TO_METHOD</code></value>
      <value><code>CONVERT_METHOD_TO_GETTER</code></value>
      <value><code>EXTRACT_LOCAL_VARIABLE</code></value>
      <value><code>EXTRACT_METHOD</code></value>
      <value><code>EXTRACT_WIDGET</code></value>
      <value><code>INLINE_LOCAL_VARIABLE</code></value>
      <value><code>INLINE_METHOD</code></value>
      <value><code>MOVE_FILE</code></value>
      <value><code>RENAME</code></value>
    </enum>
  </type>
  <type name="RefactoringMethodParameter">
    <!-- This type does not appear to be referenced yet. -->
    <p>
      A description of a parameter in a method refactoring.
    </p>
    <object>
      <field name="id" optional="true">
        <ref>String</ref>
        <p>
          The unique identifier of the parameter. Clients may omit this field
          for the parameters they want to add.
        </p>
      </field>
      <field name="kind">
        <ref>RefactoringMethodParameterKind</ref>
        <p>
          The kind of the parameter.
        </p>
      </field>
      <field name="type">
        <ref>String</ref>
        <p>
          The type that should be given to the parameter, or the return type of
          the parameter's function type.
        </p>
      </field>
      <field name="name">
        <ref>String</ref>
        <p>
          The name that should be given to the parameter.
        </p>
      </field>
      <field name="parameters" optional="true">
        <ref>String</ref>
        <p>
          The parameter list of the parameter's function type. If the parameter
          is not of a function type, this field will not be defined. If the
          function type has zero parameters, this field will have a value of
          '()'.
        </p>
      </field>
    </object>
  </type>
  <type name="RefactoringMethodParameterKind">
    <p>
      An enumeration of the kinds of parameters.
    </p>
    <enum>
      <value><code>REQUIRED</code></value>
      <value><code>POSITIONAL</code></value>
      <value><code>NAMED</code></value>
    </enum>
  </type>
  <type name="RefactoringProblem">
    <p>
      A description of a problem related to a refactoring.
    </p>
    <object>
      <field name="severity">
        <ref>RefactoringProblemSeverity</ref>
        <p>
          The severity of the problem being represented.
        </p>
      </field>
      <field name="message">
        <ref>String</ref>
        <p>
          A human-readable description of the problem being represented.
        </p>
      </field>
      <field name="location" optional="true">
        <ref>Location</ref>
        <p>
          The location of the problem being represented. This field is omitted
          unless there is a specific location associated with the problem (such
          as a location where an element being renamed will be shadowed).
        </p>
      </field>
    </object>
  </type>
  <type name="RefactoringProblemSeverity">
    <p>
      An enumeration of the severities of problems that can be returned by the
      refactoring requests.
    </p>
    <enum>
      <value>
        <code>INFO</code>
        <p>
          A minor code problem. No example, because it is not used yet.
        </p>
      </value>
      <value>
        <code>WARNING</code>
        <p>
          A minor code problem. For example names of local variables should be
          camel case and start with a lower case letter. Staring the name of a
          variable with an upper case is OK from the language point of view, but
          it is nice to warn the user.
        </p>
      </value>
      <value>
        <code>ERROR</code>
        <p>
          The refactoring technically can be performed, but there is a logical
          problem. For example the name of a local variable being extracted
          conflicts with another name in the scope, or duplicate parameter names
          in the method being extracted, or a conflict between a parameter name
          and a local variable, etc. In some cases the location of the problem
          is also provided, so the IDE can show user the location and the
          problem, and let the user decide whether they want to perform the
          refactoring. For example the name conflict might be expected, and the
          user wants to fix it afterwards.
        </p>
      </value>
      <value>
        <code>FATAL</code>
        <p>
          A fatal error, which prevents performing the refactoring. For example
          the name of a local variable being extracted is not a valid
          identifier, or selection is not a valid expression.
        </p>
      </value>
    </enum>
  </type>
  <type name="RemoveContentOverlay">
    <p>
      A directive to remove an existing file content overlay. After processing
      this directive, the file contents will once again be read from the file
      system.
    </p>
    <p>
      If this directive is used on a file that doesn't currently have a content
      overlay, it has no effect.
    </p>
    <object>
      <field name="type" value="remove">
        <ref>String</ref>
      </field>
    </object>
  </type>
  <type name="SourceChange">
    <p>
      A description of a set of edits that implement a single conceptual change.
    </p>
    <object>
      <field name="message">
        <ref>String</ref>
        <p>
          A human-readable description of the change to be applied.
        </p>
      </field>
      <field name="edits">
        <list>
          <ref>SourceFileEdit</ref>
        </list>
        <p>
          A list of the edits used to effect the change, grouped by file.
        </p>
      </field>
      <field name="linkedEditGroups">
        <list>
          <ref>LinkedEditGroup</ref>
        </list>
        <p>
          A list of the linked editing groups used to customize the changes that
          were made.
        </p>
      </field>
      <field name="selection" optional="true">
        <ref>Position</ref>
        <p>
          The position that should be selected after the edits have been
          applied.
        </p>
      </field>
      <field name="id" optional="true">
        <ref>String</ref>
        <p>
          The optional identifier of the change kind. The identifier remains
          stable even if the message changes, or is parameterized.
        </p>
      </field>
    </object>
  </type>
  <type name="SourceEdit">
    <p>
      A description of a single change to a single file.
    </p>
    <object>
      <field name="offset">
        <ref>int</ref>
        <p>
          The offset of the region to be modified.
        </p>
      </field>
      <field name="length">
        <ref>int</ref>
        <p>
          The length of the region to be modified.
        </p>
      </field>
      <field name="replacement">
        <ref>String</ref>
        <p>
          The code that is to replace the specified region in the original code.
        </p>
      </field>
      <field name="id" optional="true">
        <ref>String</ref>
        <p>
          An identifier that uniquely identifies this source edit from other
          edits in the same response. This field is omitted unless a containing
          structure needs to be able to identify the edit for some reason.
        </p>
        <p>
          For example, some refactoring operations can produce edits that might
          not be appropriate (referred to as potential edits). Such edits will
          have an id so that they can be referenced. Edits in the same response
          that do not need to be referenced will not have an id.
        </p>
      </field>
    </object>
  </type>
  <type name="SourceFileEdit">
    <p>
      A description of a set of changes to a single file.
    </p>
    <object>
      <field name="file">
        <ref>FilePath</ref>
        <p>
          The file containing the code to be modified.
        </p>
      </field>
      <field name="fileStamp" deprecated="true">
        <ref>long</ref>
        <p>
          The modification stamp of the file at the moment when the change was
          created, in milliseconds since the "Unix epoch". Will be -1 if the
          file did not exist and should be created. The client may use this
          field to make sure that the file was not changed since then, so it is
          safe to apply the change.
        </p>
      </field>
      <field name="edits">
        <list>
          <ref>SourceEdit</ref>
        </list>
        <p>
          A list of the edits used to effect the change.
        </p>
      </field>
    </object>
  </type>
</types>
</body>
</html>
