'Return the new column on the newline.'

def _GetNewlineColumn(self):

    current = self.next_token
    previous = current.previous_token
    top_of_stack = self.stack[(-1)]
    if ((current.spaces_required_before > 2) or self.line.disable):
        return current.spaces_required_before
    if current.OpensScope():
        return (top_of_stack.indent if self.paren_level else self.first_indent)
    if current.ClosesScope():
        if (previous.OpensScope() or (previous.is_comment and (previous.previous_token is not None) and previous.previous_token.OpensScope())):
            return max(0, (top_of_stack.indent - style.Get('CONTINUATION_INDENT_WIDTH')))
        return top_of_stack.closing_scope_indent
    if (previous and previous.is_string and current.is_string and (format_token.Subtype.DICTIONARY_VALUE in current.subtypes)):
        return previous.column
    if style.Get('INDENT_DICTIONARY_VALUE'):
        if (previous and ((previous.value == ':') or previous.is_pseudo_paren)):
            if (format_token.Subtype.DICTIONARY_VALUE in current.subtypes):
                return top_of_stack.indent
    if ((self.line.first.value in _COMPOUND_STMTS) and ((not style.Get('DEDENT_CLOSING_BRACKETS')) or style.Get('SPLIT_BEFORE_FIRST_ARGUMENT'))):
        token_indent = (len(self.line.first.whitespace_prefix.split('\n')[(-1)]) + style.Get('INDENT_WIDTH'))
        if (token_indent == top_of_stack.indent):
            return (top_of_stack.indent + style.Get('CONTINUATION_INDENT_WIDTH'))
    return top_of_stack.indent
