code: function duckTypeClause(previousExpr, detection) {
  
        var fieldListStr = detection[FIELD_LIST_INDEX];
  
        if (!fieldListStr) 
           return previousExpr; // don't wrap at all, return given expr as-is      
  
        var hasAllrequiredFields = partialComplete(
                                      hasAllProperties, 
                                      arrayAsList(fieldListStr.split(/\W+/))
                                   ),
                                   
            isMatch =  compose2( 
                          hasAllrequiredFields, 
                          headNode
                       );
  
        return lazyIntersection(isMatch, previousExpr);
     }
docs: Create an evaluator function for a a duck-typed node, expressed like:
  
  {spin, taste, colour}
  .particle{spin, taste, colour}
  *{spin, taste, colour}