def holderify(self, item):
    if isinstance(item, list):
        return [self.holderify(x) for x in item]
    if isinstance(item, dict):
        return {k: self.holderify(v) for (k, v) in item.items()}
    if isinstance(item, build.CustomTarget):
        return CustomTargetHolder(item, self)
    elif (isinstance(item, (int, str, bool, Disabler)) or (item is None)):
        return item
    elif isinstance(item, build.Executable):
        return ExecutableHolder(item, self)
    elif isinstance(item, build.GeneratedList):
        return GeneratedListHolder(item)
    elif isinstance(item, build.RunTarget):
        raise RuntimeError('This is not a pipe.')
    elif isinstance(item, build.RunScript):
        raise RuntimeError('Do not do this.')
    elif isinstance(item, build.Data):
        return DataHolder(item)
    elif isinstance(item, dependencies.Dependency):
        return DependencyHolder(item, self.subproject)
    elif isinstance(item, dependencies.ExternalProgram):
        return ExternalProgramHolder(item, self.subproject)
    elif hasattr(item, 'held_object'):
        return item
    else:
        raise InterpreterException('Module returned a value of unknown type.')
def holderify(self, item):
    if isinstance(item, list):
        return [self.holderify(x) for x in item]
    if isinstance(item, dict):
        return {k: self.holderify(v) for (k, v) in item.items()}
    if isinstance(item, build.CustomTarget):
        return CustomTargetHolder(item, self)
    elif (isinstance(item, (int, str, bool, Disabler)) or (item is None)):
        return item
    elif isinstance(item, build.Executable):
        return ExecutableHolder(item, self)
    elif isinstance(item, build.GeneratedList):
        return GeneratedListHolder(item)
    elif isinstance(item, build.RunTarget):
        raise RuntimeError('This is not a pipe.')
    elif isinstance(item, build.RunScript):
        raise RuntimeError('Do not do this.')
    elif isinstance(item, build.Data):
        return DataHolder(item)
    elif isinstance(item, dependencies.Dependency):
        return DependencyHolder(item, self.subproject)
    elif isinstance(item, dependencies.ExternalProgram):
        return ExternalProgramHolder(item, self.subproject)
    elif hasattr(item, 'held_object'):
        return item
    else:
        raise InterpreterException('Module returned a value of unknown type.')