We have been using FF library for Separation of Concerns framework and it is working great. We need to add subquery to it, but running into issues. Example I am following is from this article: https://quirkyapex.com/2016/08/18/fflib-selector-layer/ 

    public class OpportunityLineItemsSelector extends fflib_SObjectSelector {
     
       public Schema.SObjectType getSObjectType(){
          return OpportunityLineItem.sObjectType;
       }
     
       public override List<Schema.SObjectField> getSObjectFieldList(){
          return new List<Schema.SObjectField> {
             OpportunityLineItem.Id,
             OpportunityLineItem.Quantity,
             OpportunityLineItem.SalesPrice
          };
       }
     
    }
    
    public class OpportunitiesSelector extends fflib_SObjectSelector {
     
       public Schema.SObjectType getSObjectType(){
          return Opportunity.sObjectType;
       }
     
       public override List<Schema.SObjectField> getSObjectFieldList(){
          return new List<Schema.SObjectField> {
             Opportunity.Id,
             Opportunity.StageName
          };
       }
     
       public List<Opportunity> selectByIdWithLineItems(Set<Id> recordIds){
          fflib_QueryFactory query = newQueryFactory();
          query.setCondition('Id IN :recordIds');
          query.addQueryFactorySubselect( 
             new OpportunityLineItemsSelector().newQueryFactory() 
          );
          return (List<Opportunity>) Database.query( query.toSOQL() );
       }
     
    }

I get compile error:
> Method does not exist or incorrect signature: void addQueryFactorySubselect(fflib_QueryFactory) from the type fflib_QueryFactory at line 17 column 13	

Below method does exist in "fflib_SObjectSelector" class

    global fflib_QueryFactory addQueryFactorySubselect(fflib_QueryFactory parentQueryFactory)
    {
        return addQueryFactorySubselect(parentQueryFactory, true);
    }

What am I missing here?