package ast;

import symbols.value.Value;

public class Member extends Lvalue {

    private Lvalue _lvalue;
    private String _identifier;
    private Call _call;
    private Expression _expression;

    private boolean _isLValue;

    public Member(Lvalue lvalue, String identifier, Call call, Expression expression) {
        this._lvalue = lvalue;
        this._identifier = identifier;
        this._call = call;
        this._expression = expression;
        _isLValue = false;
    }

    public Lvalue getLvalue() {
        return this._lvalue;
    }

    public void setLvalue(Lvalue lvalue) {
        this._lvalue = lvalue;
    }

    public String getIdentifier() {
        return this._identifier;
    }

    public void setIdentifier(String identifier) {
        this._identifier = identifier;
    }

    public Call getCall() {
        return this._call;
    }

    public void setCall(Call call) {
        this._call = call;
    }

    public Expression getExpression() {
        return this._expression;
    }

    public void setExpression(Expression expression) {
        this._expression = expression;
    }

    public boolean isLValue() {
        return _isLValue;
    }

    public void setIsLValue() {
        this._isLValue = true;
    }

    @Override
    public Value accept(ASTVisitor visitor) throws ASTVisitorException {
        return visitor.visit(this);
    }
}

@@ -114,22 +114,42 @@
 private 
-String
+final IdentifierExpression
  _identi
@@ -280,22 +280,36 @@
 lvalue, 
-String
+IdentifierExpression
  identif
@@ -349,37 +349,32 @@
 sion) %7B%0A        
-this.
 _lvalue = lvalue
@@ -375,37 +375,32 @@
 lvalue;%0A        
-this.
 _identifier = id
@@ -409,37 +409,32 @@
 tifier;%0A        
-this.
 _call = call;%0A  
@@ -431,37 +431,32 @@
 = call;%0A        
-this.
 _expression = ex
@@ -546,21 +546,16 @@
  return 
-this.
 _lvalue;
@@ -613,21 +613,16 @@
         
-this.
 _lvalue 
@@ -689,21 +689,150 @@
  return 
-this.
+_identifier != null ? _identifier.getIdentifier() : null;%0A    %7D%0A%0A    public IdentifierExpression getIdentifierExpr() %7B%0A        return 
 _identif
@@ -902,23 +902,32 @@
         
-this._i
+_identifier.setI
 dentifie
@@ -919,35 +919,33 @@
 er.setIdentifier
- = 
+(
 identifier;%0A    
@@ -930,32 +930,33 @@
 ifier(identifier
+)
 ;%0A    %7D%0A%0A    pub
@@ -991,21 +991,16 @@
  return 
-this.
 _call;%0A 
@@ -1050,21 +1050,16 @@
         
-this.
 _call = 
@@ -1126,21 +1126,16 @@
  return 
-this.
 _express
@@ -1209,21 +1209,16 @@
         
-this.
 _express
@@ -1339,24 +1339,24 @@
 lue() %7B%0A
+
         
 this._is
@@ -1351,13 +1351,8 @@
     
-this.
 _isL

Change identifier from String to IndentifierExpression] Add the methods to manage the changes.