# Buggy code
def _post_call_expression(self, expression):
    called = get(expression.called)
    args = [get(a) for a in expression.arguments if a]
    for arg in args:
        arg_ = Argument(arg)
        arg_.set_expression(expression)
        self._result.append(arg_)
    if isinstance(called, Function):
        # internal call

        # If tuple
        if (
            expression.type_call.startswith("tuple(")
            and expression.type_call != "tuple()"
        ):
            val = TupleVariable(self._node)
        else:
            val = TemporaryVariable(self._node)
        internal_call = InternalCall(called, len(args), val, expression.type_call)
        internal_call.set_expression(expression)
        self._result.append(internal_call)
        set_val(expression, val)
    else:
        # If tuple
        if (
            expression.type_call.startswith("tuple(")
            and expression.type_call != "tuple()"
        ):
            val = TupleVariable(self._node)
        else:
            val = TemporaryVariable(self._node)

        message_call = TmpCall(called, len(args), val, expression.type_call)
        message_call.set_expression(expression)
        # Gas/value are only accessible here if the syntax {gas: , value: }
        # Is used over .gas().value()
        if expression.call_gas:
            call_gas = get(expression.call_gas)
            message_call.call_gas = call_gas
        if expression.call_value:
            call_value = get(expression.call_value)
            message_call.call_value = call_value
        self._result.append(message_call)
        set_val(expression, val)


# Traceback (AssertionError)
ERROR:root:Error in .
ERROR:root:Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/slither/__main__.py", line 606, in main_impl
printer_classes)
File "/usr/local/lib/python3.7/site-packages/slither/__main__.py", line 68, in process_all
compilation, args, detector_classes, printer_classes)
File "/usr/local/lib/python3.7/site-packages/slither/__main__.py", line 55, in process_single
**vars(args))
File "/usr/local/lib/python3.7/site-packages/slither/slither.py", line 86, in __init__
self._analyze_contracts()
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/slitherSolc.py", line 254, in _analyze_contracts
self._analyze_third_part(contracts_to_be_analyzed, libraries)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/slitherSolc.py", line 332, in _analyze_third_part
self._analyze_variables_modifiers_functions(contract)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/slitherSolc.py", line 372, in _analyze_variables_modifiers_functions
contract.analyze_content_functions()
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/declarations/contract.py", line 291, in analyze_content_functions
function.analyze_content()
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/declarations/function.py", line 240, in analyze_content
node.analyze_expressions(self)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/cfg/node.py", line 31, in analyze_expressions
expression = parse_expression(self._unparsed_expression, caller_context)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/expressions/expression_parsing.py", line 417, in parse_expression
return parse_call(expression, caller_context)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/expressions/expression_parsing.py", line 271, in parse_call
called = parse_expression(expression['expression'], caller_context)
File "/usr/local/lib/python3.7/site-packages/slither/solc_parsing/expressions/expression_parsing.py", line 422, in parse_expression
assert isinstance(called, MemberAccess)
AssertionError

# Fixed code
def _post_call_expression(self, expression):
    called = get(expression.called)
    args = [get(a) for a in expression.arguments if a]
    for arg in args:
        arg_ = Argument(arg)
        arg_.set_expression(expression)
        self._result.append(arg_)
    if isinstance(called, Function):
        # internal call

        # If tuple
        if (
            expression.type_call.startswith("tuple(")
            and expression.type_call != "tuple()"
        ):
            val = TupleVariable(self._node)
        else:
            val = TemporaryVariable(self._node)
        internal_call = InternalCall(called, len(args), val, expression.type_call)
        internal_call.set_expression(expression)
        self._result.append(internal_call)
        set_val(expression, val)
    else:
        # If tuple
        if (
            expression.type_call.startswith("tuple(")
            and expression.type_call != "tuple()"
        ):
            val = TupleVariable(self._node)
        else:
            val = TemporaryVariable(self._node)

        message_call = TmpCall(called, len(args), val, expression.type_call)
        message_call.set_expression(expression)
        # Gas/value are only accessible here if the syntax {gas: , value: }
        # Is used over .gas().value()
        if expression.call_gas:
            call_gas = get(expression.call_gas)
            message_call.call_gas = call_gas
        if expression.call_value:
            call_value = get(expression.call_value)
            message_call.call_value = call_value
        if expression.call_salt:
            call_salt = get(expression.call_salt)
            message_call.call_salt = call_salt
        self._result.append(message_call)
        set_val(expression, val)