Predicate<MethodRepr> lessSpecific(final MethodRepr than) {
      return m -> {
        if (m.name == myInitName || m.name != than.name || m.myArgumentTypes.length != than.myArgumentTypes.length) {
          return false;
        }

        for (int i = 0; i < than.myArgumentTypes.length; i++) {
          final Boolean subtypeOf = isSubtypeOf(than.myArgumentTypes[i], m.myArgumentTypes[i]);
          if (subtypeOf != null && !subtypeOf) {
            return false;
          }
        }

        return true;
      };
    }
Predicate<MethodRepr> lessSpecific(final MethodRepr than)