001    package com.thaiopensource.relaxng.impl;
002    
003    import com.thaiopensource.xml.util.Name;
004    
005    class StartTagOpenRecoverDerivFunction extends StartTagOpenDerivFunction {
006      StartTagOpenRecoverDerivFunction(Name name, ValidatorPatternBuilder builder) {
007        super(name, builder);
008      }
009    
010      public Object caseGroup(GroupPattern p) {
011        Pattern tem = (Pattern)super.caseGroup(p);
012        if (p.getOperand1().isNullable())
013          return tem;
014        return getPatternBuilder().makeChoice(tem, memoApply(p.getOperand2()));
015     }
016    
017      PatternMemo apply(PatternMemo memo) {
018        return memo.startTagOpenRecoverDeriv(this);
019      }
020    }