Okay, so it's both of the methods.  And the access is for [-1], which would also fail if child_history existed and was empty ([ ] is the default value).  And that "if self.child_history" returns false when child_history is [ ].  The latest_X methods have the check in them.   If it were to be done by the record_latest_X, then we'd need to figure what the return value is -- an exception?  But your woes presumably arose from throwing an exception out of this, so I'm fine with this, as long as it's commented.