public virtual object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data) {
			Debug.Assert((interfaceImplementation != null));
			Debug.Assert((interfaceImplementation.InterfaceType != null));
			return interfaceImplementation.InterfaceType.AcceptVisitor(this, data);
		}
		public sealed override object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data) {
			this.BeginVisit(interfaceImplementation);
			object result = this.TrackedVisitInterfaceImplementation(interfaceImplementation, data);
			this.EndVisit(interfaceImplementation);
			return result;
		}
		public virtual object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data) {
			Debug.Assert((interfaceImplementation != null));
			Debug.Assert((interfaceImplementation.InterfaceType != null));
			nodeStack.Push(interfaceImplementation.InterfaceType);
			interfaceImplementation.InterfaceType.AcceptVisitor(this, data);
			interfaceImplementation.InterfaceType = ((TypeReference)(nodeStack.Pop()));
			return null;
		}
		public virtual object TrackedVisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data) {
			return base.VisitInterfaceImplementation(interfaceImplementation, data);
		}
		public virtual object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data) {
			throw new global::System.NotImplementedException("InterfaceImplementation");
		}