diff --git a/gdb-port/parser-type-instrumentation-gdb.py b/gdb-port/parser-type-instrumentation-gdb.py
index dbe981d7441d81e98f41f2ad77351d5277aa020f..5d3c7b7e9d76e9470a27f935f586687336da18e2 100644
--- a/gdb-port/parser-type-instrumentation-gdb.py
+++ b/gdb-port/parser-type-instrumentation-gdb.py
@@ -103,7 +103,7 @@ class AttrBoolEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hattrbool_t = gdb.lookup_type("HAttrBool")
 		hattrbool_p_t = hattrbool_t.pointer()
 		p_env = parser_val['env'].cast(hattrbool_p_t).dereference()
@@ -126,7 +126,7 @@ class BindEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		bindenv_t = gdb.lookup_type("BindEnv") # If performance becomes a problem, the type lookups could be factored out into a dict filled out ahead of time
 		bindenv_p_t = bindenv_t.pointer()
 		p_env = parser_val['env'].cast(bindenv_p_t).dereference()
@@ -151,7 +151,7 @@ class BitsEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		bits_env_t = gdb.lookup_type("struct bits_env")
 		bits_env_p_t = bits_env_t.pointer()
 		p_env = parser_val['env'].cast(bits_env_p_t).dereference()
@@ -168,7 +168,7 @@ class ButNotEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		htwoparsers_t = gdb.lookup_type("HTwoParsers")
 		htwoparsers_p_t = htwoparsers_t.pointer()
 		p_env = parser_val['env'].cast(htwoparsers_p_t).dereference()
@@ -191,7 +191,7 @@ class ActionEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hparseaction_t = gdb.lookup_type("HParseAction")
 		hparseaction_p_t = hparseaction_t.pointer()
 		p_env = parser_val['env'].cast(hparseaction_p_t).dereference()
@@ -217,7 +217,7 @@ class AndEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#member_parser_p = gdb.parse_and_eval("(HParser*) parser->env")
 		member_parser_p = parser_val['env'].cast(self.hparser_p_t)
@@ -233,7 +233,7 @@ class ChEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		uint8_t = gdb.lookup_type("uint8_t")
 
 		#self.ch_arg = gdb.parse_and_eval("(uint8_t) parser->env")
@@ -247,7 +247,7 @@ class CharsetEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hcharset_t = gdb.lookup_type("HCharset")
 
 		#self.charset_arg = gdb.parse_and_eval("(HCharset) parser->env")
@@ -261,14 +261,14 @@ class ChoiceEnv(HParserEnv):
 		super().__init__(parser, top_level_parse)
 		self.parser = parser
 		self.member_parsers = []
-		parser_obj = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#frame = gdb.selected_frame()
 		h_sequence_t = gdb.lookup_type("HSequence")
 		h_sequence_p_t = h_sequence_t.pointer()
 
 		# Get parser_obj.env, cast it to HSequence *, then dereference
-		p_env = parser_obj['env'].cast(h_sequence_p_t).dereference()
+		p_env = parser_val['env'].cast(h_sequence_p_t).dereference()
 		# Get length of HSequence
 		num_parsers = p_env['len']
 		# Get the array of parsers in the sequence
@@ -288,7 +288,7 @@ class DifferenceEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		htwoparsers_t = gdb.lookup_type("HTwoParsers")
 		htwoparsers_p_t = htwoparsers_t.pointer()
 		p_env = parser_val['env'].cast(htwoparsers_p_t).dereference()
@@ -322,7 +322,7 @@ class EndiannessEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hparseendianness_t = gdb.lookup_type("HParseEndianness")
 		hparseendianness_p_t = hparseendianness_t.pointer()
 		p_env = parser_val['env'].cast(hparseendianness_p_t).dereference()
@@ -352,7 +352,7 @@ class IgnoreEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#ignored_p = gdb.parse_and_eval("(HParser*) parser->env")
 		ignored_p = parser_val['env'].cast(self.hparser_p_t)
@@ -374,8 +374,9 @@ class IgnoreSeqEnv(HParserEnv):
 		hignoreseq_t = gdb.lookup_type("HIgnoreSeq")
 		hignoreseq_p_t = hignoreseq_t.pointer()
 
-		parser_obj = gdb.parse_and_eval("*parser")
-		p_env = parser_obj['env'].cast(hignoreseq_p_t).dereference()
+		#parser_obj = gdb.parse_and_eval("*parser")
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
+		p_env = parser_val['env'].cast(hignoreseq_p_t).dereference()
 		#ignoreseq_p = gdb.parse_and_eval("(HIgnoreSeq*) parser->env")
 		#seq_len = gdb.parse_and_eval("((HIgnoreSeq*) parser->env)->len")
 		seq_len = p_env['len']
@@ -400,7 +401,7 @@ class IndirectEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hindirectenv_t = gdb.lookup_type("HIndirectEnv")
 		hindirectenv_p_t = hindirectenv_t.pointer()
 		parser_env = parser_val['env'].cast(hindirectenv_p_t).dereference()
@@ -422,7 +423,7 @@ class IntRangeEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hrange_t = gdb.lookup_type("HRange")
 		hrange_p_t = hrange_t.pointer()
 		parser_env = parser_val['env'].cast(hrange_p_t).dereference()
@@ -448,7 +449,7 @@ class LengthValueEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hlenval_t = gdb.lookup_type("HLenVal")
 		hlenval_p_t = hlenval_t.pointer()
 		parser_env = parser_val['env'].cast(hlenval_p_t).dereference()
@@ -474,19 +475,14 @@ class ManyEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hrepeat_t = gdb.lookup_type("HRepeat")
 		hrepeat_p_t = hrepeat_t.pointer()
 		parser_env = parser_val['env'].cast(hrepeat_p_t).dereference()
 
 		#self.count = gdb.parse_and_eval("((HRepeat *) parser->env)->count")
 		self.count = parser_env['count']
-		#self.separator = gdb.parse_and_eval("((HRepeat *) parser->env)->sep")
-		separator_p = parser_env['separator']
-		separator_p_obj = top_level_parse.add_or_get_parser(separator_p)
-		if separator_p_obj.name is None:
-			separator_p_obj.name_parser( self.name_from_vtable(separator_p_obj) )
-		self.separator = separator_p_obj
+		#separator_p = parser_env['sep'] # With h_many(), this will be NULL
 		#self.p = gdb.parse_and_eval("((HRepeat *) parser->env)->p")
 		p_ptr = parser_env['p']
 		p_obj = top_level_parse.add_or_get_parser(p_ptr)
@@ -501,7 +497,7 @@ class NotEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#member_p = gdb.parse_and_eval("(HParser*) parser->env")
 		member_p = parser_val['env'].cast(self_hparser_p_t)
@@ -525,7 +521,7 @@ class OptionalEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#member_p = gdb.parse_and_eval("(HParser*) parser->env")
 		member_p = parser_val['env'].cast(self_hparser_p_t)
@@ -570,7 +566,7 @@ class SeekEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hseek_t = gdb.lookup_type("HSeek")
 		hseek_p_t = hseek_t.pointer()
 		parser_env = parser_val['env'].cast(hseek_p_t).dereference()
@@ -589,7 +585,7 @@ class SkipEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		uintptr_t = gdb.lookup_type("uintptr_t")
 
 		#skip_val = gdb.parse_and_eval("((uintptr_t) parser->env)")
@@ -640,7 +636,7 @@ class TokenEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		htoken_t = gdb.lookup_type("HToken")
 		htoken_p_t = htoken_t.pointer()
 		parser_env = parser_val['env'].cast(htoken_p_t).dereference()
@@ -669,7 +665,7 @@ class GetEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hstoredvalue_t = gdb.lookup_type("HStoredValue")
 		hstoredvalue_p_t = hstoredvalue_t.pointer()
 		parser_env = parser_val['env'].cast(hstoredvalue_p_t).dereference()
@@ -691,7 +687,7 @@ class PutEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		hstoredvalue_t = gdb.lookup_type("HStoredValue")
 		hstoredvalue_p_t = hstoredvalue_t.pointer()
 		parser_env = parser_val['env'].cast(hstoredvalue_p_t).dereference()
@@ -713,7 +709,7 @@ class WhitespaceEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 
 		#member_parser_p = gdb.parse_and_eval("(HParser *) parse->env")
 		member_p = parser_val['env'].cast(self_hparser_p_t)
@@ -729,7 +725,7 @@ class XorEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 		super().__init__(parser, top_level_parse)
-		parser_val = gdb.Value(parser).cast(self.hparser_p_t).dereference()
+		parser_val = gdb.Value(parser.address).cast(self.hparser_p_t).dereference()
 		htwoparsers_t = gdb.lookup_type("HTwoParsers")
 		htwoparsers_p_t = htwoparsers_t.pointer()
 		parser_env = parser_val['env'].cast(htwoparsers_p_t).dereference()