/**
  * 指定のシャッフル値から特定セグメントの値を設定する。
  *
  * @param segment 対象のセグメント
  * @param value 対象のシャッフル値
  * @return セグメントの値
  */
 protected Object getShuffleValue(Segment segment, SegmentedWritable value) {
   String name = Naming.getShuffleValueGetter(segment.getPortId());
   try {
     Method method = value.getClass().getMethod(name);
     return method.invoke(value);
   } catch (Exception e) {
     throw new AssertionError(e);
   }
 }
 /**
  * 指定のシャッフルキーに値を設定する。
  *
  * @param segment 対象のセグメント
  * @param key キー
  * @param toSet 設定する値
  */
 protected void setShuffleKey(Segment segment, SegmentedWritable key, Object toSet) {
   String name = Naming.getShuffleKeySetter(segment.getPortId());
   try {
     Method method = key.getClass().getMethod(name, toSet.getClass());
     method.invoke(key, toSet);
   } catch (Exception e) {
     throw new AssertionError(e);
   }
 }