anchor.diff:      if (param.isCovariant) {
         buffer.write('${covariant('covariant')} ');
       }
  -    if (paramModelType is Callable) {
  -      String returnTypeName;
  -      if (paramModelType.isTypedef) {
  -        returnTypeName = paramModelType.linkedName;
  -      } else {
  -        returnTypeName = paramModelType.returnType.linkedName;
  -      }
  +    if (modelType is Callable) {
  +      final returnTypeName = modelType.isTypedef
  +          ? modelType.linkedName
  +          : modelType.returnType.linkedName;
         buffer.write(typeName(returnTypeName));
         if (showNames) {
           buffer.write(' ${parameterName(param.name)}');
         } else {
  -        buffer.write(' ${parameterName(paramModelType.name)}');
  -      }
  -      if (!paramModelType.isTypedef && paramModelType is DefinedElementType) {
  +        buffer.write(' ${parameterName(modelType.name)}');
  +      }
  +      if (!modelType.isTypedef && modelType is DefinedElementType) {
           buffer.write('(');
           buffer.write(renderLinkedParams(
  -          (paramModelType as DefinedElementType).modelElement.parameters,
  +          (modelType as DefinedElementType).modelElement.parameters,
             showMetadata: showMetadata,
             showNames: showNames,
           ));
           buffer.write(')');
  -        buffer.write(paramModelType.nullabilitySuffix);
  -      }
  -      if (!paramModelType.isTypedef) {
  +        buffer.write(modelType.nullabilitySuffix);
  +      }
  +      if (!modelType.isTypedef) {
           buffer.write('(');
           buffer.write(renderLinkedParams(
  -          paramModelType.parameters,
  +          modelType.parameters,
             showMetadata: showMetadata,
             showNames: showNames,
           ));
           buffer.write(')');
  -        buffer.write(paramModelType.nullabilitySuffix);
  +        buffer.write(modelType.nullabilitySuffix);
         }
       } else {
  -      var linkedTypeName = paramModelType.linkedName;
  +      final linkedTypeName = modelType.linkedName;
         if (linkedTypeName.isNotEmpty) {
           buffer.write(typeName(linkedTypeName));
           if (showNames && param.name.isNotEmpty) {
  
positive.code:     bool showMetadata = true,
      bool showNames = true,
    }) {
      var buffer = StringBuffer();
      buffer.write(prefix);
      var paramModelType = param.modelType;
  
      if (showMetadata && param.hasAnnotations) {
        for (var a in param.annotations) {
          buffer.write(annotation(a.linkedNameWithParameters));
          buffer.write(' ');
        }
      }
      if (param.isRequiredNamed) {
  
negative.code:       } else {
          suffix += ', ';
        }
        final renderedParameter = _renderParameter(
          p,
          prefix: prefix,
          suffix: suffix,
  