code: public boolean overrides(MethodDoc meth) {
          MethodSymbol overridee = ((MethodDocImpl) meth).sym;
          ClassSymbol origin = (ClassSymbol) sym.owner;
  
          return sym.name == overridee.name &&
  
                 // not reflexive as per JLS
                 sym != overridee &&
  
                 // we don't care if overridee is static, though that wouldn't
                 // compile
                 !sym.isStatic() &&
  
                 // sym, whose declaring type is the origin, must be
                 // in a subtype of overridee's type
                 env.types.asSuper(origin.type, overridee.owner) != null &&
  
                 // check access and signatures; don't check return types
                 sym.overrides(overridee, origin, env.types, false);
      }
docs: Tests whether this method overrides another.
  The overridden method may be one declared in a superclass or
  a superinterface (unlike {@link #overriddenMethod()}).
  
  <p> When a non-abstract method overrides an abstract one, it is
  also said to <i>implement</i> the other.
  
  @param meth  the other method to examine
  @return <tt>true</tt> if this method overrides the other