Solidity expression compiler

Expression& getLeftHandSide() const { return *m_leftHandSide; }
Expression& getRightHandSide() const { return *m_rightHandSide; }
ASTPointer<Expression> m_leftHandSide;
ASTPointer<Expression> m_rightHandSide;

Expression& getLeftExpression() const { return *m_left; }
Expression& getRightExpression() const { return *m_right; }
ASTPointer<Expression> m_left;
ASTPointer<Expression> m_right;

This is why I asked. The two implementations are the same. How is a leftHandSide different than a leftExpression?