:param linenum: The line number of the frame.
        :type linenum: int
        :param indent: The indentation level of the frame.
        :type indent: int
        :param path:
        :type path: Path
        :param field_name:
        :type field_name: str
        :param field_value:
        :type field_value: str

def append_child_field(self, linenum, indent, field_name, field_value):
        """
        :param linenum: The line number of the frame.
        :type linenum: int
        :param indent: The indentation level of the frame.
        :type indent: int
        :param path:
        :type path: Path
        :param field_name:
        :type field_name: str
        :param field_value:
        :type field_value: str
        """
        frame = self.current_frame()
        assert isinstance(frame,RootFrame) or isinstance(frame,ContainerFrame) and frame.indent < indent
        if frame.container.contains(ROOT_PATH, field_name):
            raise KeyError("field {0} exists in container at path {1}".format(field_name, frame.path))
        frame.container.put_field(ROOT_PATH, field_name, field_value)
        frame = FieldFrame(linenum, indent, frame.path, frame.container, field_name, field_value)
        self.push_frame(frame)