class FilterQueryImpl extends AbstractQueryImpl {

    private final FilterBuilder builder;
    private final Filter filter;
    private Parameters[] parameters;
    private String name;

    public FilterQueryImpl(FilterBuilder filterBuilder, Filter filter) {
        this.filter = filter;
        this.builder = filterBuilder;
        this.name = filter.getName();
        updateParameters();
    }

    public final void updateParameters() {<FILL_FUNCTION_BODY>}

    @Override
    public int getChildrenSlotsCount() {
        return 1;
    }

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

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int getPropertiesCount() {
        return parameters.length;
    }

    @Override
    public String getPropertyName(int index) {
        return parameters[index].getKey();
    }

    @Override
    public Object getPropertyValue(int index) {
        return parameters[index].getValue();
    }

    @Override
    public Filter getFilter() {
        return filter;
    }

    @Override
    public FilterBuilder getBuilder() {
        return builder;
    }

    private class Parameters {

        private final int index;
        private final Object value;

        public Parameters(int index, Object value) {
            this.index = index;
            this.value = value;
        }

        public String getKey() {
            return filter.getProperties()[index].getName();
        }

        public Object getValue() {
            return value;
        }
    }
}

        FilterProperty[] properties = filter.getProperties();
        parameters = new Parameters[properties == null ? 0 : properties.length];
        if (properties != null) {
            for (int i = 0; i < properties.length; i++) {
                parameters[i] = new Parameters(i, properties[i].getValue());
            }
        }
    
<methods>public void <init>() ,public void addSubQuery(org.gephi.filters.api.Query) ,public org.gephi.filters.AbstractQueryImpl copy() ,public org.gephi.filters.AbstractQueryImpl getChildAt(int) ,public org.gephi.filters.api.Query[] getChildren() ,public int getChildrenCount() ,public abstract int getChildrenSlotsCount() ,public org.gephi.filters.api.Query[] getDescendantsAndSelf() ,public org.gephi.filters.AbstractQueryImpl[] getLeaves() ,public abstract java.lang.String getName() ,public org.gephi.filters.api.Query getParent() ,public abstract int getPropertiesCount() ,public abstract java.lang.String getPropertyName(int) ,public abstract java.lang.Object getPropertyValue(int) ,public org.gephi.filters.api.Query[] getQueries(Class<? extends org.gephi.filters.spi.Filter>) ,public Graph getResult() ,public org.gephi.filters.AbstractQueryImpl getRoot() ,public void removeSubQuery(org.gephi.filters.api.Query) ,public abstract void setName(java.lang.String) ,public void setParent(org.gephi.filters.api.Query) ,public void setResult(Graph) <variables>protected List<org.gephi.filters.AbstractQueryImpl> children,protected org.gephi.filters.api.Query parent,protected Graph result