anchor.diff:      return null;
     }
   
  -  /// Checks if n is invoked on the class matching
  +  /// Checks if the node n is invoked on a class matching
     /// the klass_matcher.
  -  ///
  -  /// There is an issue with identifying the base.
  -  /// e.g. `c` in the case of `A.b.c.hi()`.
  -  /// `A.b.c` is a PropertyAccess.
  -  ///
  -  /// e.g. `d` in `p.d.hi()`
  -  /// `p.d` is a PrefixedIdentifier.
  -  ///
  -  ///
     bool is_n_invoked_on(AstNode n){
  +    /// There is an issue with identifying the base.
  +    /// e.g. `c` in the case of `A.b.c.hi()`.
  +    /// `A.b.c` is a PropertyAccess.
  +    ///
  +    /// e.g. `d` in `p.d.hi()`
  +    /// `p.d` is a PrefixedIdentifier.
  +    ///
  +    /// extract_invocation_base is used to circumvent
  +    /// the problem, but the method is inefficient and
  +    /// ugly.
   //    print('precessing $n');
   //    show(n);
       if(skip_type_check) {
  
positive.code:   ///         invocation = invocation.join('.') +
    ///             '.set(\'${name}\', ${l.join('=')})';
    ///         return invocation;
    ///
    ///       }
    ///
    /// Only nodes of type T that match the
  
negative.code:   /// method, but mutate_t should be
    /// sufficient for most purposes.
    ///
    /// `required_import` option
    /// allows skipping running mutate on files
    /// that do not contain at least one of the
    /// packages.
    /// If not specified, no file is skipped.
    ///
    /// `alias_name`option should be set to modify
    /// a MethodInvocation of a function defined
    /// in an aliased file:
    /// e.g.
  