Hi Nicolas, 
      
      
      1) the asMooseGroup is just a standard moose method used to
        convert a collection into a MooseGroup object. 
      I will probably move it in the lift:from: method. 
      No filtering option is currently supported. 
      What you get right now are objects of type
        FAMIXLiftedAssociation representing inferred associations. 
      These objects have a reference to the source and target high
        level entities they connect and to the low level concrete
        associations which they abstract.
      One possible extension (as you suggested) could be adding the
        following method: 
      
      
      lift: aSelector from: aMooseGroup  filter: aBlock 
      
      
      and some shortcuts like: 
      
      
      lift: aSelector from: aMooseGroup  sourceEntities   -->
         aBlock := [:each | each from]
      lift: aSelector from: aMooseGroup  targetEntities   -->
         aBlock := [:each | each to]
      
      
      2) is point one answering your question ?  
      
    
    Yes.
      
      
      3) I'm not sure i understand your question. 
      Scoping is implicitly defined by the entities contained in
        the MooseGroup on which the query is executed and the MooseGroup
        specified in the from parameter. 
      This means that if you execute: 
      
      
      highLevelGroup := MooseModel root first allNamespaces.
      lowLevelGroup := MooseModel root first allMethods.
      (highLevelGroup lift: #incomingInvocations
        from:lowLevelGroup) asMooseGroup.
      
      
      you will get a set of associations connecting namespaces
        (high level scope) and these associations will abstract concrete
        association existing between entities of type method (low level
        scope).
      
      
    
    Currently you always return relationships, so scoping might be less
    important (still ...)