Challenge 3: Calling Process() Directly on the Class Type — Possible Solution ==================================================================== Using Challenge 2's Document class: Document doc = new Document(); doc.Process(); // attempting to call directly on the Document-typed variable Representative compile error: Program.cs(9,9): error CS1061: 'Document' does not contain a definition for 'Process' and no accessible extension method 'Process' accepting a first argument of type 'Document' could be found (are you missing a using directive or an assembly reference?) Explanation: Both Process() implementations in Document were written using explicit interface implementation syntax (IPrintable.Process() and ISavable.Process()), which means neither one becomes a genuine public member of the Document class itself -- they exist ONLY as part of each interface's own contract. The Document type, looked at on its own, has no member named Process() at all from the compiler's perspective; that's why the error reads as if Process() doesn't exist on Document, rather than being ambiguous between two candidates. The only way to reach either implementation is through a reference or cast typed as IPrintable or ISavable specifically, exactly as Challenge 2 demonstrated. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the exact CS1061 "does not contain a definition" error the chapter's warn-box describes, and correctly explains it in terms of explicitly-implemented members never becoming part of the concrete class's own public surface.