<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def indicator(self, indicator_type=None, owner=None, **kwargs):
 """ Create the Indicator TI object. Args: owner: indicator_type: **kwargs: Return: """

        if not indicator_type:
            return Indicator(self.tcex, None, owner=owner, **kwargs)

        upper_indicator_type = indicator_type.upper()

        indicator = None
        if upper_indicator_type == 'ADDRESS':
            indicator = Address(self.tcex, kwargs.pop('ip', None), owner=owner, **kwargs)
        elif upper_indicator_type == 'EMAILADDRESS':
            indicator = EmailAddress(self.tcex, kwargs.pop('address', None), owner=owner, **kwargs)
        elif upper_indicator_type == 'FILE':
            indicator = File(self.tcex, **kwargs)
        elif upper_indicator_type == 'HOST':
            indicator = Host(self.tcex, kwargs.pop('hostname', None), owner=owner, **kwargs)
        elif upper_indicator_type == 'URL':
            indicator = URL(self.tcex, kwargs.pop('url', None), owner=owner, **kwargs)
        else:
            try:
                if upper_indicator_type in self._custom_indicator_classes.keys():
                    custom_indicator_details = self._custom_indicator_classes[indicator_type]
                    value_fields = custom_indicator_details.get('value_fields')
                    c = getattr(module, custom_indicator_details.get('branch'))
                    if len(value_fields) == 1:
                        indicator = c(value_fields[0], owner=owner, **kwargs)
                    elif len(value_fields) == 2:
                        indicator = c(value_fields[0], value_fields[1], owner=owner, **kwargs)
                    elif len(value_fields) == 3:
                        indicator = c(value_fields[0], value_fields[2], owner=owner, **kwargs)
            except Exception:
                return None
        return indicator