Index: doc/generic_types/generic_types.tex
===================================================================
--- doc/generic_types/generic_types.tex	(revision bb914872aa128dd42eb13d6f6476ef17d4416acc)
+++ doc/generic_types/generic_types.tex	(revision 0751d4d25dc15cf3da8caa8e7469061c2478b283)
@@ -1176,10 +1176,10 @@
 std::forward_list wrapped in std::stack interface
 
-template<typename T> void print(ostream& out, const T& x) { out << x; }
-template<> void print<bool>(ostream& out, const bool& x) { out << (x ? "true" : "false"); }
-template<> void print<char>(ostream& out, const char& x ) { out << "'" << x << "'"; }
-template<typename R, typename S> ostream& operator<< (ostream& out, const pair<R, S>& x) {
+template<typename T> void print(ostream & out, const T & x) { out << x; }
+template<> void print<bool>(ostream & out, const bool & x) { out << (x ? "true" : "false"); }
+template<> void print<char>(ostream & out, const char & x ) { out << "'" << x << "'"; }
+template<typename R, typename S> ostream & operator<< (ostream & out, const pair<R, S>& x) {
 	out << "["; print(out, x.first); out << ", "; print(out, x.second); return out << "]"; }
-template<typename T, typename... Args> void print(ostream& out, const T& arg, const Args&... rest) {
+template<typename T, typename... Args> void print(ostream & out, const T & arg, const Args &... rest) {
 	out << arg;	print(out, rest...); }
 \end{lstlisting}
@@ -1220,17 +1220,17 @@
 forall(otype T) struct stack_node {
 	T value;
-	stack_node(T)* next;
+	stack_node(T) * next;
 };
-forall(otype T) void ?{}(stack(T)* s) { (&s->head){ 0 }; }
-forall(otype T) void ?{}(stack(T)* s, stack(T) t) {
-	stack_node(T)** crnt = &s->head;
-	for ( stack_node(T)* next = t.head; next; next = next->next ) {
-		*crnt = ((stack_node(T)*)malloc()){ next->value }; /***/
-		stack_node(T)* acrnt = *crnt;
+forall(otype T) void ?{}(stack(T) * s) { (&s->head){ 0 }; }
+forall(otype T) void ?{}(stack(T) * s, stack(T) t) {
+	stack_node(T) ** crnt = &s->head;
+	for ( stack_node(T) * next = t.head; next; next = next->next ) {
+		*crnt = ((stack_node(T) *)malloc()){ next->value }; /***/
+		stack_node(T) * acrnt = *crnt;
 		crnt = &acrnt->next;
 	}
 	*crnt = 0;
 }
-forall(otype T) stack(T) ?=?(stack(T)* s, stack(T) t) {
+forall(otype T) stack(T) ?=?(stack(T) * s, stack(T) t) {
 	if ( s->head == t.head ) return *s;
 	clear(s);
@@ -1238,11 +1238,11 @@
 	return *s;
 }
-forall(otype T) void ^?{}(stack(T)* s) { clear(s); }
-forall(otype T) _Bool empty(const stack(T)* s) { return s->head == 0; }
-forall(otype T) void push(stack(T)* s, T value) {
-	s->head = ((stack_node(T)*)malloc()){ value, s->head }; /***/
-}
-forall(otype T) T pop(stack(T)* s) {
-	stack_node(T)* n = s->head;
+forall(otype T) void ^?{}(stack(T) * s) { clear(s); }
+forall(otype T) _Bool empty(const stack(T) * s) { return s->head == 0; }
+forall(otype T) void push(stack(T) * s, T value) {
+	s->head = ((stack_node(T) *)malloc()){ value, s->head }; /***/
+}
+forall(otype T) T pop(stack(T) * s) {
+	stack_node(T) * n = s->head;
 	s->head = n->next;
 	T x = n->value;
@@ -1251,7 +1251,7 @@
 	return x;
 }
-forall(otype T) void clear(stack(T)* s) {
-	for ( stack_node(T)* next = s->head; next; ) {
-		stack_node(T)* crnt = next;
+forall(otype T) void clear(stack(T) * s) {
+	for ( stack_node(T) * next = s->head; next; ) {
+		stack_node(T) * crnt = next;
 		next = crnt->next;
 		delete(crnt);
@@ -1267,11 +1267,11 @@
 	struct node {
 		T value;
-		node* next;
-		node( const T& v, node* n = nullptr ) : value(v), next(n) {}
+		node * next;
+		node( const T & v, node * n = nullptr ) : value(v), next(n) {}
 	};
-	node* head;
+	node * head;
 	void copy(const stack<T>& o) {
-		node** crnt = &head;
-		for ( node* next = o.head;; next; next = next->next ) {
+		node ** crnt = &head;
+		for ( node * next = o.head;; next; next = next->next ) {
 			*crnt = new node{ next->value }; /***/
 			crnt = &(*crnt)->next;
@@ -1282,7 +1282,7 @@
 	stack() : head(nullptr) {}
 	stack(const stack<T>& o) { copy(o); }
-	stack(stack<T>&& o) : head(o.head) { o.head = nullptr; }
+	stack(stack<T> && o) : head(o.head) { o.head = nullptr; }
 	~stack() { clear(); }
-	stack& operator= (const stack<T>& o) {
+	stack & operator= (const stack<T>& o) {
 		if ( this == &o ) return *this;
 		clear();
@@ -1290,5 +1290,5 @@
 		return *this;
 	}
-	stack& operator= (stack<T>&& o) {
+	stack & operator= (stack<T> && o) {
 		if ( this == &o ) return *this;
 		head = o.head;
@@ -1297,7 +1297,7 @@
 	}
 	bool empty() const { return head == nullptr; }
-	void push(const T& value) { head = new node{ value, head };  /***/ }
+	void push(const T & value) { head = new node{ value, head };  /***/ }
 	T pop() {
-		node* n = head;
+		node * n = head;
 		head = n->next;
 		T x = std::move(n->value);
@@ -1306,6 +1306,6 @@
 	}
 	void clear() {
-		for ( node* next = head; next; ) {
-			node* crnt = next;
+		for ( node * next = head; next; ) {
+			node * crnt = next;
 			next = crnt->next;
 			delete crnt;
@@ -1320,11 +1320,11 @@
 \begin{lstlisting}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
 struct stack_node {
-	void* value;
-	struct stack_node* next;
+	void * value;
+	struct stack_node * next;
 };
 struct stack new_stack() { return (struct stack){ NULL }; /***/ }
-void copy_stack(struct stack* s, const struct stack* t, void* (*copy)(const void*)) {
-	struct stack_node** crnt = &s->head;
-	for ( struct stack_node* next = t->head; next; next = next->next ) {
+void copy_stack(struct stack * s, const struct stack * t, void * (*copy)(const void *)) {
+	struct stack_node ** crnt = &s->head;
+	for ( struct stack_node * next = t->head; next; next = next->next ) {
 		*crnt = malloc(sizeof(struct stack_node)); /***/
 		**crnt = (struct stack_node){ copy(next->value) }; /***/
@@ -1333,20 +1333,20 @@
 	*crnt = 0;
 }
-_Bool stack_empty(const struct stack* s) { return s->head == NULL; }
-void push_stack(struct stack* s, void* value) {
-	struct stack_node* n = malloc(sizeof(struct stack_node)); /***/
+_Bool stack_empty(const struct stack * s) { return s->head == NULL; }
+void push_stack(struct stack * s, void * value) {
+	struct stack_node * n = malloc(sizeof(struct stack_node)); /***/
 	*n = (struct stack_node){ value, s->head }; /***/
 	s->head = n;
 }
-void* pop_stack(struct stack* s) {
-	struct stack_node* n = s->head;
+void * pop_stack(struct stack * s) {
+	struct stack_node * n = s->head;
 	s->head = n->next;
-	void* x = n->value;
+	void * x = n->value;
 	free(n);
 	return x;
 }
-void clear_stack(struct stack* s, void (*free_el)(void*)) {
-	for ( struct stack_node* next = s->head; next; ) {
-		struct stack_node* crnt = next;
+void clear_stack(struct stack * s, void (*free_el)(void *)) {
+	for ( struct stack_node * next = s->head; next; ) {
+		struct stack_node * crnt = next;
 		next = crnt->next;
 		free_el(crnt->value);
@@ -1360,8 +1360,8 @@
 \CCV
 \begin{lstlisting}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
-stack::node::node( const object& v, node* n ) : value( v.new_copy() ), next( n ) {}
-void stack::copy(const stack& o) {
-	node** crnt = &head;
-	for ( node* next = o.head; next; next = next->next ) {
+stack::node::node( const object & v, node * n ) : value( v.new_copy() ), next( n ) {}
+void stack::copy(const stack & o) {
+	node ** crnt = &head;
+	for ( node * next = o.head; next; next = next->next ) {
 		*crnt = new node{ *next->value };
 		crnt = &(*crnt)->next;
@@ -1370,8 +1370,8 @@
 }
 stack::stack() : head(nullptr) {}
-stack::stack(const stack& o) { copy(o); }
-stack::stack(stack&& o) : head(o.head) { o.head = nullptr; }
+stack::stack(const stack & o) { copy(o); }
+stack::stack(stack && o) : head(o.head) { o.head = nullptr; }
 stack::~stack() { clear(); }
-stack& stack::operator= (const stack& o) {
+stack & stack::operator= (const stack & o) {
 	if ( this == &o ) return *this;
 	clear();
@@ -1379,5 +1379,5 @@
 	return *this;
 }
-stack& stack::operator= (stack&& o) {
+stack & stack::operator= (stack && o) {
 	if ( this == &o ) return *this;
 	head = o.head;
@@ -1386,7 +1386,7 @@
 }
 bool stack::empty() const { return head == nullptr; }
-void stack::push(const object& value) { head = new node{ value, head }; /***/ }
+void stack::push(const object & value) { head = new node{ value, head }; /***/ }
 ptr<object> stack::pop() {
-	node* n = head;
+	node * n = head;
 	head = n->next;
 	ptr<object> x = std::move(n->value);
@@ -1395,6 +1395,6 @@
 }
 void stack::clear() {
-	for ( node* next = head; next; ) {
-		node* crnt = next;
+	for ( node * next = head; next; ) {
+		node * crnt = next;
 		next = crnt->next;
 		delete crnt;
