1 2\input{header} 3\begin{tikzpicture} 4 5\begin{component}{20cm}{1}{0}{CachedGreeterComponent with replacement} 6 7\begin{component}{4cm}{7.5}{0}{GreeterComponent} 8\end{component} 9 10\begin{component}{4cm}{7.5}{2.5}{FakeKeyValueStorageComponent} 11\end{component} 12 13\newcomponent{0}{1.3}{CachedGreeterImpl} 14 15\umlassemblyconnector[interface=Greeter]{GreeterComponent}{CachedGreeterImpl} 16\umlassemblyconnector[interface=KeyValueStorage]{FakeKeyValueStorageComponent}{CachedGreeterImpl} 17 18\umlprovidedinterface[interface={Annotated<Cached,Greeter>}, distance=4.3, with port, padding=2.1cm]{CachedGreeterImpl} 19 20\end{component} 21\umlprovidedinterface[interface={Annotated<Cached,Greeter>}, distance=11.2, with port, padding=0.2cm]{CachedGreeterComponent with replacement} 22 23\umldep{CachedGreeterImpl-west-interface}{CachedGreeterComponent with replacement-west-port} 24 25\end{tikzpicture} 26\input{footer} 27