decl :: HParser Declaration
decl = addRange (
    do fb <- lexCaseFeedback
       return $ \r -> Declaration_FunctionBindings r
          [FunctionBinding_Feedback r fb $ FunctionBinding_Hole r 0]
    <|>
    do
        lexHOLE
        jb <- optionMaybe normalRhs
        case jb  of
           Just b ->  return $ \r -> Declaration_PatternBinding r (Pattern_Hole r (-1)) b
           Nothing -> return $ \r -> Declaration_Hole r (-1)
    <|>
    do 
        nr <- try (withRange var)
        decl1 nr
    <|>
    do
        pr <- try (withRange pat10)
        decl2 pr
    <|>
    -- do
    --     lexHOLE
    --     return $ \r -> Declaration_Hole r (-1)
    do
        l <- funlhs
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r l b]
    ) <?> Texts.parserDeclaration
decl :: HParser Declaration
decl = addRange (
    do fb <- lexCaseFeedback
       return $ \r -> Declaration_FunctionBindings r
          [FunctionBinding_Feedback r fb $ FunctionBinding_Hole r 0]
    <|>
    do
        lexHOLE
        jb <- optionMaybe normalRhs
        case jb  of
           Just b ->  return $ \r -> Declaration_PatternBinding r (Pattern_Hole r (-1)) b
           Nothing -> return $ \r -> Declaration_Hole r (-1)
    <|>
    do 
        nr <- try (withRange var)
        decl1 nr
    <|>
    do
        pr <- try (withRange pat10)
        decl2 pr
    <|>
    -- do
    --     lexHOLE
    --     return $ \r -> Declaration_Hole r (-1)
    do
        l <- funlhs
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r l b]
    ) <?> Texts.parserDeclaration
decl = addRange (
    do fb <- lexCaseFeedback
       return $ \r -> Declaration_FunctionBindings r
          [FunctionBinding_Feedback r fb $ FunctionBinding_Hole r 0]
    <|>
    do
        lexHOLE
        jb <- optionMaybe normalRhs
        case jb  of
           Just b ->  return $ \r -> Declaration_PatternBinding r (Pattern_Hole r (-1)) b
           Nothing -> return $ \r -> Declaration_Hole r (-1)
    <|>
    do 
        nr <- try (withRange var)
        decl1 nr
    <|>
    do
        pr <- try (withRange pat10)
        decl2 pr
    <|>
    -- do
    --     lexHOLE
    --     return $ \r -> Declaration_Hole r (-1)
    do
        l <- funlhs
        b <- normalRhs
        return $ \r -> Declaration_FunctionBindings r
            [FunctionBinding_FunctionBinding r l b]
    ) <?> Texts.parserDeclaration