Create an initializer entry for the entry

        :param raw_name: name unadjusted for python compatibility.
        :param cooked_name: name that may or may not be python compatible

        :param prefix: owner of the element - used when objects passed as arguments

        :return: Initialization statements

def _initializer_for(self, raw_name: str, cooked_name: str, prefix: Optional[str]) -> List[str]:
        """Create an initializer entry for the entry

        :param raw_name: name unadjusted for python compatibility.
        :param cooked_name: name that may or may not be python compatible

        :param prefix: owner of the element - used when objects passed as arguments

        :return: Initialization statements
        """
        mt_val = self._ebnf.mt_value(self._typ)
        rval = []

        if is_valid_python(raw_name):
            if prefix:
                # If a prefix exists, the input has already been processed - no if clause is necessary
                rval.append(f"self.{raw_name} = {prefix}.{raw_name}")
            else:
                cons = raw_name
                rval.append(f"self.{raw_name} = {cons}")
        elif is_valid_python(cooked_name):
            if prefix:
                rval.append(f"setattr(self, '{raw_name}', getattr({prefix}, '{raw_name}')")
            else:
                cons = f"{cooked_name} if {cooked_name} is not {mt_val} else _kwargs.get('{raw_name}', {mt_val})"
                rval.append(f"setattr(self, '{raw_name}', {cons})")
        else:
            getter = f"_kwargs.get('{raw_name}', {mt_val})"
            if prefix:
                rval.append(f"setattr(self, '{raw_name}', getattr({prefix}, '{getter}')")
            else:
                rval.append(f"setattr(self, '{raw_name}', {getter})")

        return rval