class JsonProject implements Checkable {

        @JsonProperty("project_name")
        private String name;
        @JsonProperty("project_graphs")
        private Set<String> graphs;
        @JsonProperty("project_description")
        private String description;

        public HugeProject build() {
            HugeProject project = new HugeProject(this.name, this.description);
            return project;
        }

        private HugeProject buildAddGraph(HugeProject project) {<FILL_FUNCTION_BODY>}

        private HugeProject buildRemoveGraph(HugeProject project) {
            E.checkArgument(this.name == null ||
                            this.name.equals(project.name()),
                            "The name of project can't be updated");
            E.checkArgument(!CollectionUtils.isEmpty(this.graphs),
                            "The graphs of project can't be empty " +
                            "when removing graphs");
            E.checkArgument(StringUtils.isEmpty(this.description),
                            "The description of project can't be updated " +
                            "when removing graphs");
            Set<String> sourceGraphs = new HashSet<>(project.graphs());
            sourceGraphs.removeAll(this.graphs);
            project.graphs(sourceGraphs);
            return project;
        }

        private HugeProject buildUpdateDescription(HugeProject project) {
            E.checkArgument(this.name == null ||
                            this.name.equals(project.name()),
                            "The name of project can't be updated");
            E.checkArgumentNotNull(this.description,
                                   "The description of project " +
                                   "can't be null");
            E.checkArgument(CollectionUtils.isEmpty(this.graphs),
                            "The graphs of project can't be updated");
            project.description(this.description);
            return project;
        }

        @Override
        public void checkCreate(boolean isBatch) {
            E.checkArgumentNotNull(this.name,
                                   "The name of project can't be null");
            E.checkArgument(CollectionUtils.isEmpty(this.graphs),
                            "The graphs '%s' of project can't be added when" +
                            "creating the project '%s'",
                            this.graphs, this.name);
        }

        @Override
        public void checkUpdate() {
            E.checkArgument(!CollectionUtils.isEmpty(this.graphs) ||
                            this.description != null,
                            "Must specify 'graphs' or 'description' " +
                            "field that need to be updated");
        }
    }

            E.checkArgument(this.name == null ||
                            this.name.equals(project.name()),
                            "The name of project can't be updated");
            E.checkArgument(!CollectionUtils.isEmpty(this.graphs),
                            "The graphs of project can't be empty " +
                            "when adding graphs");
            E.checkArgument(StringUtils.isEmpty(this.description),
                            "The description of project can't be updated " +
                            "when adding graphs");
            Set<String> sourceGraphs = new HashSet<>(project.graphs());
            E.checkArgument(!sourceGraphs.containsAll(this.graphs),
                            "There are graphs '%s' of project '%s' that " +
                            "have been added in the graph collection",
                            this.graphs, project.id());
            sourceGraphs.addAll(this.graphs);
            project.graphs(sourceGraphs);
            return project;
        
<methods>public non-sealed void <init>() ,public static boolean checkAndParseAction(java.lang.String) ,public static R commit(org.apache.hugegraph.HugeGraph, Callable<R>) ,public static void commit(org.apache.hugegraph.HugeGraph, java.lang.Runnable) ,public static org.apache.hugegraph.HugeGraph graph(org.apache.hugegraph.core.GraphManager, java.lang.String) ,public static org.apache.hugegraph.HugeGraph graph4admin(org.apache.hugegraph.core.GraphManager, java.lang.String) ,public static java.lang.Object[] properties(Map<java.lang.String,java.lang.Object>) <variables>public static final java.lang.String ACTION_APPEND,public static final java.lang.String ACTION_CLEAR,public static final java.lang.String ACTION_ELIMINATE,public static final java.lang.String APPLICATION_JSON,public static final java.lang.String APPLICATION_JSON_WITH_CHARSET,public static final java.lang.String APPLICATION_TEXT_WITH_CHARSET,public static final java.lang.String CHARSET,private static final Meter EXPECTED_ERROR_METER,private static final Meter ILLEGAL_ARG_ERROR_METER,public static final java.lang.String JSON,protected static final Logger LOG,private static final Meter SUCCEED_METER,public static final java.lang.String TEXT_PLAIN,private static final Meter UNKNOWN_ERROR_METER