Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ libcfa/src/collections/string.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -214,39 +214,45 @@
 // Input-Output
 
-ofstream & ?|?( ofstream & out, const string & s ) {
-	return out | (*s.inner); // print internal string_res
-}
-
-void ?|?( ofstream & out, const string & s ) {
-	(ofstream &)(out | (*s.inner)); ends( out );
-}
-
-ofstream & ?|?( ofstream & os, _Ostream_Manip(string) f ) {
-	size_t l = len( f.val );
-	char cstr[l + 1];									// room for null terminator
-	for ( i; l ) cstr[i] = f.val[i];					// copy string
-	cstr[l] = '\0';										// terminate
-	_Ostream_Manip(const char *) cf @= { cstr, f.wd, f.pc, f.base, {f.all} };
-	return os | cf | nonl;
-} // ?|?
-
-void ?|?( ofstream & os, _Ostream_Manip(string) f ) {
-	(ofstream &)(os | f); ends( os );
-}
-
-ifstream & ?|?( ifstream & in, string & s ) {
-	return in | (*s.inner); // read to internal string_res
-}
-
-ifstream & ?|?( ifstream & is, _Istream_Squoted f ) {
-	_Istream_Rquoted f2 = { { f.sstr.s.inner, (_Istream_str_base)f.sstr } };
-	return is | f2;
-} // ?|?
-
-ifstream & ?|?( ifstream & is, _Istream_Sstr f ) {
-// 	_Istream_Rstr f2 = {f.sstr.s.inner, (_Istream_str_base)f.sstr};
- 	_Istream_Rstr f2 = {f.s.inner, (_Istream_str_base)f};
-	return is | f2;
-} // ?|?
+forall( ostype & | basic_ostream( ostype ) ) {
+
+	ostype & ?|?( ostype & out, string s ) {
+		return out | (*s.inner); // print internal string_res
+	}
+
+	void ?|?( ostype & out, string s ) {
+		(ostype &)(out | (*s.inner)); ends( out );
+	}
+
+	ostype & ?|?( ostype & os, _Ostream_Manip(string) f ) {
+		size_t l = len( f.val );
+		char cstr[l + 1];									// room for null terminator
+		for ( i; l ) cstr[i] = f.val[i];					// copy string
+		cstr[l] = '\0';										// terminate
+		_Ostream_Manip(const char *) cf @= { cstr, f.wd, f.pc, f.base, {f.all} };
+		return os | cf | nonl;
+	} // ?|?
+
+	void ?|?( ostype & os, _Ostream_Manip(string) f ) {
+		(ostype &)(os | f); ends( os );
+	}
+}
+
+forall( istype & | basic_istream( istype ) ) {
+
+	istype & ?|?( istype & in, string & s ) {
+		return in | (*s.inner); // read to internal string_res
+	}
+
+	istype & ?|?( istype & is, _Istream_Squoted f ) {
+		_Istream_Rquoted f2 = { { f.sstr.s.inner, (_Istream_str_base)f.sstr } };
+		return is | f2;
+	} // ?|?
+
+	istype & ?|?( istype & is, _Istream_Sstr f ) {
+	// 	_Istream_Rstr f2 = {f.sstr.s.inner, (_Istream_str_base)f.sstr};
+		_Istream_Rstr f2 = {f.s.inner, (_Istream_str_base)f};
+		return is | f2;
+	} // ?|?
+}
 
 ////////////////////////////////////////////////////////
Index: libcfa/src/collections/string.hfa
===================================================================
--- libcfa/src/collections/string.hfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ libcfa/src/collections/string.hfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -16,5 +16,5 @@
 #pragma once
 
-#include <fstream.hfa>
+#include <iostream.hfa>
 #include <string_res.hfa>
 
@@ -80,7 +80,10 @@
 
 // IO Operator
-ofstream & ?|?( ofstream & out, const string & s );
-void ?|?( ofstream & out, const string & s );
-ifstream & ?|?( ifstream & in, string & s );
+forall( ostype & | basic_ostream( ostype ) ) {
+	ostype & ?|?( ostype & out, string s );
+	void ?|?( ostype & out, string s );
+}
+forall( istype & | basic_istream( istype ) )
+istype & ?|?( istype & in, string & s );
 
 static inline {
@@ -95,6 +98,8 @@
 	_Ostream_Manip(string) & nobase( _Ostream_Manip(string) & fmt ) { fmt.flags.nobsdp = true; return fmt; }
 } // distribution
-ofstream & ?|?( ofstream & os, _Ostream_Manip(string) f );
-void ?|?( ofstream & os, _Ostream_Manip(string) );
+forall( ostype & | basic_ostream( ostype ) ) {
+	ostype & ?|?( ostype & os, _Ostream_Manip(string) f );
+	void ?|?( ostype & os, _Ostream_Manip(string) );
+}
 
 struct _Istream_Swidth {
@@ -143,7 +148,9 @@
 	_Istream_Sstr & ignore( _Istream_Sstr & f ) { f.flags.ignore = true; return (_Istream_Sstr &)f; }
 } // distribution
-ifstream & ?|?( ifstream & is, _Istream_Squoted f );
-ifstream & ?|?( ifstream & is, _Istream_Sstr f );
-static inline ifstream & ?|?( ifstream & is, _Istream_Swidth f ) { return is | *(_Istream_Sstr *)&f; }
+forall( istype & | basic_istream( istype ) ) {
+	istype & ?|?( istype & is, _Istream_Squoted f );
+	istype & ?|?( istype & is, _Istream_Sstr f );
+	static inline istype & ?|?( istype & is, _Istream_Swidth f ) { return is | *(_Istream_Sstr *)&f; }
+}
 
 // Concatenation
Index: libcfa/src/collections/string_res.cfa
===================================================================
--- libcfa/src/collections/string_res.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ libcfa/src/collections/string_res.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -193,15 +193,18 @@
 
 // Output operator
-ofstream & ?|?(ofstream & out, const string_res & s) {
+forall( ostype & | basic_ostream( ostype ) )
+ostype & ?|?( ostype & out, const string_res & s ) {
 	// CFA string is NOT null terminated, so print exactly lnth characters in a minimum width of 0.
 	return out | wd( 0, s.Handle.lnth, s.Handle.s ) | nonl;
 }
 
-void ?|?(ofstream & out, const string_res & s) {
-	(ofstream &)(out | s); ends( out );
+forall( ostype & | basic_ostream( ostype ) )
+void ?|?( ostype & out, const string_res & s ) {
+	(ostype &)(out | s); ends( out );
 }
 
 // Input operator
-ifstream & ?|?(ifstream & in, string_res & s) {
+forall( istype & | basic_istream( istype ) )
+istype & ?|?( istype & in, string_res & s ) {
 	// Reading into a temp before assigning to s is near zero overhead in typical cases because of sharing.
 	// If s is a substring of something larger, simple assignment takes care of that case correctly.
@@ -245,5 +248,6 @@
 }
 
-ifstream & ?|?( ifstream & is, _Istream_Rquoted f ) with( f.rstr ) {
+forall( istype & | basic_istream( istype ) )
+istype & ?|?( istype & is, _Istream_Rquoted f ) with( f.rstr ) {
 	if ( eof( is ) ) throwResume ExceptionInst( end_of_file );
 	int args;
@@ -270,5 +274,6 @@
 }
 
-ifstream & ?|?( ifstream & is, _Istream_Rstr f ) {
+forall( istype & | basic_istream( istype ) )
+istype & ?|?( istype & is, _Istream_Rstr f ) {
  	// .---------------,
  	// | | | | |...|0|0| null terminator and guard if missing
Index: libcfa/src/collections/string_res.hfa
===================================================================
--- libcfa/src/collections/string_res.hfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ libcfa/src/collections/string_res.hfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -16,5 +16,5 @@
 #pragma once
 
-#include <fstream.hfa>
+#include <iostream.hfa>
 #include <string.h>    // e.g. strlen
 
@@ -120,7 +120,10 @@
 
 // IO Operator
-ofstream & ?|?(ofstream & out, const string_res & s);
-void ?|?(ofstream & out, const string_res & s);
-ifstream & ?|?(ifstream & in, string_res & s);
+forall( ostype & | basic_ostream( ostype ) ) {
+	ostype & ?|?(ostype & out, const string_res & s);
+	void ?|?(ostype & out, const string_res & s);
+}
+forall( istype & | basic_istream( istype ) )
+istype & ?|?(istype & in, string_res & s);
 
 struct _Istream_Rwidth {
@@ -167,7 +170,9 @@
 	_Istream_Rstr & ignore( _Istream_Rstr & f ) { f.flags.ignore = true; return (_Istream_Rstr &)f; }
 } // distribution
-ifstream & ?|?( ifstream & is, _Istream_Rquoted f );
-ifstream & ?|?( ifstream & is, _Istream_Rstr f );
-static inline ifstream & ?|?( ifstream & is, _Istream_Rwidth f ) { return is | *(_Istream_Rstr *)&f; }
+forall( istype & | basic_istream( istype ) ) {
+	istype & ?|?( istype & is, _Istream_Rquoted f );
+	istype & ?|?( istype & is, _Istream_Rstr f );
+	static inline istype & ?|?( istype & is, _Istream_Rwidth f ) { return is | *(_Istream_Rstr *)&f; }
+}
 
 // Concatenation
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/Makefile.am	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -288,4 +288,8 @@
 	-cp ${test} ${abspath ${@}}
 
+collections/string-operator-ERR09 : collections/string-operator.cfa
+	${CFACOMPILE_SYNTAX} -DTRY_MR09
+	-cp ${test} ${abspath ${@}}
+
 collections/string-operator-ERR15 : collections/string-operator.cfa
 	${CFACOMPILE_SYNTAX} -DTRY_MR15
Index: tests/collections/.expect/string-operator-ERR09.txt
===================================================================
--- tests/collections/.expect/string-operator-ERR09.txt	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
+++ tests/collections/.expect/string-operator-ERR09.txt	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -0,0 +1,3185 @@
+collections/string-operator.cfa:277:1 error: Cannot choose between 4 alternatives for expression
+Applying untyped:
+  Name: ?|?
+...to:
+  Name: sout
+  Applying untyped:
+    Name: ?+?
+  ...to:
+    Constant Expression ('a': char)
+    ... with resolved type:
+      char
+    Constant Expression ('b': char)
+    ... with resolved type:
+      char
+
+ Alternatives are:
+Cost ( 0, 0, 1, 0, 0, 1, -24, 0 ): Application of
+      Variable Expression: ?|?: forall
+        instance of type ostype (not function type)
+        with assertions
+        Variable Expression: sepPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+        Variable Expression: sepGetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: getNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: nlOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nlOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nosep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepGet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: sepGetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: ends: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: fmt: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+          and a variable number of other arguments
+        ... returning
+          signed int
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+        function
+      ... with parameters
+        reference to instance of type ostype (not function type)
+        char
+      ... returning
+        reference to instance of type ostype (not function type)
+
+      ... with resolved type:
+        pointer to forall
+          instance of type [unbound] (not function type)
+          with assertions
+          Variable Expression: sepPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning nothing
+
+          Variable Expression: sepGetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: getNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: nlOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nlOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nosep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepGet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: sepGetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: ends: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: fmt: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+              and a variable number of other arguments
+            ... returning
+              signed int
+
+          function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          char
+        ... returning
+          reference to instance of type [unbound] (not function type)
+
+      ... to arguments
+      Variable Expression: sout: extern reference to instance of struct ofstream with body
+      ... with resolved type:
+        reference to instance of struct ofstream with body
+      Application of
+        Variable Expression: ?+?: function
+        ... with parameters
+          char
+          char
+        ... returning
+          char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            char
+            char
+          ... returning
+            char
+
+        ... to arguments
+        Constant Expression ('a': char)
+        ... with resolved type:
+          char
+        Constant Expression ('b': char)
+        ... with resolved type:
+          char
+
+      ... with resolved type:
+        char
+    with inferred parameters 0:
+      sepPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning nothing
+
+      sepGetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      getNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      nlOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nlOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nosep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepGet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      sepGetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      ends: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      fmt: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+        and a variable number of other arguments
+      ... returning
+        signed int
+
+
+    ... with resolved type:
+      reference to instance of type [unbound] (not function type)
+  (types:
+    reference to instance of type [unbound] (not function type)
+  )
+  Environment:([unbound]ostype) -> instance of struct ofstream with body (no widening)
+
+
+Cost ( 0, 0, 1, 0, 0, 1, -24, 0 ): Application of
+      Variable Expression: ?|?: forall
+        instance of type ostype (not function type)
+        with assertions
+        Variable Expression: sepPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+        Variable Expression: sepGetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: getNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: nlOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nlOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nosep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepGet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: sepGetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: ends: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: fmt: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+          and a variable number of other arguments
+        ... returning
+          signed int
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+        function
+      ... with parameters
+        reference to instance of type ostype (not function type)
+        char
+      ... returning nothing
+
+      ... with resolved type:
+        pointer to forall
+          instance of type [unbound] (not function type)
+          with assertions
+          Variable Expression: sepPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning nothing
+
+          Variable Expression: sepGetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: getNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: nlOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nlOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nosep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepGet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: sepGetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: ends: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: fmt: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+              and a variable number of other arguments
+            ... returning
+              signed int
+
+          function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          char
+        ... returning nothing
+
+      ... to arguments
+      Variable Expression: sout: extern reference to instance of struct ofstream with body
+      ... with resolved type:
+        reference to instance of struct ofstream with body
+      Application of
+        Variable Expression: ?+?: function
+        ... with parameters
+          char
+          char
+        ... returning
+          char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            char
+            char
+          ... returning
+            char
+
+        ... to arguments
+        Constant Expression ('a': char)
+        ... with resolved type:
+          char
+        Constant Expression ('b': char)
+        ... with resolved type:
+          char
+
+      ... with resolved type:
+        char
+    with inferred parameters 0:
+      sepPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning nothing
+
+      sepGetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      getNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      nlOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nlOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nosep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepGet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      sepGetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      ends: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      fmt: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+        and a variable number of other arguments
+      ... returning
+        signed int
+
+
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:([unbound]ostype) -> instance of struct ofstream with body (no widening)
+
+
+Cost ( 0, 0, 1, 0, 0, 1, -24, 0 ): Application of
+      Variable Expression: ?|?: forall
+        instance of type ostype (not function type)
+        with assertions
+        Variable Expression: sepPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+        Variable Expression: sepGetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: getNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: nlOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nlOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nosep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepGet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: sepGetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: ends: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: fmt: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+          and a variable number of other arguments
+        ... returning
+          signed int
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+        function
+      ... with parameters
+        reference to instance of type ostype (not function type)
+        instance of struct string with body
+      ... returning
+        reference to instance of type ostype (not function type)
+
+      ... with resolved type:
+        pointer to forall
+          instance of type [unbound] (not function type)
+          with assertions
+          Variable Expression: sepPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning nothing
+
+          Variable Expression: sepGetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: getNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: nlOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nlOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nosep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepGet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: sepGetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: ends: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: fmt: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+              and a variable number of other arguments
+            ... returning
+              signed int
+
+          function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          instance of struct string with body
+        ... returning
+          reference to instance of type [unbound] (not function type)
+
+      ... to arguments
+      Variable Expression: sout: extern reference to instance of struct ofstream with body
+      ... with resolved type:
+        reference to instance of struct ofstream with body
+      Application of
+        Variable Expression: ?+?: function
+        ... with parameters
+          char
+          char
+        ... returning
+          instance of struct string with body
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            char
+            char
+          ... returning
+            instance of struct string with body
+
+        ... to arguments
+        Constant Expression ('a': char)
+        ... with resolved type:
+          char
+        Constant Expression ('b': char)
+        ... with resolved type:
+          char
+
+      ... with resolved type:
+        instance of struct string with body
+    with inferred parameters 0:
+      sepPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning nothing
+
+      sepGetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      getNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      nlOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nlOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nosep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepGet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      sepGetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      ends: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      fmt: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+        and a variable number of other arguments
+      ... returning
+        signed int
+
+
+    ... with resolved type:
+      reference to instance of type [unbound] (not function type)
+  (types:
+    reference to instance of type [unbound] (not function type)
+  )
+  Environment:([unbound]ostype) -> instance of struct ofstream with body (no widening)
+
+
+Cost ( 0, 0, 1, 0, 0, 1, -24, 0 ): Application of
+      Variable Expression: ?|?: forall
+        instance of type ostype (not function type)
+        with assertions
+        Variable Expression: sepPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepReset$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+        Variable Expression: sepGetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetCur$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: getNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setNL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setANL$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: getPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: setPrt$: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          _Bool
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+        Variable Expression: nlOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nlOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: nosep: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: sepOn: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepOff: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          _Bool
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+        Variable Expression: sepGet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSet: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: sepGetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning
+          pointer to const char
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+        Variable Expression: sepSetTuple: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+        Variable Expression: ends: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+        ... returning nothing
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+        Variable Expression: fmt: pointer to function
+        ... with parameters
+          reference to instance of type ostype (not function type)
+          pointer to const char
+          and a variable number of other arguments
+        ... returning
+          signed int
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+        function
+      ... with parameters
+        reference to instance of type ostype (not function type)
+        instance of struct string with body
+      ... returning nothing
+
+      ... with resolved type:
+        pointer to forall
+          instance of type [unbound] (not function type)
+          with assertions
+          Variable Expression: sepPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepReset$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning nothing
+
+          Variable Expression: sepGetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetCur$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: getNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setNL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setANL$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: getPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: setPrt$: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            _Bool
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              _Bool
+            ... returning
+              _Bool
+
+          Variable Expression: nlOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nlOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: nosep: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: sepOn: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepOff: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            _Bool
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              _Bool
+
+          Variable Expression: sepGet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSet: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: sepGetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning
+            pointer to const char
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning
+              pointer to const char
+
+          Variable Expression: sepSetTuple: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+            ... returning nothing
+
+          Variable Expression: ends: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+          ... returning nothing
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+            ... returning nothing
+
+          Variable Expression: fmt: pointer to function
+          ... with parameters
+            reference to instance of type ostype (not function type)
+            pointer to const char
+            and a variable number of other arguments
+          ... returning
+            signed int
+
+          ... with resolved type:
+            pointer to function
+            ... with parameters
+              reference to instance of type [unbound] (not function type)
+              pointer to const char
+              and a variable number of other arguments
+            ... returning
+              signed int
+
+          function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          instance of struct string with body
+        ... returning nothing
+
+      ... to arguments
+      Variable Expression: sout: extern reference to instance of struct ofstream with body
+      ... with resolved type:
+        reference to instance of struct ofstream with body
+      Application of
+        Variable Expression: ?+?: function
+        ... with parameters
+          char
+          char
+        ... returning
+          instance of struct string with body
+
+        ... with resolved type:
+          pointer to function
+          ... with parameters
+            char
+            char
+          ... returning
+            instance of struct string with body
+
+        ... to arguments
+        Constant Expression ('a': char)
+        ... with resolved type:
+          char
+        Constant Expression ('b': char)
+        ... with resolved type:
+          char
+
+      ... with resolved type:
+        instance of struct string with body
+    with inferred parameters 0:
+      sepPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepReset$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning nothing
+
+      sepGetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetCur$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      getNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setNL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setANL$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      getPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      setPrt$: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        _Bool
+      ... returning
+        _Bool
+
+      nlOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nlOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      nosep: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      sepOn: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepOff: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        _Bool
+
+      sepGet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSet: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      sepGetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning
+        pointer to const char
+
+      sepSetTuple: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+      ... returning nothing
+
+      ends: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+      ... returning nothing
+
+      fmt: function
+      ... with parameters
+        reference to instance of struct ofstream with body
+        pointer to const char
+        and a variable number of other arguments
+      ... returning
+        signed int
+
+
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:([unbound]ostype) -> instance of struct ofstream with body (no widening)
+
+
+
Index: tests/collections/.expect/string-operator.txt
===================================================================
--- tests/collections/.expect/string-operator.txt	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/.expect/string-operator.txt	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -65,5 +65,5 @@
 
 ------------- Bare (sout-direct)
-ab
+(skip)
 ab
 ab
@@ -85,12 +85,12 @@
 axb
 
-aaa
+291
 bbb
-ÃÃÃ
+585
 cdcdcd
 
 291
 bbb
-ababab
+585
 cdcdcd
 
Index: tests/collections/string-api-coverage.cfa
===================================================================
--- tests/collections/string-api-coverage.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-api-coverage.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -1,4 +1,5 @@
-#include <collections/string.hfa>
+#include <string.hfa>
 #include <string_sharectx.hfa>
+#include <fstream.hfa>
 
 
Index: tests/collections/string-ctx-manage.cfa
===================================================================
--- tests/collections/string-ctx-manage.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-ctx-manage.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -2,4 +2,5 @@
 #include <string_sharectx.hfa>
 #include <string_res.hfa>
+#include <fstream.hfa>
 
 // In these tests, shared heaps are never remotely full and string sizes are tiny.
Index: tests/collections/string-gc.cfa
===================================================================
--- tests/collections/string-gc.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-gc.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -1,3 +1,4 @@
 #include <string_res.hfa>
+#include <fstream.hfa>
 
 size_t bytesRemaining() {
Index: tests/collections/string-istream-manip.cfa
===================================================================
--- tests/collections/string-istream-manip.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-istream-manip.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -1,6 +1,6 @@
 
 #include <fstream.hfa>
-#include <collections/string.hfa>
-#include <collections/string_res.hfa>
+#include <string.hfa>
+#include <string_res.hfa>
 #include <stdio.h>
 
Index: tests/collections/string-istream.cfa
===================================================================
--- tests/collections/string-istream.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-istream.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -1,5 +1,5 @@
-#include <iostream.hfa>
-#include <collections/string.hfa>
-#include <collections/string_res.hfa>
+#include <fstream.hfa>
+#include <string.hfa>
+#include <string_res.hfa>
 
 
Index: tests/collections/string-operator.cfa
===================================================================
--- tests/collections/string-operator.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-operator.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -9,4 +9,5 @@
 
 // These MR points do reject in the current revision, so they have satellite "-ERR" cases:
+// MR09
 // MR15
 
@@ -20,5 +21,4 @@
 #define TRY_MR07
 #define TRY_MR08
-#define TRY_MR09
 #define TRY_MR10
 #define TRY_MR11
@@ -275,5 +275,5 @@
         s = "x";
 
-MR09(   sout | 'a' + 'b';      )    // ab
+MR09(   sout | 'a' + 'b';      )    // (ambiguous)
         sout | 'a' + "b";           // ab
         sout | "a" + 'b';           // ab
@@ -299,7 +299,7 @@
         sout | nl;                  //
 
-MR11(   sout | 'a' * 3;          )  // aaa
+MR11(   sout | 'a' * 3;          )  // 291
         sout | "b" * 3;             // bbb
-MR12(   sout | ('a' + 'b') * 3;  )  // ÃÃÃ
+MR12(   sout | ('a' + 'b') * 3;  )  // 585
         sout | ('c' + "d") * 3;     // cdcdcd
         sout | nl;                  //
@@ -307,5 +307,5 @@
 MR13(   sout | 3 * 'a';          )  // 291
         sout | 3 * "b";             // bbb
-MR14(   sout | 3 * ('a' + 'b');  )  // ababab
+MR14(   sout | 3 * ('a' + 'b');  )  // 585
         sout | 3 * ('c' + "d");     // cdcdcd
         sout | nl;                  //
Index: tests/collections/string-overwrite.cfa
===================================================================
--- tests/collections/string-overwrite.cfa	(revision d1757672712417b16598464c053288dcfff22d7e)
+++ tests/collections/string-overwrite.cfa	(revision 3f631d63dc8a3d8d5bd5e664c971d336878cb507)
@@ -1,4 +1,5 @@
-#include <collections/string.hfa>
+#include <string.hfa>
 #include <string_sharectx.hfa>
+#include <fstream.hfa>
 
 /*
