private static ElementNode trad48(TreeNode tree){
  // tree symbol is <element>

    int r = tree.getRule() ;
    switch (r)
    {
       case 0 : // <element> --> <element prefixe> <element suffixe> 
               { 
                 ElementPrefixe x0 = trad50(tree.getChild(0)) ;
                 LinkedList<ElementSuffixe> x1 = trad49(tree.getChild(1)) ;
                 if(x1 != null)
                 {
	                 ListIterator<ElementSuffixe> itr = x1.listIterator();
	                 while(itr.hasNext())
	                 {
	                	ElementSuffixe es = itr.next();
	                	switch(es.getAction())
	                	{
	                		case ElementSuffixe.ACCESS:
	                			x0 = new ElementPrefixe(x0.getElementObject(),es.getString());
	                			break;
	                		case ElementSuffixe.ASSIGNMENT:
	                			AssignNode an;
	                			if(x0.getElement() == null)
	                				an = new AssignNode(x0.getIdentifier(), es.getElement());
	                			else
	                				an = new AssignNode(x0.getIdentifier(),x0.getElement(), es.getElement());
	                			
	                			x0 = new ElementPrefixe(an);
	                			break;
	                		case ElementSuffixe.MESSAGESENDING:
	                			x0=new ElementPrefixe(new SendNode(x0.getElementObject(),es.getElement()));
	                			break;
	                		case ElementSuffixe.OPERATION:
	                			MessageObject m = new MessageObject(es.getString(),es.getElement());
	                			x0 = new ElementPrefixe(new SendNode(x0.getElementObject(),m));
	                			break;
	                	}
	                 }
                 }
                 return x0.getElementObject() ; // a modifier
               }
       default : return null ;
    }
  }