SYMBOL INDEX (335 symbols across 99 files) FILE: src/com/xpinjection/patterns/adapter/ModernAdapterClient.java class ModernAdapterClient (line 14) | public class ModernAdapterClient { method main (line 15) | public static void main(String[] args) throws InterruptedException { FILE: src/com/xpinjection/patterns/adapter/canonical/AdapterClient.java class AdapterClient (line 12) | public class AdapterClient { method main (line 13) | public static void main(String[] args) throws InterruptedException { FILE: src/com/xpinjection/patterns/adapter/canonical/CharCounterTask.java class CharCounterTask (line 9) | public class CharCounterTask implements Runnable { method CharCounterTask (line 13) | public CharCounterTask(String str, AtomicInteger counter) { method run (line 18) | @Override FILE: src/com/xpinjection/patterns/adapter/canonical/ExecutorConsumerAdaptor.java class ExecutorConsumerAdaptor (line 9) | public class ExecutorConsumerAdaptor implements Consumer { method ExecutorConsumerAdaptor (line 12) | public ExecutorConsumerAdaptor(Executor executor) { method accept (line 16) | @Override FILE: src/com/xpinjection/patterns/builder/FutureBuilderClient.java class FutureBuilderClient (line 6) | public class FutureBuilderClient { FILE: src/com/xpinjection/patterns/builder/FutureCluster.java class FutureCluster (line 6) | public class FutureCluster { FILE: src/com/xpinjection/patterns/builder/LombokBuilderClient.java class LombokBuilderClient (line 6) | public class LombokBuilderClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/builder/LombokCluster.java class LombokCluster (line 12) | @Builder FILE: src/com/xpinjection/patterns/builder/canonical/BuilderClient.java class BuilderClient (line 6) | public class BuilderClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/builder/canonical/Cluster.java class Cluster (line 6) | public class Cluster { method storingBuilder (line 12) | public static StoringBuilder storingBuilder() { method runtimeBuilder (line 16) | public static RuntimeBuilder runtimeBuilder() { method Cluster (line 20) | public Cluster(String[] hosts, int port) { method Cluster (line 25) | public Cluster() { method setHosts (line 28) | public void setHosts(String... hosts) { method getHosts (line 32) | public String[] getHosts() { method setPort (line 36) | public void setPort(int port) { method getPort (line 40) | public int getPort() { method setRetryAttempts (line 44) | public void setRetryAttempts(int retryAttempts) { method getRetryAttempts (line 48) | public int getRetryAttempts() { method setMetricsEnabled (line 52) | public void setMetricsEnabled(boolean metricsEnabled) { method isMetricsEnabled (line 56) | public boolean isMetricsEnabled() { class RuntimeBuilder (line 60) | public static class RuntimeBuilder { method addContactPoints (line 63) | public RuntimeBuilder addContactPoints(String... hosts) { method withPort (line 71) | public RuntimeBuilder withPort(int port) { method withRetryAttempts (line 76) | public RuntimeBuilder withRetryAttempts(int retryAttempts) { method withoutMetrics (line 81) | public RuntimeBuilder withoutMetrics() { method build (line 86) | public Cluster build() { class StoringBuilder (line 91) | public static class StoringBuilder { method addContactPoints (line 97) | public StoringBuilder addContactPoints(String... hosts) { method withPort (line 105) | public StoringBuilder withPort(int port) { method withRetryAttempts (line 110) | public StoringBuilder withRetryAttempts(int retryAttempts) { method withoutMetrics (line 115) | public StoringBuilder withoutMetrics() { method build (line 120) | public Cluster build() { FILE: src/com/xpinjection/patterns/chain/ModernAuthRequestHandler.java class ModernAuthRequestHandler (line 10) | public class ModernAuthRequestHandler implements Consumer { method accept (line 13) | @Override method getCurrentUser (line 20) | public static Long getCurrentUser() { FILE: src/com/xpinjection/patterns/chain/ModernChainClient.java class ModernChainClient (line 11) | public class ModernChainClient { method main (line 12) | public static void main(String[] args) { method chain (line 18) | @SafeVarargs method log (line 25) | private static void log(Request request) { FILE: src/com/xpinjection/patterns/chain/canonical/AbstractRequestHandler.java class AbstractRequestHandler (line 6) | public abstract class AbstractRequestHandler implements RequestHandler { method AbstractRequestHandler (line 9) | public AbstractRequestHandler(RequestHandler next) { method passToTheNext (line 13) | protected void passToTheNext(Request request) { FILE: src/com/xpinjection/patterns/chain/canonical/AuthRequestHandler.java class AuthRequestHandler (line 6) | public class AuthRequestHandler extends AbstractRequestHandler { method AuthRequestHandler (line 9) | public AuthRequestHandler(RequestHandler next) { method handleRequest (line 13) | @Override method getCurrentUser (line 21) | public static Long getCurrentUser() { FILE: src/com/xpinjection/patterns/chain/canonical/ChainClient.java class ChainClient (line 6) | public class ChainClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/chain/canonical/LoggingRequestHandler.java class LoggingRequestHandler (line 6) | public class LoggingRequestHandler extends AbstractRequestHandler { method LoggingRequestHandler (line 7) | public LoggingRequestHandler(RequestHandler next) { method handleRequest (line 11) | @Override FILE: src/com/xpinjection/patterns/chain/canonical/Request.java class Request (line 9) | public class Request { method Request (line 13) | public Request(long userId) { method addParam (line 17) | public Request addParam(String name, String value) { method getUserId (line 22) | public long getUserId() { method getParams (line 26) | public Map getParams() { method toString (line 30) | @Override FILE: src/com/xpinjection/patterns/chain/canonical/RequestHandler.java type RequestHandler (line 6) | public interface RequestHandler { method handleRequest (line 7) | void handleRequest(Request request); FILE: src/com/xpinjection/patterns/command/ModernCommandClient.java class ModernCommandClient (line 8) | public class ModernCommandClient { method main (line 9) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/command/ModernMacro.java class ModernMacro (line 11) | public class ModernMacro { method record (line 14) | public ModernMacro record(Command action) { method run (line 19) | public void run() { FILE: src/com/xpinjection/patterns/command/canonical/BoldCommand.java class BoldCommand (line 6) | public class BoldCommand implements Command { method BoldCommand (line 9) | public BoldCommand(Editor editor) { method execute (line 13) | @Override FILE: src/com/xpinjection/patterns/command/canonical/Command.java type Command (line 6) | public interface Command { method execute (line 7) | void execute(); FILE: src/com/xpinjection/patterns/command/canonical/CommandClient.java class CommandClient (line 6) | public class CommandClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/command/canonical/Document.java class Document (line 6) | public class Document implements Editor { method bold (line 7) | @Override method italic (line 12) | @Override method underline (line 17) | @Override FILE: src/com/xpinjection/patterns/command/canonical/Editor.java type Editor (line 6) | public interface Editor { method bold (line 7) | void bold(); method italic (line 9) | void italic(); method underline (line 11) | void underline(); FILE: src/com/xpinjection/patterns/command/canonical/ItalicCommand.java class ItalicCommand (line 6) | public class ItalicCommand implements Command { method ItalicCommand (line 9) | public ItalicCommand(Editor editor) { method execute (line 13) | @Override FILE: src/com/xpinjection/patterns/command/canonical/Macro.java class Macro (line 9) | public class Macro { method record (line 12) | public void record(Command action) { method run (line 16) | public void run() { FILE: src/com/xpinjection/patterns/command/canonical/UnderlineCommand.java class UnderlineCommand (line 6) | public class UnderlineCommand implements Command { method UnderlineCommand (line 9) | public UnderlineCommand(Editor editor) { method execute (line 13) | @Override FILE: src/com/xpinjection/patterns/decorator/ModernDecoratorClient.java class ModernDecoratorClient (line 11) | public class ModernDecoratorClient { method main (line 12) | public static void main(String[] args) { method wrap (line 23) | public static DigitCounter wrap(DigitCounter counter) { FILE: src/com/xpinjection/patterns/decorator/canonical/BenchmarkingDigitCounter.java class BenchmarkingDigitCounter (line 6) | public class BenchmarkingDigitCounter implements DigitCounter { method BenchmarkingDigitCounter (line 9) | public BenchmarkingDigitCounter(DigitCounter delegate) { method count (line 13) | @Override FILE: src/com/xpinjection/patterns/decorator/canonical/DecoratorClient.java class DecoratorClient (line 6) | public class DecoratorClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/decorator/canonical/DigitCounter.java type DigitCounter (line 6) | public interface DigitCounter { method count (line 7) | int count(String str); FILE: src/com/xpinjection/patterns/decorator/canonical/NaiveDigitCounter.java class NaiveDigitCounter (line 6) | public class NaiveDigitCounter implements DigitCounter { method count (line 7) | @Override FILE: src/com/xpinjection/patterns/factorymethod/ModernFactoryMethodClient.java class ModernFactoryMethodClient (line 12) | public class ModernFactoryMethodClient { method main (line 13) | public static void main(String[] args) { method printUserDetails (line 21) | private static void printUserDetails(Document document) { FILE: src/com/xpinjection/patterns/factorymethod/canonical/Document.java type Document (line 6) | public interface Document { method getName (line 7) | String getName(); method addField (line 9) | void addField(String name, String value); method toString (line 11) | String toString(); FILE: src/com/xpinjection/patterns/factorymethod/canonical/DocumentFactory.java type DocumentFactory (line 6) | public interface DocumentFactory { method create (line 7) | Document create(String name); FILE: src/com/xpinjection/patterns/factorymethod/canonical/FactoryMethodClient.java class FactoryMethodClient (line 6) | public class FactoryMethodClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/factorymethod/canonical/JsonDocument.java class JsonDocument (line 10) | public class JsonDocument implements Document { method JsonDocument (line 14) | public JsonDocument(String name) { method getName (line 18) | @Override method addField (line 23) | @Override method toString (line 28) | @Override FILE: src/com/xpinjection/patterns/factorymethod/canonical/JsonDocumentFactory.java class JsonDocumentFactory (line 6) | public class JsonDocumentFactory implements DocumentFactory { method create (line 7) | @Override FILE: src/com/xpinjection/patterns/iterator/ModernIteratorClient.java class ModernIteratorClient (line 9) | public class ModernIteratorClient { method main (line 10) | public static void main(String[] args) { method capitalize (line 22) | private static String capitalize(String sentence) { FILE: src/com/xpinjection/patterns/iterator/ModernMultilineText.java class ModernMultilineText (line 12) | public class ModernMultilineText implements ModernText { method ModernMultilineText (line 16) | public ModernMultilineText(String text, String lineSeparator) { method linesStream (line 21) | @Override class LineSupplier (line 26) | private class LineSupplier extends Spliterators.AbstractSpliterator linesStream(); FILE: src/com/xpinjection/patterns/iterator/canonical/IteratorClient.java class IteratorClient (line 6) | public class IteratorClient { method main (line 7) | public static void main(String[] args) { method capitalize (line 24) | private static String capitalize(String sentence) { FILE: src/com/xpinjection/patterns/iterator/canonical/LineIterator.java type LineIterator (line 6) | public interface LineIterator { method nextLine (line 7) | String nextLine(); FILE: src/com/xpinjection/patterns/iterator/canonical/MultilineText.java class MultilineText (line 6) | public class MultilineText implements Text { method MultilineText (line 10) | public MultilineText(String text, String lineSeparator) { method lineIterator (line 15) | @Override class SeparatorBasedLineIterator (line 20) | private class SeparatorBasedLineIterator implements LineIterator { method nextLine (line 23) | @Override FILE: src/com/xpinjection/patterns/iterator/canonical/Text.java type Text (line 6) | public interface Text { method lineIterator (line 7) | LineIterator lineIterator(); FILE: src/com/xpinjection/patterns/observer/ModernObserver.java type ModernObserver (line 10) | public interface ModernObserver { method addListener (line 11) | void addListener(Consumer listener); FILE: src/com/xpinjection/patterns/observer/ModernObserverClient.java class ModernObserverClient (line 8) | public class ModernObserverClient { method main (line 9) | public static void main(String[] args) { method log (line 17) | public static void log(Event event) { FILE: src/com/xpinjection/patterns/observer/ModernTimeServer.java class ModernTimeServer (line 14) | public class ModernTimeServer implements ModernObserver { method addListener (line 19) | @Override method reportTime (line 24) | public void reportTime() { FILE: src/com/xpinjection/patterns/observer/canonical/Event.java class Event (line 6) | public class Event { method Event (line 9) | public Event(String name) { method getName (line 13) | public String getName() { FILE: src/com/xpinjection/patterns/observer/canonical/EventListener.java type EventListener (line 6) | public interface EventListener { method onEvent (line 7) | void onEvent(Event event); FILE: src/com/xpinjection/patterns/observer/canonical/LoggingEventListener.java class LoggingEventListener (line 6) | public class LoggingEventListener implements EventListener { method onEvent (line 7) | @Override FILE: src/com/xpinjection/patterns/observer/canonical/Observer.java type Observer (line 6) | public interface Observer { method addListener (line 7) | void addListener(EventListener listener); FILE: src/com/xpinjection/patterns/observer/canonical/ObserverClient.java class ObserverClient (line 6) | public class ObserverClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/observer/canonical/TimeServer.java class TimeServer (line 11) | public class TimeServer implements Observer { method addListener (line 16) | @Override method reportTime (line 21) | public void reportTime() { FILE: src/com/xpinjection/patterns/prototype/Stats.java type Stats (line 8) | public interface Stats { method add (line 9) | S add(S delta); method invert (line 11) | S invert(Date forDate); FILE: src/com/xpinjection/patterns/prototype/StatsProcessor.java class StatsProcessor (line 10) | public class StatsProcessor { method process (line 11) | public List process(long domainId, List stats) { FILE: src/com/xpinjection/patterns/prototype/TrafficStats.java class TrafficStats (line 8) | public class TrafficStats implements Stats { method TrafficStats (line 14) | public TrafficStats(long domainId, Date rankDate) { method TrafficStats (line 19) | private TrafficStats(long domainId, Date rankDate, long traffic) { method getDomainId (line 24) | public long getDomainId() { method getRankDate (line 28) | public Date getRankDate() { method setEstimatedTraffic (line 32) | public void setEstimatedTraffic(long estimatedTraffic) { method getEstimatedTraffic (line 36) | public long getEstimatedTraffic() { method add (line 40) | @Override method invert (line 45) | @Override method toString (line 50) | @Override FILE: src/com/xpinjection/patterns/prototype/canonical/Circle.java class Circle (line 6) | public class Circle implements Figure { method Circle (line 9) | public Circle(int radix) { method changeRadix (line 13) | public void changeRadix(int delta) { method getSquare (line 17) | @Override method clone (line 22) | @Override FILE: src/com/xpinjection/patterns/prototype/canonical/Editor.java class Editor (line 9) | public class Editor { method addCircle (line 15) | public Circle addCircle() { method addRectangle (line 21) | public Rectangle addRectangle() { FILE: src/com/xpinjection/patterns/prototype/canonical/Figure.java type Figure (line 6) | public interface Figure { method getSquare (line 7) | double getSquare(); method clone (line 9) | Figure clone(); FILE: src/com/xpinjection/patterns/prototype/canonical/PrototypeClient.java class PrototypeClient (line 6) | public class PrototypeClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/prototype/canonical/Rectangle.java class Rectangle (line 6) | public class Rectangle implements Figure { method Rectangle (line 10) | public Rectangle(int width, int height) { method changeSize (line 15) | public void changeSize(int widthDelta, int heightDelta) { method getSquare (line 20) | @Override method clone (line 25) | @Override FILE: src/com/xpinjection/patterns/proxy/ModernProxyClient.java class ModernProxyClient (line 11) | public class ModernProxyClient { method main (line 12) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/proxy/PermissionChecker.java class PermissionChecker (line 8) | public class PermissionChecker { method setCurrentUser (line 11) | public void setCurrentUser(long userId) { method checkPermission (line 15) | public void checkPermission(Order order) { FILE: src/com/xpinjection/patterns/proxy/canonical/Order.java class Order (line 9) | public class Order { method Order (line 13) | public Order(long userId) { method putItem (line 17) | public void putItem(String code, int count) { method getUserId (line 21) | public long getUserId() { method getItems (line 25) | public Map getItems() { method toString (line 29) | @Override FILE: src/com/xpinjection/patterns/proxy/canonical/OrderService.java type OrderService (line 6) | public interface OrderService { method processOrder (line 7) | void processOrder(Order order); FILE: src/com/xpinjection/patterns/proxy/canonical/PermissionCheckingOrderServiceProxy.java class PermissionCheckingOrderServiceProxy (line 6) | public class PermissionCheckingOrderServiceProxy implements OrderService { method PermissionCheckingOrderServiceProxy (line 10) | public PermissionCheckingOrderServiceProxy(OrderService delegate) { method setCurrentUser (line 14) | public void setCurrentUser(long userId) { method processOrder (line 18) | @Override FILE: src/com/xpinjection/patterns/proxy/canonical/ProxyClient.java class ProxyClient (line 6) | public class ProxyClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/proxy/canonical/RealOrderService.java class RealOrderService (line 6) | public class RealOrderService implements OrderService { method processOrder (line 7) | @Override FILE: src/com/xpinjection/patterns/singleton/ModernServiceRegistry.java class ModernServiceRegistry (line 11) | public class ModernServiceRegistry { method register (line 14) | public void register(NamedService service) { method getService (line 20) | public NamedService getService(String name) { FILE: src/com/xpinjection/patterns/singleton/ModernSingletonClient.java class ModernSingletonClient (line 8) | public class ModernSingletonClient implements NamedService { method ModernSingletonClient (line 11) | public ModernSingletonClient(ModernServiceRegistry registry) { method main (line 15) | public static void main(String[] args) { method start (line 20) | public void start() { method getName (line 24) | @Override FILE: src/com/xpinjection/patterns/singleton/canonical/NamedService.java type NamedService (line 6) | public interface NamedService { method getName (line 7) | String getName(); FILE: src/com/xpinjection/patterns/singleton/canonical/ServiceRegistry.java class ServiceRegistry (line 9) | public final class ServiceRegistry { method getInstance (line 12) | public static ServiceRegistry getInstance() { method ServiceRegistry (line 18) | private ServiceRegistry() {} method register (line 20) | public void register(NamedService service) { method getService (line 26) | public NamedService getService(String name) { FILE: src/com/xpinjection/patterns/singleton/canonical/SingletonClient.java class SingletonClient (line 6) | public class SingletonClient implements NamedService { method main (line 7) | public static void main(String[] args) { method start (line 11) | public void start() { method getName (line 15) | @Override FILE: src/com/xpinjection/patterns/strategy/ModernStrategyClient.java class ModernStrategyClient (line 10) | public class ModernStrategyClient { method ModernStrategyClient (line 13) | public ModernStrategyClient(ToIntFunction calculator) { method main (line 17) | public static void main(String[] args) { method process (line 26) | public void process(Position position) { FILE: src/com/xpinjection/patterns/strategy/TrafficCalculationStrategies.java class TrafficCalculationStrategies (line 8) | public final class TrafficCalculationStrategies { method TrafficCalculationStrategies (line 12) | private TrafficCalculationStrategies() {} method calculateTrafficForPage (line 14) | public static int calculateTrafficForPage(Position position) { method calculateTopTrafficOnly (line 23) | public static int calculateTopTrafficOnly(Position position) { FILE: src/com/xpinjection/patterns/strategy/canonical/PageTrafficCalculator.java class PageTrafficCalculator (line 6) | public class PageTrafficCalculator implements TrafficCalculator { method calculate (line 9) | @Override FILE: src/com/xpinjection/patterns/strategy/canonical/Position.java class Position (line 6) | public class Position { method Position (line 10) | public Position(int rank, int mediaValue) { method getRank (line 15) | public int getRank() { method setRank (line 19) | public void setRank(int rank) { method getMediaValue (line 23) | public int getMediaValue() { method setMediaValue (line 27) | public void setMediaValue(int mediaValue) { method toString (line 31) | @Override FILE: src/com/xpinjection/patterns/strategy/canonical/StrategyClient.java class StrategyClient (line 6) | public class StrategyClient { method StrategyClient (line 9) | public StrategyClient(TrafficCalculator calculator) { method main (line 13) | public static void main(String[] args) { method process (line 19) | public void process(Position position) { FILE: src/com/xpinjection/patterns/strategy/canonical/TopTrafficCalculator.java class TopTrafficCalculator (line 6) | public class TopTrafficCalculator implements TrafficCalculator { method calculate (line 9) | @Override FILE: src/com/xpinjection/patterns/strategy/canonical/TrafficCalculator.java type TrafficCalculator (line 6) | public interface TrafficCalculator { method calculate (line 7) | int calculate(Position position); FILE: src/com/xpinjection/patterns/templatemethod/LoggingUserStorage.java class LoggingUserStorage (line 8) | public class LoggingUserStorage { method store (line 9) | public long store(User user) { FILE: src/com/xpinjection/patterns/templatemethod/ModernTemplateMethodClient.java class ModernTemplateMethodClient (line 8) | public class ModernTemplateMethodClient { method main (line 9) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/templatemethod/ModernUserRestorer.java class ModernUserRestorer (line 11) | public class ModernUserRestorer { method ModernUserRestorer (line 16) | public ModernUserRestorer(ToLongFunction storage) { method restore (line 20) | public User restore(String serialized) { method parse (line 29) | private User parse(StringTokenizer tokenizer) { method validate (line 35) | private void validate(StringTokenizer tokenizer) { FILE: src/com/xpinjection/patterns/templatemethod/canonical/AbstractUserRestorer.java class AbstractUserRestorer (line 8) | public abstract class AbstractUserRestorer { method restore (line 11) | public final User restore(String serialized) { method parse (line 20) | private User parse(StringTokenizer tokenizer) { method validate (line 26) | private void validate(StringTokenizer tokenizer) { method store (line 32) | protected abstract long store(User user); FILE: src/com/xpinjection/patterns/templatemethod/canonical/LoggingUserRestorer.java class LoggingUserRestorer (line 6) | public class LoggingUserRestorer extends AbstractUserRestorer { method store (line 7) | @Override FILE: src/com/xpinjection/patterns/templatemethod/canonical/TemplateMethodClient.java class TemplateMethodClient (line 6) | public class TemplateMethodClient { method main (line 7) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/templatemethod/canonical/User.java class User (line 6) | public class User { method User (line 11) | public User(String name, int age) { method getId (line 16) | public Long getId() { method setId (line 20) | public void setId(Long id) { method getName (line 24) | public String getName() { method setName (line 28) | public void setName(String name) { method getAge (line 32) | public int getAge() { method setAge (line 36) | public void setAge(int age) { method toString (line 40) | @Override FILE: src/com/xpinjection/patterns/visitor/LambdaVisitor.java class LambdaVisitor (line 10) | public class LambdaVisitor implements Function { method on (line 13) | public Acceptor on(Class clazz) { method apply (line 17) | @Override class Acceptor (line 22) | public static class Acceptor { method Acceptor (line 26) | public Acceptor(LambdaVisitor visitor, Class clazz) { method then (line 31) | public LambdaVisitor then(Function f) { FILE: src/com/xpinjection/patterns/visitor/ModernVisitorClient.java class ModernVisitorClient (line 14) | public class ModernVisitorClient { method main (line 25) | public static void main(String[] args) { FILE: src/com/xpinjection/patterns/visitor/canonical/AreaVisitor.java class AreaVisitor (line 6) | public class AreaVisitor implements Visitor { method visit (line 7) | @Override method visit (line 12) | @Override method visit (line 17) | @Override FILE: src/com/xpinjection/patterns/visitor/canonical/Circle.java class Circle (line 6) | public class Circle implements Element { method Circle (line 9) | public Circle(double radius) { method getRadius (line 13) | public double getRadius() { method accept (line 17) | @Override FILE: src/com/xpinjection/patterns/visitor/canonical/Element.java type Element (line 6) | public interface Element { method accept (line 7) | T accept(Visitor visitor); FILE: src/com/xpinjection/patterns/visitor/canonical/PerimeterVisitor.java class PerimeterVisitor (line 6) | public class PerimeterVisitor implements Visitor { method visit (line 7) | @Override method visit (line 12) | @Override method visit (line 17) | @Override FILE: src/com/xpinjection/patterns/visitor/canonical/Rectangle.java class Rectangle (line 6) | public class Rectangle implements Element { method Rectangle (line 10) | public Rectangle(double width, double height) { method getWidth (line 15) | public double getWidth() { method getHeight (line 19) | public double getHeight() { method accept (line 23) | @Override FILE: src/com/xpinjection/patterns/visitor/canonical/Square.java class Square (line 6) | public class Square implements Element { method Square (line 9) | public Square(double side) { method getSide (line 13) | public double getSide() { method accept (line 17) | @Override FILE: src/com/xpinjection/patterns/visitor/canonical/Visitor.java type Visitor (line 6) | public interface Visitor { method visit (line 7) | T visit(Square element); method visit (line 9) | T visit(Circle element); method visit (line 11) | T visit(Rectangle element); FILE: src/com/xpinjection/patterns/visitor/canonical/VisitorClient.java class VisitorClient (line 9) | public class VisitorClient { method main (line 10) | public static void main(String[] args) {