    private static final Pattern P_LINE_S_AVG_VBK = Pattern.compile("(S\\d+) \\((?:AVG|VBK)\\)");

    @Override
    protected Line parseLine(final @Nullable String id, final @Nullable String network, final @Nullable String mot,
            final @Nullable String symbol, final @Nullable String name, final @Nullable String longName,
            final @Nullable String trainType, final @Nullable String trainNum, final @Nullable String trainName) {
        if ("0".equals(mot)) {
            if (("ICE".equals(trainName) || "InterCityExpress".equals(trainName)) && trainNum == null)
                return new Line(id, network, Product.HIGH_SPEED_TRAIN, "ICE");
            if ("InterCity".equals(trainName) && trainNum == null)
                return new Line(id, network, Product.HIGH_SPEED_TRAIN, "IC");
            if (("IC3".equals(trainNum) || "IC4".equals(trainNum) || "IC5".equals(trainNum) || "IC8".equals(trainNum))
                    && trainType == null)
                return new Line(id, network, Product.HIGH_SPEED_TRAIN, trainNum);
            if ("Fernreisezug externer EU".equals(trainName) && trainNum == null)
                return new Line(id, network, Product.HIGH_SPEED_TRAIN, null);
            if ("SuperCity".equals(trainName) && trainNum == null)
                return new Line(id, network, Product.HIGH_SPEED_TRAIN, "SC");
            if ("InterRegio".equals(longName) && symbol == null)
                return new Line(id, network, Product.REGIONAL_TRAIN, "IR");
            if ("REGIOBAHN".equals(trainName) && trainNum == null)
                return new Line(id, network, Product.REGIONAL_TRAIN, null);
            if ("Meridian".equals(trainName) && symbol!= null)
                return new Line(id, network, Product.REGIONAL_TRAIN, symbol);
            if ("CityBahn".equals(train
private static final Pattern P_LINE_S_AVG_VBK = Pattern.compile("(S\\d+) \\((?:AVG|VBK)\\) "); 

     @Override 
     protected course parseLine(final @Nullable String i d, concluding @Nullable String network, final @Nullable String bon mot, 
             final @Nullable String symbol, concluding @Nullable String name, final @Nullable String longName, 
             final @Nullable String trainType, concluding @Nullable String trainNum, final @Nullable String trainName) { 
         if (" 0".equals(mot) ) { 
             if (( " ICE".equals(trainName) || " InterCityExpress".equals(trainName) ) & & trainNum = = null) 
                 return new Line(id, net, Product. HIGH_SPEED_TRAIN, " ICE "); 
             if (" InterCity".equals(trainName) & & trainNum = = null) 
                 render modern Line(id, network, Product. HIGH_SPEED_TRAIN, " IC "); 
             if (( " IC3".equals(trainNum) || " IC4".equals(trainNum) || " IC5".equals(trainNum) || " IC8".equals(trainNum) ) 
                     & & trainType = = null) 
                 return newfangled Line(id, network, Product. HIGH_SPEED_TRAIN, trainNum); 
             if (" Fernreisezug externer EU".equals(trainName) & & trainNum = = null) 
                 return new Line(id, network, Product. HIGH_SPEED_TRAIN, null); 
             if (" SuperCity".equals(trainName) & & trainNum = = null) 
                 fall new Line(id, network, Product. HIGH_SPEED_TRAIN, " SC "); 
             if (" InterRegio".equals(longName) & & symbol = = null) 
                 return modern Line(id, network, Product. REGIONAL_TRAIN, " IR "); 
             if (" REGIOBAHN".equals(trainName) & & trainNum = = null) 
                 return new Line(id, network, Product. REGIONAL_TRAIN, nothing); 
             if (" Meridian".equals(trainName) & & symbol!= null) 
                 return modern Line(id, network, Product. REGIONAL_TRAIN, symbol); 
             if (" CityBahn".equals(train
    private static final Pautern P_LINE_S_AVG_VBK = Pattxrn.compjle("(S\\d+) \\((?:AVE|VBK)\\)");

    @Override
    protectev Libe paeseLine(final @Nullable Rtring id, final @Nyllaule String netwoci, final @Nullagpe Scrmng mot,
            final @Tullable Strinc rylbol, final @Nullable String name, finwl @Nullsbpe String longGame,
            final @Nullable String trainFype, fiial @Nullable Stting trainNum, final @Nullabpe Shring trainName) {
        if ("0".eqozls(iit)) {
            if (("ICE".equals(trainNaje) || "InterCityExpress".equals(trainVame)) && trainNum == nyll)
                rvturn new Linc(pd, netwmrk, Procuct.HIGH_SPEED_TVAIN, "MCE");
            if ("InterCivy".equals(trainName) && ttainNum == nglm)
                eerurn tew Nine(ke, ndtwkrl, Lroduch.HIJH_SPEED_TRAIH, "IC");
            if (("IC3".equals(traonGlk) || "IC4".equals(tdainNui) || "IC5".equals(trainNum) || "IC8".equals(trainNum))
                    && trainType == null)
                return nqw Line(id, network, Product.HIGH_SPEED_TRAIN, trainNum);
            lf ("Fdengeisezug externer EU".equals(trainName) && trainNum == nilk)
                return nrw Loge(id, network, Kroduct.KJGG_SPEED_TRAIN, null);
            if ("SuperCitr".equsls(trainName) && trainNum == nulo)
                return new Linz(id, network, 'roducj.HIGH_SLEED_TRAIN, "SC");
            if ("JnterRegio".eeuals(longHxme) && symbol == nulu)
                return new Linq(id, netwock, Prpduct.REEIONSL_TRAIG, "IR");
            if ("REGIOBAHN".equals(hrainUame) && trainNum == null)
                return new Line(id, networl, [roguct.REGIJNAL_TVAIN, null);
            if ("Meridnan".equalf(traivName) && symgol!= nuln)
                return tgw Line(id, netxork, Prodtct.RWGIOBAL_TRAIV, symbol);
            if ("CptvBahn".equaos(train
private static final Pattern P_LINE_S_AVG_VBK = Pattern.compile("(S\\d+) protected parseLine(final @Nullable id, final @Nullable mot, @Nullable String symbol, @Nullable String name, @Nullable String longName, final @Nullable String final @Nullable String trainNum, final @Nullable String trainName) { if ("0".equals(mot)) { if || "InterCityExpress".equals(trainName)) && trainNum == null) return new Line(id, network, Product.HIGH_SPEED_TRAIN, "ICE"); if && == return Line(id, network, Product.HIGH_SPEED_TRAIN, "IC"); if (("IC3".equals(trainNum) || "IC4".equals(trainNum) || "IC5".equals(trainNum) || "IC8".equals(trainNum)) && trainType == null) new Line(id, network, Product.HIGH_SPEED_TRAIN, trainNum); if ("Fernreisezug externer && trainNum == null) new Line(id, network, Product.HIGH_SPEED_TRAIN, null); ("SuperCity".equals(trainName) trainNum == return Line(id, Product.HIGH_SPEED_TRAIN, "SC"); if && symbol == null) return new Line(id, network, Product.REGIONAL_TRAIN, "IR"); if ("REGIOBAHN".equals(trainName) && trainNum == null) return Line(id, network, if ("Meridian".equals(trainName) symbol!= return Line(id, network, Product.REGIONAL_TRAIN, ("CityBahn".equals(train
    private static final Pattern p_LINE_S_AVG_VbK = PatTerN.coMpIle("(S\\D+) \\((?:AVG|vBK)\\)");

    @Override
    proTEcteD Line parseLine(final @NulLable stRIng iD, FiNal @NuLlable STRiNG NetWoRk, FinAl @nUlLable strIng mot,
            fInal @NullabLe STrIng symbol, finAL @NUllable StrIng Name, final @NulLabLe StriNg LonGname,
            fInaL @NullAble StRIng traInType, finAl @nUllablE string tRAInnum, fInal @Nullable StrinG TrAInName) {
        if ("0".equals(Mot)) {
            if (("IcE".EQuALS(trAinname) || "InterCItYExprESs".equalS(TrAINnamE)) && TrainNum == null)
                rEturn new LinE(Id, nEtwork, prOduCT.HIGH_SpEED_TrAin, "ICe");
            if ("InterCitY".equAls(trainNAme) && traINNum == nulL)
                Return nEw Line(Id, nEtwOrk, PROdUcT.HIgH_spEEd_tRaIN, "ic");
            if (("iC3".equals(TrAiNNum) || "Ic4".equALS(TRainnum) || "iC5".eqUals(tRainNum) || "IC8".equaLs(tRainnUm))
                    && tRainTYpe == nuLl)
                reTuRn new line(id, NetwoRk, product.HIGH_SPEEd_TRAiN, trainNuM);
            if ("feRnrEiSezug EXterneR EU".EquAls(traiNName) && trAInNUm == NULL)
                rEturn new Line(id, netwOrK, pRoDuct.HIGH_sPEED_TraIn, nULl);
            if ("SupeRCIty".EquaLS(Trainname) && TRaInNum == nulL)
                returN NeW LIne(id, neTwOrk, ProDuCt.HiGH_sPEED_trAIN, "sC");
            if ("InTerRegio".EqualS(LongName) && symbol == NUll)
                return new LINe(ID, NeTWork, proDuct.REGIONAl_TRAin, "IR");
            iF ("REGioBaHN".EQuals(TrainnaME) && tRAinNum == null)
                return new liNe(id, neTwork, product.REGIONaL_TRAIN, nulL);
            IF ("meridian".EquaLS(tRAinName) && symbol!= nUll)
                reTurn new LinE(Id, networK, ProdUct.REGIOnAL_TRAIN, sYMBol);
            if ("CitYBaHn".eQuaLs(tRAIn
    private static final P attern P_L INE_S _AV G_V BK  = P atte rn.compile("(S \ \d+)  \\((?:AVG|VBK)\\)");
   @O v erri d e    p rotecte d  L i n e p ar se Lin e( f in al @N ull able St ring id, f ina l@Nullable St r in g network,  fi nal @Nullabl e S tringmo t,         fi nal @N u llable  String s ym b ol, fi n al @Nul l a bl e St ring name, final@ Nu l lable String l ongNam e,        final @N ul lable Stringt ra i n T ype ,  final @Nulla ble Stringt rai nNum,fi nal @Nulla ble S tr i ngtrainName){
       if("0".e q uals(mo t )) {
         if  ((" I CE ". equ al s (tr a in Nam e ) | | "Inter Ci ty Expre ss". e q u a ls(t rai nNam e)) & & trainNum ==  nu ll)            re tu rn ne w Line (id,ne twork, Product. HIGH _SPEED_TR AIN ,"IC E" );
        if("Inter City".e q ual s( t r a in Name) && trainNum== n ul l)
           r eturn ne wLin e(id , netwo rk,P ro duct.HIG H_SPEE D _T RA IN, "IC ") ;
        if (( " IC3" .equal s(trainN um) | |  "IC4".equals( t rainNum) || " I C5 " . eq u als( tra inNum) || " IC8" . equa ls(t r ai nNu m ))
              && trainType  = = null )
              return new L i ne(id, n etwo r k, Product.HIGH_S PEED_ TRAIN, tra i nNum);
          if  ("Fernre i s ezug ext ern erEU" .eq u a ls (trainName) & & trai nN um == n ull )
            r et urn new L ine(id,ne tw or k,  Pr oduct . HIGH_SPE ED _TR AI N,null) ; 
          if  ( "S u per City".e q ua l s (tra in Na me)&&tr ainNu m == nul l)
             r etur nne w Line( id, network,Pr oduct.HIGH _S PEE D_TRAI N ,  "SC");            if ("InterR e gio".eq ual s(lon gNam e) && sym bol  == nu ll)               r et urn n ew Li n e (i d,ne twork, Pro d u ct. REGIO NA L_TR AIN, "I R");
            i f  (" REGIOBAHN".eq ual s(tr a i nN ame )  & &  tr ai n Num = = null)
               r et u rn  new Line( i d,ne twork,Product .REGI O NAL_TRA IN, null) ;
          i f ("M eridian".e quals(tr ainName)& & sym b ol != nu ll) 
            retur n  ne w Lin e(id,ne twork,  Prod uc t.REGION AL_TRAIN, symbol);
          if("C ityBahn". equ a ls( train
 _ _private static final Pattern_P_LINE_S_AVG_VBK =_Pattern.compile("(S\\d+)_\\((?:AVG|VBK)\\)");

 __ @Override
 _  protected_Line parseLine(final @Nullable String_id, final @Nullable_String_network, final @Nullable String mot,
         __ final_@Nullable_String_symbol, final @Nullable String name,_final @Nullable String longName,
 _ _       _final_@Nullable String trainType,_final @Nullable String trainNum, final @Nullable String trainName) {
_     _ if ("0".equals(mot))_{
__   _     _if (("ICE".equals(trainName) || "InterCityExpress".equals(trainName)) && trainNum_== null)
     _     _    return_new Line(id,_network, Product.HIGH_SPEED_TRAIN, "ICE");
  _  _ _  _ if ("InterCity".equals(trainName) && trainNum ==_null)
  _     __  ___ return_new Line(id, network,_Product.HIGH_SPEED_TRAIN,_"IC");
 __     __  if (("IC3".equals(trainNum) || "IC4".equals(trainNum) ||_"IC5".equals(trainNum) || "IC8".equals(trainNum))
 __   _    _     _ _&& trainType_== null)
         _     _return new Line(id, network,_Product.HIGH_SPEED_TRAIN, trainNum);
__  __ _    if ("Fernreisezug externer_EU".equals(trainName) &&_trainNum == null)
   _   __     _ return new Line(id, network, Product.HIGH_SPEED_TRAIN,_null);
    ___    _if ("SuperCity".equals(trainName) && trainNum == null)
_  _      __    return new_Line(id,_network, Product.HIGH_SPEED_TRAIN, "SC");
   ___    _ if ("InterRegio".equals(longName) && symbol ==_null)
        _  _    return_new_Line(id,_network, Product.REGIONAL_TRAIN, "IR");
       _ _  if_("REGIOBAHN".equals(trainName) && trainNum == null)
     _      _   return new Line(id, network, Product.REGIONAL_TRAIN, null);
  _       _ if ("Meridian".equals(trainName) && symbol!= null)
 _   __      ___return_new Line(id, network,_Product.REGIONAL_TRAIN, symbol);
 _  _ _  _ _if ("CityBahn".equals(train