Index: src/ResolvExpr/CurrentObject.cc
===================================================================
--- src/ResolvExpr/CurrentObject.cc	(revision 9feb34b1fca12748b7d48737024da48e342f5c07)
+++ src/ResolvExpr/CurrentObject.cc	(revision fac05b31ae7c455b2839ef9d67643f124ca1a48e)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jun 13 15:28:32 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul  1 09:16:01 2022
-// Update Count     : 15
+// Last Modified On : Thu Apr  6 16:03:00 2023
+// Update Count     : 16
 //
 
@@ -899,9 +899,33 @@
 
 	class TupleIterator final : public AggregateIterator {
+		MemberList * memberList;
+
+		TupleIterator( const CodeLocation & loc,
+			const ast::TupleType * inst, MemberList * memberList )
+		: AggregateIterator(
+			loc, "TupleIterator", toString("Tuple", inst->size()), inst, *memberList
+		), memberList( memberList ) {}
+
+		// The two layer constructor, this helper and the destructor
+		// are all to pretend that Tuples have members (they do not).
+		static MemberList * newImaginaryMembers( const ast::TupleType * inst ) {
+			auto ret = new MemberList();
+			ret->reserve( inst->types.size() );
+			for ( const ast::Type * type : inst->types ) {
+				ret->emplace_back( new ast::ObjectDecl(
+					CodeLocation(), "", type,
+					new ast::ListInit( CodeLocation(), {}, {}, ast::NoConstruct )
+				) );
+			}
+			return ret;
+		}
+
 	public:
 		TupleIterator( const CodeLocation & loc, const TupleType * inst )
-		: AggregateIterator(
-			loc, "TupleIterator", toString("Tuple", inst->size()), inst, inst->members
-		) {}
+		: TupleIterator( loc, inst, newImaginaryMembers( inst ) ) {}
+
+		virtual ~TupleIterator() {
+			delete memberList;
+		}
 
 		operator bool() const override {
