'Sets up internal state so that new nodes are added to a subtree of the
current node. The conn_type specifies how the sub-tree is joined to the
existing children.'

def start_subtree(self, conn_type):

    if (len(self.children) == 1):
        self.connector = conn_type
    elif (self.connector != conn_type):
        self.children = [self._new_instance(self.children, self.connector, self.negated)]
        self.connector = conn_type
        self.negated = False
    self.subtree_parents.append(self.__class__(self.children, self.connector, self.negated))
    self.connector = self.default
    self.negated = False
    self.children = []
