protected override void MakeMembers(ArrayBuilder <Symbol> mb, Binder binder, DiagnosticBag diagnostics)
        {
            // TODO(@MattWindsor91): handle duplicate methods

            foreach (var concept in ((SourceNamedTypeSymbol)ContainingSymbol).GetConceptsForInlineInstances(null))
            {
                foreach (var member in concept.GetMembersUnordered())
                {
                    // TODO(@MattWindsor91): properties
                    if (member.Kind != SymbolKind.Method)
                    {
                        // TODO(@MattWindsor91): better error?
                        diagnostics.Add(ErrorCode.ERR_InlineInstanceNonMethodMember, ContainingSymbol.GetNonNullSyntaxNode().Location, member);
                        continue;
                    }
                    var shim = TrySynthesizeInstanceShim(concept, (MethodSymbol)member, diagnostics);
                    if (shim != null)
                    {
                        mb.Add(shim);
                    }
                }
            }
        }
        internal void CheckConceptImplementations(DiagnosticBag diagnostics, CancellationToken cancellationToken)
        {
            // TODO(@MattWindsor91): Most of this is copied from
            //     SourceMemberContainerSymbol.ComputeInterfaceImplementations,
            //     and may not be relevant or optimal.

            ImmutableHashSet <NamedTypeSymbol> interfacesAndTheirBases = InterfacesAndTheirBaseInterfacesNoUseSiteDiagnostics;

            foreach (var concept in AllInterfacesNoUseSiteDiagnostics)
            {
                cancellationToken.ThrowIfCancellationRequested();

                if (!interfacesAndTheirBases.Contains(concept))
                {
                    continue;
                }

                foreach (var conceptMember in concept.GetMembersUnordered())
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    // Only require implementations for members that can be implemented in C#.
                    SymbolKind conceptMemberKind = conceptMember.Kind;
                    switch (conceptMemberKind)
                    {
                    case SymbolKind.Method:
                    case SymbolKind.Property:
                    case SymbolKind.Event:
                        if (conceptMember.IsStatic)
                        {
                            continue;
                        }
                        break;

                    default:
                        continue;
                    }

                    var implementingMemberAndDiagnostics = FindImplementationForInterfaceMemberWithDiagnostics(conceptMember);
                    // TODO(@MattWindsor91): Probably incorrect
                    if (implementingMemberAndDiagnostics.Diagnostics.Any())
                    {
                        diagnostics.AddRange(implementingMemberAndDiagnostics.Diagnostics);
                    }
                    else if (implementingMemberAndDiagnostics.Symbol == null)
                    {
                        // Suppress for bogus properties and events and for indexed properties.
                        if (!conceptMember.MustCallMethodsDirectly() && !conceptMember.IsIndexedProperty())
                        {
                            DiagnosticInfo useSiteDiagnostic = conceptMember.GetUseSiteDiagnostic();

                            if (useSiteDiagnostic != null && useSiteDiagnostic.DefaultSeverity == DiagnosticSeverity.Error)
                            {
                                // TODO(@MattWindsor91): location is wrong.
                                diagnostics.Add(useSiteDiagnostic, ContainingSymbol.GetNonNullSyntaxNode().Location);
                            }
                            else
                            {
                                diagnostics.Add(ErrorCode.ERR_InlineInstanceMissingMember, ContainingSymbol.GetNonNullSyntaxNode().Location, ContainingSymbol, concept, conceptMember);
                            }
                        }
                    }
                }
            }
        }