content: // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
  // for details. All rights reserved. Use of this source code is governed by a
  // BSD-style license that can be found in the LICENSE file.
  
  part of dart.core;
  
  /**
   * Representation of the invocation of a member on an object.
   *
   * This is the type of objects passed to [Object.noSuchMethod] when
   * an object doesn't support the member invocation that was attempted
   * on it.
   */
  abstract class Invocation {
    /** The name of the invoked member. */
    Symbol get memberName;
  
    /**
     * An unmodifiable view of the positional arguments of the call.
     *
     * If the member is a getter, the positional arguments is empty.
     */
    List get positionalArguments;
  
    /**
     * An unmodifiable view of the named arguments of the call.
     *
     * If the member is a getter, setter or operator, the named arguments
     * is empty.
     */
    Map<Symbol, dynamic> get namedArguments;
  
    /** Whether the invocation was a method call. */
    bool get isMethod;
  
    /**
     * Whether the invocation was a getter call.
     * If so, both types of arguments is empty.
     */
    bool get isGetter;
  
    /**
     * Whether the invocation was a setter call.
     *
     * If so, [arguments] has exactly one positonal argument,
     * and [namedArguments] is empty.
     */
    bool get isSetter;
  
    /** Whether the invocation was a getter or a setter call. */
    bool get isAccessor => isGetter || isSetter;
  }
  