public static Builder builder() {
        return new Builder();
    }
@Test
    public void testBuilder() {

        PiTableId piTableId = PiTableId.of("table10");
        long cookie = 0xfff0323;
        int priority = 100;
        double timeout = 1000;
        PiMatchFieldId piMatchFieldId = PiMatchFieldId.of(IPV4_HEADER_NAME + DOT + DST_ADDR);
        PiFieldMatch piFieldMatch = new PiExactFieldMatch(piMatchFieldId, ImmutableByteSequence.copyFrom(0x0a010101));
        PiAction piAction = PiAction.builder().withId(PiActionId.of(DROP)).build();
        final Map<PiMatchFieldId, PiFieldMatch> fieldMatches = Maps.newHashMap();
        fieldMatches.put(piMatchFieldId, piFieldMatch);
        final PiTableEntry piTableEntry = PiTableEntry.builder()
                .forTable(piTableId)
                .withMatchKey(PiMatchKey.builder()
                                      .addFieldMatches(fieldMatches.values())
                                      .build())
                .withAction(piAction)
                .withCookie(cookie)
                .withPriority(priority)
                .withTimeout(timeout)
                .build();

        assertThat(piTableEntry.table(), is(piTableId));
        assertThat(piTableEntry.cookie(), is(cookie));
        assertThat("Priority must be set", piTableEntry.priority().isPresent());
        assertThat("Timeout must be set", piTableEntry.timeout().isPresent());
        assertThat(piTableEntry.priority().getAsInt(), is(priority));
        assertThat(piTableEntry.timeout().get(), is(timeout));
        assertThat("Incorrect match param value",
                   CollectionUtils.isEqualCollection(piTableEntry.matchKey().fieldMatches(), fieldMatches.values()));
        assertThat(piTableEntry.action(), is(piAction));
    }