public PropertyBasedIndexerMock(MocklisTypesForSymbols typesForSymbols, INamedTypeSymbol classSymbol, INamedTypeSymbol interfaceSymbol, IPropertySymbol symbol, string mockMemberName, bool strict, bool veryStrict) : base(typesForSymbols, classSymbol, interfaceSymbol, symbol, mockMemberName, strict, veryStrict) { var builder = new SingleTypeOrValueTupleBuilder(TypesForSymbols); foreach (var p in symbol.Parameters) { builder.AddParameter(p); } KeyType = builder.Build(mockMemberName); var keyTypeSyntax = KeyType.BuildTypeSyntax(); KeyTypeSyntax = keyTypeSyntax ?? throw new ArgumentException("Property symbol must have at least one parameter", nameof(symbol)); ValueTypeSyntax = typesForSymbols.ParseTypeName(symbol.Type, symbol.NullableOrOblivious()); MockPropertyType = typesForSymbols.IndexerMock(KeyTypeSyntax, ValueTypeSyntax); }