// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/DoubleLiteral.java
// public class DoubleLiteral extends NumericLiteral<BigDecimal> {
//     public DoubleLiteral(final String value) {
//         super(new BigDecimal(value));
//     }
// 
//     @Override
//     protected String describe() {
//         return "DoubleLiteral(" + getValue() + ")";
//     }
// }


import com.evolvedbinary.xpath.parser.ast.DoubleLiteral;
import org.jetbrains.annotations.Nullable;
        return "DoubleLiteral(" + characteristic + ".?)e??";
    }

    @Override
    public PartialDoubleLiteral1 complete(@Nullable final String mantissa) {
        return new PartialDoubleLiteral1(mantissa);
    }

    public class PartialDoubleLiteral1 extends AbstractPartialASTNode<PartialDoubleLiteral1.PartialDoubleLiteral2, String> {
        @Nullable final String mantissa;

        public PartialDoubleLiteral1(final String mantissa) {
            this.mantissa = mantissa;
        }

        @Override
        protected String describe() {
            final String m = (mantissa == null ? ".0" : "." + mantissa);
            return "DoubleLiteral(" + characteristic + m + ")e??";
        }

        @Override
        public PartialDoubleLiteral1.PartialDoubleLiteral2 complete(final String exponentSign) {
            if(exponentSign == null || exponentSign.isEmpty()) {
                return new PartialDoubleLiteral2('+');
            } else {
                return new PartialDoubleLiteral2(exponentSign.charAt(0));
            }
        }

// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/DoubleLiteral.java
// public class DoubleLiteral extends NumericLiteral<BigDecimal> {
//     public DoubleLiteral(final String value) {
//         super(new BigDecimal(value));
//     }
// 
//     @Override
//     protected String describe() {
//         return "DoubleLiteral(" + getValue() + ")";
//     }
// }


// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/partial/PartialDoubleLiteral.java
import com.evolvedbinary.xpath.parser.ast.DoubleLiteral;
import org.jetbrains.annotations.Nullable;

        return "DoubleLiteral(" + characteristic + ".?)e??";
    }

    @Override
    public PartialDoubleLiteral1 complete(@Nullable final String mantissa) {
        return new PartialDoubleLiteral1(mantissa);
    }

    public class PartialDoubleLiteral1 extends AbstractPartialASTNode<PartialDoubleLiteral1.PartialDoubleLiteral2, String> {
        @Nullable final String mantissa;

        public PartialDoubleLiteral1(final String mantissa) {
            this.mantissa = mantissa;
        }

        @Override
        protected String describe() {
            final String m = (mantissa == null ? ".0" : "." + mantissa);
            return "DoubleLiteral(" + characteristic + m + ")e??";
        }

        @Override
        public PartialDoubleLiteral1.PartialDoubleLiteral2 complete(final String exponentSign) {
            if(exponentSign == null || exponentSign.isEmpty()) {
                return new PartialDoubleLiteral2('+');
            } else {
                return new PartialDoubleLiteral2(exponentSign.charAt(0));
            }
        }

        public class PartialDoubleLiteral2 extends AbstractPartialASTNode<DoubleLiteral, String> {