{
        HebrewVerb wNew = this.future2MP(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

package c;

import hebrewVerb.HebrewVerb;
import java.util.ArrayList;
import letters.HebrewLetter;

public class C17 extends C1 {

    public HebrewLetter[] vocalize(HebrewLetter[] letterArr) {
        letterArr[0].setVocalization_DAGESH_BEGEDKEFET();
        letterArr[0].setVocalization_HIRIK();
        letterArr[1].setVocalization_DAGESH();
        letterArr[1].setVocalization_KAMATS();
        if (letterArr[2].isKafSofit()) {
            letterArr[2].setVocalization_SHVA();
        }
        return letterArr;
    }

    public ArrayList<HebrewVerb> makePastInflictions(HebrewVerb w) {
        ArrayList<HebrewVerb> pastInflictions = new ArrayList<HebrewVerb>();
        pastInflictions.add(this.past1SComp(w));
        pastInflictions.add(this.past1SCompB(w));
        pastInflictions.add(this.past1SMiss(w));
        pastInflictions.add(this.past1SMissB(w));
        pastInflictions.add(this.past2MSComp(w));
        pastInflictions.add(this.past2MSCompB(w));
        pastInflictions.add(this.past2MSMiss(w));
        pastInflictions.add(this.past2MSMissB(w));
        pastInflictions.add(this.past2FSComp(w));
        pastInflictions.add(this.past2FSCompB(w));
        pastInflictions.add(this.past2FSMiss(w));
        pastInflictions.add(this.past2FSMissB(w));
        pastInflictions.add(this.past3MSComp(w));
        pastInflictions.add(this.past3MSMiss(w));
        pastInflictions.add(this.past3FSComp(w));
        pastInflictions.add(this.past3FSMiss(w));
        pastInflictions.add(this.past1PComp(w));
        pastInflictions.add(this.past1PCompB(w));
        pastInflictions.add(this.past1PMiss(w));
        pastInflictions.add(this.past1PMissB(w));
        pastInflictions.add(this.past2MPComp(w));
        pastInflictions.add(this.past2MPCompB(w));
        pastInflictions.add(this.past2MPMiss(w));
        pastInflictions.add(this.past2MPMissB(w));
        pastInflictions.add(this.past2FPComp(w));
        pastInflictions.add(this.past2FPCompB(w));
        pastInflictions.add(this.past2FPMiss(w));
        pastInflictions.add(this.past2FPMissB(w));
        pastInflictions.add(this.past3MPComp(w));
        pastInflictions.add(this.past3MPMiss(w));
        pastInflictions.add(this.past3FPComp(w));
        pastInflictions.add(this.past3FPMiss(w));
        return pastInflictions;
    }

    public HebrewVerb past1SComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1SCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1SMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1SMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MSCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MSMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FSCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FSMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3MSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 3);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3MSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3FSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_SHVA();
        this.macro_TavKamats_Hey(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3FSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_SHVA();
        this.macro_TavKamats_Hey(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1PComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1PCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1PMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1PMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MPCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MPMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FPCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FPMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3MPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3MPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3FPComp(HebrewVerb w) {
        HebrewVerb wNew = this.past3MPComp(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3FPMiss(HebrewVerb w) {
        HebrewVerb wNew = this.past3MPMiss(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2MS(HebrewVerb w) {
        HebrewVerb wNew = this.present1MS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2FS(HebrewVerb w) {
        HebrewVerb wNew = this.present1FS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3MS(HebrewVerb w) {
        HebrewVerb wNew = this.present1MS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3FS(HebrewVerb w) {
        HebrewVerb wNew = this.present1FS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        this.macro_Hirik_Yod_MemS(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1FP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        this.macro_RemoveVoc_VavHolam_Tav(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2MP(HebrewVerb w) {
        HebrewVerb wNew = this.present1MP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2FP(HebrewVerb w) {
        HebrewVerb wNew = this.present1FP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3MP(HebrewVerb w) {
        HebrewVerb wNew = this.present1MP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3FP(HebrewVerb w) {
        HebrewVerb wNew = this.present1FP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future1S(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_AlefHPatah(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Hirik_Yod(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_YodShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FS(HebrewVerb w) {
        HebrewVerb wNew = this.future2MS(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future1P(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_NunShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2FP(HebrewVerb w)

    public HebrewVerb future2FPB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Segol_Yod_NunKamats_Hey(wNew, 3);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_YodShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FP(HebrewVerb w) {
        HebrewVerb wNew = this.future3MP(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FPB(HebrewVerb w) {
        HebrewVerb wNew = this.future2FPB(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        wNew.movePointer(1);
        this.replaceLetterTo_VavSuruk(wNew, 0);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FP(HebrewVerb w) {
        HebrewVerb wNew = this.imperative2MP(w);
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FPB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Segol_Yod_NunKamats_Hey(wNew, 3);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb infinitiveComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_LamedShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavHolamM_Tav(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.INFINITIVE, HebrewVerb.Gender.E, HebrewVerb.Person.E, HebrewVerb.Number.E, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }
}


package c;

import hebrewVerb.HebrewVerb;
import java.util.ArrayList;
import letters.HebrewLetter;

public class C17 extends C1 {

    public HebrewLetter[] vocalize(HebrewLetter[] letterArr) {
        letterArr[0].setVocalization_DAGESH_BEGEDKEFET();
        letterArr[0].setVocalization_HIRIK();
        letterArr[1].setVocalization_DAGESH();
        letterArr[1].setVocalization_KAMATS();
        if (letterArr[2].isKafSofit()) {
            letterArr[2].setVocalization_SHVA();
        }
        return letterArr;
    }

    public ArrayList<HebrewVerb> makePastInflictions(HebrewVerb w) {
        ArrayList<HebrewVerb> pastInflictions = new ArrayList<HebrewVerb>();
        pastInflictions.add(this.past1SComp(w));
        pastInflictions.add(this.past1SCompB(w));
        pastInflictions.add(this.past1SMiss(w));
        pastInflictions.add(this.past1SMissB(w));
        pastInflictions.add(this.past2MSComp(w));
        pastInflictions.add(this.past2MSCompB(w));
        pastInflictions.add(this.past2MSMiss(w));
        pastInflictions.add(this.past2MSMissB(w));
        pastInflictions.add(this.past2FSComp(w));
        pastInflictions.add(this.past2FSCompB(w));
        pastInflictions.add(this.past2FSMiss(w));
        pastInflictions.add(this.past2FSMissB(w));
        pastInflictions.add(this.past3MSComp(w));
        pastInflictions.add(this.past3MSMiss(w));
        pastInflictions.add(this.past3FSComp(w));
        pastInflictions.add(this.past3FSMiss(w));
        pastInflictions.add(this.past1PComp(w));
        pastInflictions.add(this.past1PCompB(w));
        pastInflictions.add(this.past1PMiss(w));
        pastInflictions.add(this.past1PMissB(w));
        pastInflictions.add(this.past2MPComp(w));
        pastInflictions.add(this.past2MPCompB(w));
        pastInflictions.add(this.past2MPMiss(w));
        pastInflictions.add(this.past2MPMissB(w));
        pastInflictions.add(this.past2FPComp(w));
        pastInflictions.add(this.past2FPCompB(w));
        pastInflictions.add(this.past2FPMiss(w));
        pastInflictions.add(this.past2FPMissB(w));
        pastInflictions.add(this.past3MPComp(w));
        pastInflictions.add(this.past3MPMiss(w));
        pastInflictions.add(this.past3FPComp(w));
        pastInflictions.add(this.past3FPMiss(w));
        return pastInflictions;
    }

    public HebrewVerb past1SComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1SCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1SMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1SMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavHirik_Yod(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MSCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MSMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavKamats(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FSCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FSMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Tav(wNew, 1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3MSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 3);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3MSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3FSComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_SHVA();
        this.macro_TavKamats_Hey(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3FSMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_SHVA();
        this.macro_TavKamats_Hey(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1PComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1PCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past1PMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past1PMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_Nun_VavShuruk(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MPCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2MPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2MPMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_MemS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FPCompB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past2FPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past2FPMissB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        this.macro_TavSegol_NunS(wNew, 2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3MPComp(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_Yod(wNew, 2);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3MPMiss(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.MISSING);
        return wNew;
    }

    public HebrewVerb past3FPComp(HebrewVerb w) {
        HebrewVerb wNew = this.past3MPComp(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb past3FPMiss(HebrewVerb w) {
        HebrewVerb wNew = this.past3MPMiss(w);
        wNew.setMorphology(HebrewVerb.Time.PAST, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(2);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2MS(HebrewVerb w) {
        HebrewVerb wNew = this.present1MS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2FS(HebrewVerb w) {
        HebrewVerb wNew = this.present1FS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3MS(HebrewVerb w) {
        HebrewVerb wNew = this.present1MS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3FS(HebrewVerb w) {
        HebrewVerb wNew = this.present1FS(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        this.macro_Hirik_Yod_MemS(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present1FP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_MemShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        this.macro_RemoveVoc_VavHolam_Tav(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2MP(HebrewVerb w) {
        HebrewVerb wNew = this.present1MP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present2FP(HebrewVerb w) {
        HebrewVerb wNew = this.present1FP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3MP(HebrewVerb w) {
        HebrewVerb wNew = this.present1MP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb present3FP(HebrewVerb w) {
        HebrewVerb wNew = this.present1FP(w);
        wNew.setMorphology(HebrewVerb.Time.PRESENT, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future1S(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_AlefHPatah(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Hirik_Yod(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_YodShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FS(HebrewVerb w) {
        HebrewVerb wNew = this.future2MS(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future1P(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_NunShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_SEGOL();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.MF, HebrewVerb.Person.FIRST, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2FP(HebrewVerb w) {
        HebrewVerb wNew = this.future2MP(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future2FPB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_TavDageshShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Segol_Yod_NunKamats_Hey(wNew, 3);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        this.macro_BEFORE_YodShva(wNew, 1);
        wNew.removeDagesh();
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavShuruk(wNew, 1);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.M, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FP(HebrewVerb w) {
        HebrewVerb wNew = this.future3MP(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb future3FPB(HebrewVerb w) {
        HebrewVerb wNew = this.future2FPB(w);
        wNew.setMorphology(HebrewVerb.Time.FUTURE, HebrewVerb.Gender.F, HebrewVerb.Person.THIRD, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2MS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_TSERE();
        wNew.movePointer(1);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FS(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.setVocalization_HIRIK();
        wNew.movePointer(1);
        this.replaceLetterTo_Yod(wNew, 0);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.SINGULAR, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2MP(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        wNew.removeVocalization();
        wNew.movePointer(1);
        this.replaceLetterTo_VavSuruk(wNew, 0);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.M, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FP(HebrewVerb w) {
        HebrewVerb wNew = this.imperative2MP(w);
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb imperative2FPB(HebrewVerb w) {
        HebrewVerb wNew = new HebrewVerb(w);
        wNew.setVocalization_PATAH();
        wNew.movePointer(1);
        this.macro_Segol_Yod_NunKamats_Hey(wNew, 3);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.IMPERATIVE, HebrewVerb.Gender.F, HebrewVerb.Person.SECOND, HebrewVerb.Number.PLURAL, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }

    public HebrewVerb infinitiveComp(HebrewVerb w) {
        HebrewVerb wNew = n

        this.macro_BEFORE_LamedShva(wNew, 1);
        wNew.setVocalization_PATAH();
        wNew.removeDagesh();
        wNew.movePointer(1);
        wNew.removeVocalization();
        this.macro_VavHolamM_Tav(wNew, 2);
        this.removeNextLetter(wNew);
        wNew.finalizeWord();
        wNew.setMorphology(HebrewVerb.Time.INFINITIVE, HebrewVerb.Gender.E, HebrewVerb.Person.E, HebrewVerb.Number.E, HebrewVerb.Spelling.COMPLETE);
        return wNew;
    }
}


{
        SpringApplication.run(Application.class, args);
    }

package application;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.hateoas.hal.Jackson2HalModule;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
@EnableFeignClients
@EnableWebMvc
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableZuulProxy
@EnableHystrix
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args)

    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        jsonConverter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
        objectMapper.registerModule(new Jackson2HalModule());
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }
}


package application;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.hateoas.hal.Jackson2HalModule;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
@EnableFeignClients
@EnableWebMvc
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableZuulProxy
@EnableHystrix
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        jsonConverter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.configure(DeserializationFeature.ACCEPT_SIN

        objectMapper.registerModule(new Jackson2HalModule());
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }
}


{
        Boolean formatAmPm = _formatAmPmMap.get(locale);
        if (formatAmPm == null) {
            SimpleDateFormat simpleDateFormat = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.SHORT, locale);
            String pattern = simpleDateFormat.toPattern();
            formatAmPm = pattern.contains("a");
            _formatAmPmMap.put(locale, formatAmPm);
        }
        return formatAmPm;
    }

package com.liferay.portal.kernel.util;

import com.liferay.petra.string.StringPool;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;

/**
 * @author Brian Wing Shun Chan
 */
public class DateUtil {

    public static final String ISO_8601_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";

    public static int compareTo(Date date1, Date date2) {
        if (date1 == date2) {
            return 0;
        }
        if (date1 == null) {
            return 1;
        }
        if (date2 == null) {
            return -1;
        }
        return Long.compare(date1.getTime(), date2.getTime());
    }

    public static boolean equals(Date date1, Date date2) {
        if (compareTo(date1, date2) == 0) {
            return true;
        }
        return false;
    }

    public static String formatDate(String fromPattern, String dateString, Locale locale) throws ParseException {
        Date dateValue = parseDate(fromPattern, dateString, locale);
        Format dateFormat = FastDateFormatFactoryUtil.getDate(locale);
        return dateFormat.format(dateValue);
    }

    public static String getCurrentDate(String pattern, Locale locale) {
        return getDate(new Date(), pattern, locale);
    }

    public static String getCurrentDate(String pattern, Locale locale, TimeZone timeZone) {
        return getDate(new Date(), pattern, locale, timeZone);
    }

    public static String getDate(Date date, String pattern, Locale locale) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        return dateFormat.format(date);
    }

    public static String getDate(Date date, String pattern, Locale locale, TimeZone timeZone) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale, timeZone);
        return dateFormat.format(date);
    }

    public static int getDaysBetween(Date date1, Date date2) {
        return getDaysBetween(date1, date2, null);
    }

    public static int getDaysBetween(Date date1, Date date2, TimeZone timeZone) {
        if (date1.after(date2)) {
            Date tempDate = date1;
            date1 = date2;
            date2 = tempDate;
        }
        Calendar startCal = null;
        Calendar endCal = null;
        int offsetDate1 = 0;
        int offsetDate2 = 0;
        if (timeZone == null) {
            startCal = new GregorianCalendar();
            endCal = new GregorianCalendar();
        } else {
            startCal = new GregorianCalendar(timeZone);
            endCal = new GregorianCalendar(timeZone);
            offsetDate1 = timeZone.getOffset(date1.getTime());
            offsetDate2 = timeZone.getOffset(date2.getTime());
        }
        startCal.setTime(date1);
        startCal.add(Calendar.MILLISECOND, offsetDate1);
        endCal.setTime(date2);
        endCal.add(Calendar.MILLISECOND, offsetDate2);
        int daysBetween = 0;
        while (CalendarUtil.beforeByDay(startCal.getTime(), endCal.getTime())) {
            startCal.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }
        return daysBetween;
    }

    public static DateFormat getISO8601Format() {
        return DateFormatFactoryUtil.getSimpleDateFormat(ISO_8601_PATTERN);
    }

    public static DateFormat getISOFormat() {
        return getISOFormat(StringPool.BLANK);
    }

    public static DateFormat getISOFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else if ((text.length() > 8) && (text.charAt(8) == 'T')) {
            pattern = "yyyyMMdd'T'HHmmssz";
        } else {
            pattern = "yyyyMMddHHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern);
    }

    public static DateFormat getUTCFormat() {
        return getUTCFormat(StringPool.BLANK);
    }

    public static DateFormat getUTCFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else {
            pattern = "yyyyMMdd'T'HHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern, TimeZoneUtil.getTimeZone(StringPool.UTC));
    }

    public static int getYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }

    public static boolean isFormatAmPm(Locale locale)

    public static Date newDate() {
        return new Date();
    }

    public static Date newDate(long date) {
        return new Date(date);
    }

    public static long newTime() {
        Date date = new Date();
        return date.getTime();
    }

    public static Date parseDate(String dateString, Locale locale) throws ParseException {
        return parseDate(null, dateString, locale);
    }

    public static Date parseDate(String pattern, String dateString, Locale locale) throws ParseException {
        DateFormat dateFormat = null;
        if (Validator.isNull(pattern)) {
            dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
        } else {
            dateFormat = DateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        }
        return dateFormat.parse(dateString);
    }

    private static final Map<Locale, Boolean> _formatAmPmMap = new HashMap<>();
}


package com.liferay.portal.kernel.util;

import com.liferay.petra.string.StringPool;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;

/**
 * @author Brian Wing Shun Chan
 */
public class DateUtil {

    public static final String ISO_8601_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";

    public static int compareTo(Date date1, Date date2) {
        if (date1 == date2) {
            return 0;
        }
        if (date1 == null) {
            return 1;
        }
        if (date2 == null) {
            return -1;
        }
        return Long.compare(date1.getTime(), date2.getTime());
    }

    public static boolean equals(Date date1, Date date2) {
        if (compareTo(date1, date2) == 0) {
            return true;
        }
        return false;
    }

    public static String formatDate(String fromPattern, String dateString, Locale locale) throws ParseException {
        Date dateValue = parseDate(fromPattern, dateString, locale);
        Format dateFormat = FastDateFormatFactoryUtil.getDate(locale);
        return dateFormat.format(dateValue);
    }

    public static String getCurrentDate(String pattern, Locale locale) {
        return getDate(new Date(), pattern, locale);
    }

    public static String getCurrentDate(String pattern, Locale locale, TimeZone timeZone) {
        return getDate(new Date(), pattern, locale, timeZone);
    }

    public static String getDate(Date date, String pattern, Locale locale) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        return dateFormat.format(date);
    }

    public static String getDate(Date date, String pattern, Locale locale, TimeZone timeZone) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale, timeZone);
        return dateFormat.format(date);
    }

    public static int getDaysBetween(Date date1, Date date2) {
        return getDaysBetween(date1, date2, null);
    }

    public static int getDaysBetween(Date date1, Date date2, TimeZone timeZone) {
        if (date1.after(date2)) {
            Date tempDate = date1;
            date1 = date2;
            date2 = tempDate;
        }
        Calendar startCal = null;
        Calendar endCal = null;
        int offsetDate1 = 0;
        int offsetDate2 = 0;
        if (timeZone == null) {
            startCal = new GregorianCalendar();
            endCal = new GregorianCalendar();
        } else {
            startCal = new GregorianCalendar(timeZone);
            endCal = new GregorianCalendar(timeZone);
            offsetDate1 = timeZone.getOffset(date1.getTime());
            offsetDate2 = timeZone.getOffset(date2.getTime());
        }
        startCal.setTime(date1);
        startCal.add(Calendar.MILLISECOND, offsetDate1);
        endCal.setTime(date2);
        endCal.add(Calendar.MILLISECOND, offsetDate2);
        int daysBetween = 0;
        while (CalendarUtil.beforeByDay(startCal.getTime(), endCal.getTime())) {
            startCal.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }
        return daysBetween;
    }

    public static DateFormat getISO8601Format() {
        return DateFormatFactoryUtil.getSimpleDateFormat(ISO_8601_PATTERN);
    }

    public static DateFormat getISOFormat() {
        return getISOFormat(StringPool.BLANK);
    }

    public static DateFormat getISOFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else if ((text.length() > 8) && (text.charAt(8) == 'T')) {
            pattern = "yyyyMMdd'T'HHmmssz";
        } else {
            pattern = "yyyyMMddHHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern);
    }

    public static DateFormat getUTCFormat() {
        return getUTCFormat(StringPool.BLANK);
    }

    public static DateFormat getUTCFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else {
            pattern = "yyyyMMdd'T'HHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern, TimeZoneUtil.getTimeZone(StringPool.UTC));
    }

    public static int getYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }

    public static boolean isFormatAmPm(Locale locale) {
        Boolean for

        if (formatAmPm == null) {
            SimpleDateFormat simpleDateFormat = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.SHORT, locale);
            String pattern = simpleDateFormat.toPattern();
            formatAmPm = pattern.contains("a");
            _formatAmPmMap.put(locale, formatAmPm);
        }
        return formatAmPm;
    }

    public static Date newDate() {
        return new Date();
    }

    public static Date newDate(long date) {
        return new Date(date);
    }

    public static long newTime() {
        Date date = new Date();
        return date.getTime();
    }

    public static Date parseDate(String dateString, Locale locale) throws ParseException {
        return parseDate(null, dateString, locale);
    }

    public static Date parseDate(String pattern, String dateString, Locale locale) throws ParseException {
        DateFormat dateFormat = null;
        if (Validator.isNull(pattern)) {
            dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
        } else {
            dateFormat = DateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        }
        return dateFormat.parse(dateString);
    }

    private static final Map<Locale, Boolean> _formatAmPmMap = new HashMap<>();
}


while (CalendarUtil.beforeByDay(startCal.getTime(), endCal.getTime())) {
            startCal.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }

package com.liferay.portal.kernel.util;

import com.liferay.petra.string.StringPool;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;

/**
 * @author Brian Wing Shun Chan
 */
public class DateUtil {

    public static final String ISO_8601_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";

    public static int compareTo(Date date1, Date date2) {
        if (date1 == date2) {
            return 0;
        }
        if (date1 == null) {
            return 1;
        }
        if (date2 == null) {
            return -1;
        }
        return Long.compare(date1.getTime(), date2.getTime());
    }

    public static boolean equals(Date date1, Date date2) {
        if (compareTo(date1, date2) == 0) {
            return true;
        }
        return false;
    }

    public static String formatDate(String fromPattern, String dateString, Locale locale) throws ParseException {
        Date dateValue = parseDate(fromPattern, dateString, locale);
        Format dateFormat = FastDateFormatFactoryUtil.getDate(locale);
        return dateFormat.format(dateValue);
    }

    public static String getCurrentDate(String pattern, Locale locale) {
        return getDate(new Date(), pattern, locale);
    }

    public static String getCurrentDate(String pattern, Locale locale, TimeZone timeZone) {
        return getDate(new Date(), pattern, locale, timeZone);
    }

    public static String getDate(Date date, String pattern, Locale locale) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        return dateFormat.format(date);
    }

    public static String getDate(Date date, String pattern, Locale locale, TimeZone timeZone) {
        Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(pattern, locale, timeZone);
        return dateFormat.format(date);
    }

    public static int getDaysBetween(Date date1, Date date2) {
        return getDaysBetween(date1, date2, null);
    }

    public static int getDaysBetween(Date date1, Date date2, TimeZone timeZone) {
        if (date1.after(date2)) {
            Date tempDate = date1;
            date1 = date2;
            date2 = tempDate;
        }
        Calendar startCal = null;
        Calendar endCal = null;
        int offsetDate1 = 0;
        int offsetDate2 = 0;
        if (timeZone == null) {
            startCal = new GregorianCalendar();
            endCal = new GregorianCalendar();
        } else {
            startCal = new GregorianCalendar(timeZone);
            endCal = new GregorianCalendar(timeZone);
            offsetDate1 = timeZone.getOffset(date1.getTime());
            offsetDate2 = timeZone.getOffset(date2.getTime());
        }
        startCal.setTime(date1);
        startCal.add(Calendar.MILLISECOND, offsetDate1);
        endCal.setTime(date2);
        endCal.add(Calendar.MILLISECOND, offsetDate2);
        int daysBetween = 0;

        return daysBetween;
    }

    public static DateFormat getISO8601Format() {
        return DateFormatFactoryUtil.getSimpleDateFormat(ISO_8601_PATTERN);
    }

    public static DateFormat getISOFormat() {
        return getISOFormat(StringPool.BLANK);
    }

    public static DateFormat getISOFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else if ((text.length() > 8) && (text.charAt(8) == 'T')) {
            pattern = "yyyyMMdd'T'HHmmssz";
        } else {
            pattern = "yyyyMMddHHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern);
    }

    public static DateFormat getUTCFormat() {
        return getUTCFormat(StringPool.BLANK);
    }

    public static DateFormat getUTCFormat(String text) {
        String pattern = StringPool.BLANK;
        if (text.length() == 8) {
            pattern = "yyyyMMdd";
        } else if (text.length() == 12) {
            pattern = "yyyyMMddHHmm";
        } else if (text.length() == 13) {
            pattern = "yyyyMMdd'T'HHmm";
        } else if (text.length() == 14) {
            pattern = "yyyyMMddHHmmss";
        } else if (text.length() == 15) {
            pattern = "yyyyMMdd'T'HHmmss";
        } else {
            pattern = "yyyyMMdd'T'HHmmssz";
        }
        return DateFormatFactoryUtil.getSimpleDateFormat(pattern, TimeZoneUtil.getTimeZone(StringPool.UTC));
    }

    public static int getYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }

    public static boolean isFormatAmPm(Locale locale) {
        Boolean formatAmPm = _formatAmPmMap.get(locale);
        if (formatAmPm == null) {
            SimpleDateFormat simpleDateFormat = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.SHORT, locale);
            String pattern = simpleDateFormat.toPattern();
            formatAmPm = pattern.contains("a");
            _formatAmPmMap.put(locale, formatAmPm);
        }
        return formatAmPm;
    }

    public static Date newDate() {
        return new Date();
    }

    public static Date newDate(long date) {
        return new Date(date);
    }

    public static long newTime() {
        Date date = new Date();
        return date.getTime();
    }

    public static Date parseDate(String dateString, Locale locale) throws ParseException {
        return parseDate(null, dateString, locale);
    }

    public static Date parseDate(String pattern, String dateString, Locale locale) throws ParseException {
        DateFormat dateFormat = null;
        if (Validator.isNull(pattern)) {
            dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
        } else {
            dateFormat = DateFormatFactoryUtil.getSimpleDateFormat(pattern, locale);
        }
        return dateFormat.parse(dateString);
    }

    private static final Map<Locale, Boolean> _formatAmPmMap = new HashMap<>();
}


{
        if (_operands == null)
            prepareOperands();
        for (ISpacePredicate operand : _operands) {
            if (operand.execute(target))
                return true;
        }
        return false;
    }

package com.gigaspaces.internal.query.predicate.comparison;

import com.gigaspaces.internal.io.IOUtils;
import com.gigaspaces.internal.query.predicate.AbstractSpacePredicate;
import com.gigaspaces.internal.query.predicate.ISpacePredicate;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashSet;
import java.util.Set;

/**
 * Represents an In predicate. This predicate returns true if and only if the predicate's argument
 * equals to any of the expected values.
 *
 * @author Niv Ingberg
 * @since 7.1
 */
@com.gigaspaces.api.InternalApi
public class InSpacePredicate extends AbstractSpacePredicate {

    private static final long serialVersionUID = 1L;

    private Set _inValues;

    private transient ISpacePredicate[] _operands;

    public InSpacePredicate() {
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param values Values to test.
     */
    public InSpacePredicate(Object... values) {
        _inValues = new HashSet<Object>();
        for (Object value : values) {
            _inValues.add(value);
        }
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param inValues Values to test.
     */
    public InSpacePredicate(Set<?> inValues) {
        _inValues = inValues;
    }

    /**
     * Returns the number of expected values.
     */
    public int getNumOfExpectedValues() {
        return _inValues.size();
    }

    public Set<Object> getExpectedValues() {
        return _inValues;
    }

    @Override
    public boolean execute(Object target)

    private void prepareOperands() {
        final ISpacePredicate[] inOperands = new ISpacePredicate[_inValues.size()];
        int index = 0;
        for (Object value : _inValues) {
            inOperands[index++] = new EqualsSpacePredicate(value);
        }
        _operands = inOperands;
    }

    @Override
    protected void readExternalImpl(ObjectInput in) throws IOException, ClassNotFoundException {
        super.readExternalImpl(in);
        _inValues = IOUtils.readObject(in);
    }

    @Override
    protected void writeExternalImpl(ObjectOutput out) throws IOException {
        super.writeExternalImpl(out);
        IOUtils.writeObject(out, _inValues);
    }

    public Set<?> getInValues() {
        return _inValues;
    }
}


package com.gigaspaces.internal.query.predicate.comparison;

import com.gigaspaces.internal.io.IOUtils;
import com.gigaspaces.internal.query.predicate.AbstractSpacePredicate;
import com.gigaspaces.internal.query.predicate.ISpacePredicate;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashSet;
import java.util.Set;

/**
 * Represents an In predicate. This predicate returns true if and only if the predicate's argument
 * equals to any of the expected values.
 *
 * @author Niv Ingberg
 * @since 7.1
 */
@com.gigaspaces.api.InternalApi
public class InSpacePredicate extends AbstractSpacePredicate {

    private static final long serialVersionUID = 1L;

    private Set _inValues;

    private transient ISpacePredicate[] _operands;

    public InSpacePredicate() {
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param values Values to test.
     */
    public InSpacePredicate(Object... values) {
        _inValues = new HashSet<Object>();
        for (Object value : values) {
            _inValues.add(value);
        }
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param inValues Values to test.
     */
    public InSpacePredicate(Set<?> inValues) {
        _inValues = inValues;
    }

    /**
     * Returns the number of expected values.
     */
    public int getNumOfExpectedValues() {
        return _inValues.size();
    }

    public Set<Object> getExpectedValues() {
        return _in

    }

    @Override
    public boolean execute(Object target) {
        if (_operands == null)
            prepareOperands();
        for (ISpacePredicate operand : _operands) {
            if (operand.execute(target))
                return true;
        }
        return false;
    }

    private void prepareOperands() {
        final ISpacePredicate[] inOperands = new ISpacePredicate[_inValues.size()];
        int index = 0;
        for (Object value : _inValues) {
            inOperands[index++] = new EqualsSpacePredicate(value);
        }
        _operands = inOperands;
    }

    @Override
    protected void readExternalImpl(ObjectInput in) throws IOException, ClassNotFoundException {
        super.readExternalImpl(in);
        _inValues = IOUtils.readObject(in);
    }

    @Override
    protected void writeExternalImpl(ObjectOutput out) throws IOException {
        super.writeExternalImpl(out);
        IOUtils.writeObject(out, _inValues);
    }

    public Set<?> getInValues() {
        return _inValues;
    }
}


public int getNumOfExpectedValues() {
        return _inValues.size();
    }

package com.gigaspaces.internal.query.predicate.comparison;

import com.gigaspaces.internal.io.IOUtils;
import com.gigaspaces.internal.query.predicate.AbstractSpacePredicate;
import com.gigaspaces.internal.query.predicate.ISpacePredicate;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashSet;
import java.util.Set;

/**
 * Represents an In predicate. This predicate returns true if and only if the predicate's argument
 * equals to any of the expected values.
 *
 * @author Niv Ingberg
 * @since 7.1
 */
@com.gigaspaces.api.InternalApi
public class InSpacePredicate extends AbstractSpacePredicate {

    private static final long serialVersionUID = 1L;

    private Set _inValues;

    private transient ISpacePredicate[] _operands;

    public InSpacePredicate() {
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param values Values to test.
     */
    public InSpacePredicate(Object... values) {
        _inValues = new HashSet<Object>();
        for (Object value : values) {
            _inValues.add(value);
        }
    }

    /**
     * Creates an In predicate using the specified values.
     *
     * @param inValues Values to test.
     */
    public InSpacePredicate(Set<?> inValues) {
        _inValues = inValues;
    }

    /**
     * Returns the number of expected values.
     */

    public Set<Object> getExpectedValues() {
        return _inValues;
    }

    @Override
    public boolean execute(Object target) {
        if (_operands == null)
            prepareOperands();
        for (ISpacePredicate operand : _operands) {
            if (operand.execute(target))
                return true;
        }
        return false;
    }

    private void prepareOperands() {
        final ISpacePredicate[] inOperands = new ISpacePredicate[_inValues.size()];
        int index = 0;
        for (Object value : _inValues) {
            inOperands[index++] = new EqualsSpacePredicate(value);
        }
        _operands = inOperands;
    }

    @Override
    protected void readExternalImpl(ObjectInput in) throws IOException, ClassNotFoundException {
        super.readExternalImpl(in);
        _inValues = IOUtils.readObject(in);
    }

    @Override
    protected void writeExternalImpl(ObjectOutput out) throws IOException {
        super.writeExternalImpl(out);
        IOUtils.writeObject(out, _inValues);
    }

    public Set<?> getInValues() {
        return _inValues;
    }
}


package binnie.extratrees.alcohol.drink;

import binnie.core.Binnie;
import binnie.core.liquid.IDrinkLiquid;
import net.minecraftforge.fluids.FluidStack;

public class DrinkLiquid implements IDrinkLiquid {

    private final String name;

    private final int colour;

    private final float transparency;

    private final float abv;

    private final String ident;

    public DrinkLiquid(final String name, final int colour, final float transparency, final float abv, final String ident) {
        this.name = name;
        this.colour = colour;
        this.transparency = transparency;
        this.abv = abv;
        this.ident = ident;
    }

    @Override
    public boolean isConsumable() {
        return true;
    }

    @Override
    public int getColour()

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public float getTransparency() {
        return this.transparency;
    }

    @Override
    public String getIdentifier() {
        return this.ident;
    }

    @Override
    public float getABV() {
        return this.abv;
    }

    @Override
    public FluidStack get(final int amount) {
        return Binnie.LIQUID.getFluidStack(this.ident, amount);
    }
}


package binnie.extratrees.alcohol.drink;

import binnie.core.Binnie;
import binnie.core.liquid.IDrinkLiquid;
import net.minecraftforge.fluids.FluidStack;

public class DrinkLiquid implements IDrinkLiquid {

    private final String name;

    private final int colour;

    private final float transparency;

    private final float abv;

    private final String ident;

    public DrinkLiquid(final String name, final int colour, final float transparency, final float abv, final String ident) {
        this.name = name;
        this.colour = colour;
        this.transparency = transparency;
        this.abv = abv;
        this.ident = ident;
    }

    @Override
    public boolean isConsumable() {
        ret

    }

    @Override
    public int getColour() {
        return this.colour;
    }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public float getTransparency() {
        return this.transparency;
    }

    @Override
    public String getIdentifier() {
        return this.ident;
    }

    @Override
    public float getABV() {
        return this.abv;
    }

    @Override
    public FluidStack get(final int amount) {
        return Binnie.LIQUID.getFluidStack(this.ident, amount);
    }
}