# Path: pbxproj/PBXKey.py
# class PBXKey(str):
#     def __new__(cls, value, parent):
#         obj = str.__new__(cls, value)
#         obj._parent = parent
#         return obj
# 
#     def __repr__(self):
#         comment = self._get_comment()
#         if comment is not None:
#             comment = f' /* {comment} */'
#         else:
#             comment = ''
# 
#         return f'{self.__str__()}{comment}'
# 
#     def get_parent(self):
#         return self._parent
# 
#     def _get_comment(self):
#         return self.get_parent()._resolve_comment(self)


import re
import uuid
import copy
from pbxproj.PBXKey import PBXKey
            value = self._format(self[key], indent_depth, entry_separator, object_start,
                                 indent_increment)

            # use key decorators, could simplify the generation of the comments.
            ret += f'{indent_depth}{indent_increment}{PBXGenericObject._escape(key)} = {value};{entry_separator}'

        ret += f"{indent_depth}{'}'}"
        return ret

    def _print_list(self, obj, indentation_depth='', entry_separator='\n', object_start='\n',
                    indentation_increment='\t'):
        ret = f'({object_start}'
        for item in obj:
            value = self._format(item, indentation_depth, entry_separator, object_start, indentation_increment)

            ret += f'{indentation_depth}{indentation_increment}{value},{entry_separator}'
        ret += f'{indentation_depth})'
        return ret

    def _format(self, value, indentation_depth='', entry_separator='\n', object_start='\n', indentation_increment='\t'):
        if hasattr(value, '_print_object'):
            value = value._print_object(indentation_depth + indentation_increment,
                                        entry_separator,
                                        object_start,
                                        indentation_increment)
        elif isinstance(value, list):
            value = self._print_list(value, indentation_depth + indentation_increment,
                                     entry_separator,
                                     object_start,
                                     indentation_increment)

# Path: pbxproj/PBXKey.py
# class PBXKey(str):
#     def __new__(cls, value, parent):
#         obj = str.__new__(cls, value)
#         obj._parent = parent
#         return obj
# 
#     def __repr__(self):
#         comment = self._get_comment()
#         if comment is not None:
#             comment = f' /* {comment} */'
#         else:
#             comment = ''
# 
#         return f'{self.__str__()}{comment}'
# 
#     def get_parent(self):
#         return self._parent
# 
#     def _get_comment(self):
#         return self.get_parent()._resolve_comment(self)


# Path: pbxproj/PBXGenericObject.py
import re
import uuid
import copy
from pbxproj.PBXKey import PBXKey

            value = self._format(self[key], indent_depth, entry_separator, object_start,
                                 indent_increment)

            # use key decorators, could simplify the generation of the comments.
            ret += f'{indent_depth}{indent_increment}{PBXGenericObject._escape(key)} = {value};{entry_separator}'

        ret += f"{indent_depth}{'}'}"
        return ret

    def _print_list(self, obj, indentation_depth='', entry_separator='\n', object_start='\n',
                    indentation_increment='\t'):
        ret = f'({object_start}'
        for item in obj:
            value = self._format(item, indentation_depth, entry_separator, object_start, indentation_increment)

            ret += f'{indentation_depth}{indentation_increment}{value},{entry_separator}'
        ret += f'{indentation_depth})'
        return ret

    def _format(self, value, indentation_depth='', entry_separator='\n', object_start='\n', indentation_increment='\t'):
        if hasattr(value, '_print_object'):
            value = value._print_object(indentation_depth + indentation_increment,
                                        entry_separator,
                                        object_start,
                                        indentation_increment)
        elif isinstance(value, list):
            value = self._print_list(value, indentation_depth + indentation_increment,
                                     entry_separator,
                                     object_start,
                                     indentation_increment)

        elif isinstance(value, PBXKey):