public static Tile Push() { return(new Tile(typeof(PushNode), new [] { makeTile <RegisterNode> () }, (regNode, node) => { var root = node as PushNode; var reg = root.Value as RegisterNode; return new[] { InstructionFactory.Push(reg) }; } )); }