def start_of_statement(self):
    if (((self.last_type == 'TK_RESERVED') and (self.flags.last_text in ['var', 'let', 'const']) and (self.token_type == 'TK_WORD')) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'do')) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'return') and (not self.input_wanted_newline)) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'else') and (not ((self.token_type == 'TK_RESERVED') and (self.token_text == 'if')))) or ((self.last_type == 'TK_END_EXPR') and ((self.previous_flags.mode == MODE.ForInitializer) or (self.previous_flags.mode == MODE.Conditional))) or ((self.last_type == 'TK_WORD') and (self.flags.mode == MODE.BlockStatement) and (not self.flags.in_case) and (not ((self.token_text == '--') or (self.token_text == '++'))) and (self.token_type != 'TK_WORD') and (self.token_type != 'TK_RESERVED')) or ((self.flags.mode == MODE.ObjectLiteral) and (self.flags.last_text == ':') and (self.flags.ternary_depth == 0))):
        self.set_mode(MODE.Statement)
        self.indent()
        if ((self.last_type == 'TK_RESERVED') and (self.flags.last_text in ['var', 'let', 'const']) and (self.token_type == 'TK_WORD')):
            self.flags.declaration_statement = True
        if (not self.start_of_object_property()):
            self.allow_wrap_or_preserved_newline(self.token_text, ((self.token_type == 'TK_RESERVED') and (self.token_text in ['do', 'for', 'if', 'while'])))
        return True
    else:
        return False
def start_of_statement(self):
    if (((self.last_type == 'TK_RESERVED') and (self.flags.last_text in ['var', 'let', 'const']) and (self.token_type == 'TK_WORD')) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'do')) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'return') and (not self.input_wanted_newline)) or ((self.last_type == 'TK_RESERVED') and (self.flags.last_text == 'else') and (not ((self.token_type == 'TK_RESERVED') and (self.token_text == 'if')))) or ((self.last_type == 'TK_END_EXPR') and ((self.previous_flags.mode == MODE.ForInitializer) or (self.previous_flags.mode == MODE.Conditional))) or ((self.last_type == 'TK_WORD') and (self.flags.mode == MODE.BlockStatement) and (not self.flags.in_case) and (not ((self.token_text == '--') or (self.token_text == '++'))) and (self.token_type != 'TK_WORD') and (self.token_type != 'TK_RESERVED')) or ((self.flags.mode == MODE.ObjectLiteral) and (self.flags.last_text == ':') and (self.flags.ternary_depth == 0))):
        self.set_mode(MODE.Statement)
        self.indent()
        if ((self.last_type == 'TK_RESERVED') and (self.flags.last_text in ['var', 'let', 'const']) and (self.token_type == 'TK_WORD')):
            self.flags.declaration_statement = True
        if (not self.start_of_object_property()):
            self.allow_wrap_or_preserved_newline(self.token_text, ((self.token_type == 'TK_RESERVED') and (self.token_text in ['do', 'for', 'if', 'while'])))
        return True
    else:
        return False