/**
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 */
package net.sourceforge.pmd.dcd.graph;

/**
 * Visitor for nodes in a UsageGraph.
 */
public interface NodeVisitor {

	Object visit(UsageGraph usageGraph, Object data);

	Object visit(ClassNode classNode, Object data);

	Object visitFields(ClassNode classNode, Object data);

	Object visit(FieldNode fieldNode, Object data);

	Object visitConstructors(ClassNode classNode, Object data);

	Object visit(ConstructorNode constructorNode, Object data);

	Object visitMethods(ClassNode classNode, Object data);

	Object visit(MethodNode methodNode, Object data);

	Object visitUses(MemberNode memberNode, Object data);

	Object visitUse(MemberNode use, Object data);

	Object visitUsers(MemberNode memberNode, Object data);

	Object visitUser(MemberNode user, Object data);
}
