private void addNodeResourceMap() { maybeInitBuilder(); builder.clearNodeResourceMap(); if (nodeResourceMap == null) { return; } Iterable<? extends NodeResourceMapProto> values = new Iterable<NodeResourceMapProto>() { @Override public Iterator<NodeResourceMapProto> iterator() { return new Iterator<NodeResourceMapProto>() { Iterator<NodeId> nodeIterator = nodeResourceMap.keySet().iterator(); @Override public boolean hasNext() { return nodeIterator.hasNext(); } @Override public NodeResourceMapProto next() { NodeId nodeId = nodeIterator.next(); return NodeResourceMapProto.newBuilder() .setNodeId(convertToProtoFormat(nodeId)) .setResourceOption(convertToProtoFormat(nodeResourceMap.get(nodeId))) .build(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }; this.builder.addAllNodeResourceMap(values); }