anchor.diff:        // this case the type argument(s) on `type` have been instantiated to
         // bounds. Switch to the declaration, which will be an uninstantiated
         // type.
  -      type = (type.element2.declaration as ClassElement).thisType;
  +      type = (type.element2.declaration as InterfaceElement).thisType;
       } else {
         // Check explicit type arguments for unknown types that were
         // turned into `dynamic` by the analyzer.
  
positive.code:     } else {
        final fakeName = mockLibraryInfo._fakeNameFor(elementToFake);
        // Only make one fake class for each class that needs to be faked.
        if (!mockLibraryInfo.fakedClassElements.contains(elementToFake)) {
          _addFakeClass(fakeName, elementToFake);
        }
        final typeArguments = dartType.typeArguments;
  
negative.code:     for (final mockTarget in _mockTargets) {
        final name = mockTarget.mockName;
        if (classNamesToMock.containsKey(name)) {
          final firstClass = classNamesToMock[name]!.interfaceElement;
          final firstSource = firstClass.source.fullName;
          final secondSource = mockTarget.interfaceElement.source.fullName;
          throw InvalidMockitoAnnotationException(
              'Mockito cannot generate two mocks with the same name: $name (for '
              '${firstClass.name} declared in $firstSource, and for '
              '${mockTarget.interfaceElement.name} declared in $secondSource); '
              '$uniqueNameSuggestion.');
        }
        classNamesToMock[name] = mockTarget;
  