anchor.diff:     */
     List<UnlinkedParam> parameters;
   
  -  @Flag('FUNCTION', 0,
  -      'Indicates that the declaration is for a function or method')
  -  @Flag('GETTER', 1, 'Indicates that the declaration is for a getter')
  -  @Flag('SETTER', 2, 'Indicates that the declaration is for a setter')
  -  @Flag('CONSTRUCTOR', 3, 'Indicates that the declaration is for a constructor')
  -  @Flag('ABSTRACT', 4, 'Set if the declaration lacks a function body')
  -  @Flag('STATIC', 8, 'Set if the declaration includes the `static` keyword')
  -  @Flag('CONST', 16,
  -      'Set if the declaration includes the `const` keyword (constructors only)')
  -  @Flag('FACTORY', 32,
  -      'Set if the declaration includes the `factory` keyword (constructors only)')
  -  int flags;
  +  /**
  +   * The kind of the executable (function/method, getter, setter, or
  +   * constructor).
  +   */
  +  UnlinkedExecutableKind kind;
  +
  +  /**
  +   * Indicates whether the executable is declared using the `abstract` keyword.
  +   */
  +  bool isAbstract;
  +
  +  /**
  +   * Indicates whether the executable is declared using the `static` keyword.
  +   *
  +   * Note that for top level executables, this flag is false, since they are
  +   * not declared using the `static` keyword (even though they are considered
  +   * static for semantic purposes).
  +   */
  +  bool isStatic;
  +
  +  /**
  +   * Indicates whether the executable is declared using the `const` keyword.
  +   */
  +  bool isConst;
  +
  +  /**
  +   * Indicates whether the executable is declared using the `factory` keyword.
  +   */
  +  bool isFactory;
   }
   
   /**
  
positive.code:    */
    List<UnlinkedExecutable> executables;
  
    @Flag(
        'ABSTRACT', 1, 'Set if the class is declared with the `abstract` keyword')
    @Flag('MIXIN_APP', 2,
        'Set if the class is declared using mixin appliation syntax')
    int flags;
  }
  
  /**
  
negative.code: }
  
  /**
   * Enum used to indicate the kind of a parameter.
   */
  enum UnlinkedParamKind {
    /**
     * Parameter is required.
     */
    required,
  
    /**
     * Parameter is positional optional (enclosed in `[]`)
     */
    positional,
  
    /**
     * Parameter is named optional (enclosed in `{}`)
     */
    named
  }
  
  /**
   * Unlinked summary information about a function parameter.
   */
  class UnlinkedParam {
  