public class Set<Element> { protected readonly Node[] sub; public Set () { } public struct Locator { public delegate void Replace (Node node); public Locator (Replace put) { } } public class Node : Set<Element> { } protected Locator locate (Element x) { Set<Element> parent = this; return new Locator (new Locator.Replace (delegate (Node n) { parent.sub[0] = n; })); } } static class SetTest { public static void Main () { } }