def create_fake_array_input(cls, dependency, readable_name, index=None):
        """Create fake Weld inputs to be used in future WeldObjects.

        Parameters
        ----------
        dependency : str
            The Weld input name of the actual intermediate result, obtained from cache_intermediate_result.
        readable_name : str
            User-friendly string that will be used to generate a unique placeholder name. This placeholder
            will be seen in the WeldObject.context.
        index : tuple, optional
            If passed, it means the intermediate result dependency is in fact a struct/tuple, so this fake input
            shall be able to select the required array from the tuple. Note that it can work through multiple levels,
            i.e. passing (1, 0) would essentially select 2 from (1, (2, 3)).

        Returns
        -------
        FakeWeldInput
            An instance representing the fake Weld input to be used when generating the WeldObjects relying on it.

        """
        assert dependency in Cache._intermediate_results
        assert isinstance(readable_name, str)

        name = Cache._generate_placeholder(readable_name)

        if index is None:
            fake_weld_input = _FakeArray(dependency, name)
        else:
            assert isinstance(index, tuple)
            fake_weld_input = _FakeStructMember(dependency, index, name)

        return fake_weld_input
Create fake Weld inputs to be used in future WeldObjects.

        Parameters
        ----------
        dependency : str
            The Weld input name of the actual intermediate result, obtained from cache_intermediate_result.
        readable_name : str
            User-friendly string that will be used to generate a unique placeholder name. This placeholder
            will be seen in the WeldObject.context.
        index : tuple, optional
            If passed, it means the intermediate result dependency is in fact a struct/tuple, so this fake input
            shall be able to select the required array from the tuple. Note that it can work through multiple levels,
            i.e. passing (1, 0) would essentially select 2 from (1, (2, 3)).

        Returns
        -------
        FakeWeldInput
            An instance representing the fake Weld input to be used when generating the WeldObjects relying on it.