@@ -0,0 +1,816 @@
+package clarity.model;%0D%0A%0D%0Aimport clarity.parser.Peek;%0D%0A%0D%0Aimport com.google.common.base.Predicate;%0D%0A%0D%0Apublic enum PacketType %7B%0D%0A    %0D%0A    DELTA(new Predicate%3CPeek%3E() %7B%0D%0A        @Override%0D%0A        public boolean apply(Peek peek) %7B%0D%0A            return !peek.isFull();%0D%0A        %7D%0D%0A    %7D),%0D%0A    FULL(new Predicate%3CPeek%3E() %7B%0D%0A        @Override%0D%0A        public boolean apply(Peek peek) %7B%0D%0A            return peek.isFull();%0D%0A        %7D%0D%0A    %7D),%0D%0A    BOTH(new Predicate%3CPeek%3E() %7B%0D%0A        @Override%0D%0A        public boolean apply(Peek peek) %7B%0D%0A            return true;%0D%0A        %7D%0D%0A    %7D);%0D%0A    %0D%0A    private final Predicate%3CPeek%3E predicate;%0D%0A%0D%0A    private PacketType(Predicate%3CPeek%3E predicate) %7B%0D%0A        this.predicate = predicate;%0D%0A    %7D%0D%0A%0D%0A    public Predicate%3CPeek%3E getPredicate() %7B%0D%0A        return predicate;%0D%0A    %7D%0D%0A%0D%0A%7D%0D%0A

introduce enum type + predicate for packet type (full / delta)